← Back to team overview

kicad-developers team mailing list archive

Re: BOM component table dialog (quasi-)modality in osx

 

Dan,

Would you please send your patch using `git format-patch` as an
attachment or inline in an email directly to me so I can commit it?  I
tried using the response to your original message with `git am` but it
didn't like it and I inadvertently deleted you original post.

Thanks,

Wayne

On 6/5/2017 8:49 AM, Bernhard Stegmaier wrote:
> Hi,
> 
> I can confirm that with latest official nightly build (also on 10.12.x).
> With my own builds using wxWidgets master (I know… officially unsupported) it doesn’t hang but just crashes on closing the window.
> Different, but not better… :)
> 
> I also can confirm that the proposed fix works for my own wxWidgets master builds (no crash anymore, everything fine after closing the window).
> So, I’d vote for submitting it...
> 
> 
> Regards,
> Bernhard
> 
>> On 2. Jun 2017, at 21:06, Wayne Stambaugh <stambaughw@xxxxxxxxx> wrote:
>>
>> Hello Dan,
>>
>> Welcome to the KiCad developer's mailing list and thank you for your
>> interest in contributing to KiCad.  We can always use another OSX
>> developer.  It's the one platform where we could use the extra help.
>>
>> The modal dialog issue became a problem when we moved from a multiple
>> binary solution to a single binary solution.  The quasi-modal dialog
>> mode allows the main application to continue to receive events while
>> blocking events to the window that launched the dialog.  The problem is
>> if another modal dialog is launched from the quasi-modal dialog then the
>> same problem occurs.  I haven't tried to stack quasi-modal dialog calls
>> so I'm not sure what the outcome would be but in theory it should work
>> and would be a major improvement over what we have now.  The other
>> option is to go modeless but that requires a lot of manual intervention
>> between the window that launched the dialog and the dialog itself.  I
>> agree that the BOM editor should be launched as quasi-modal rather than
>> modal.   FYI, you really should be call EndQuasiModel from with the
>> dialog because you cannot know ahead of time how the dialog was
>> launched.  This is all handled correctly by the DIALOG_SHIM object close
>> event handler.  We still seem to have trouble understanding how to
>> properly close dialogs with wxWidgets.  Don't use the code in most of
>> the dialogs in KiCad as they are incorrect and are poor examples of how
>> to do it correctly.  There are a few that are correct and none of them
>> call either EndQuasiModal or EndModal or even handle the OK and/or
>> cancel button events.  They use TranferData{To,From}Window for updating
>> the data between the controls and the object storage.
>>
>> Cheers,
>>
>> Wayne
>>
>>
>> On 6/1/2017 4:47 PM, Dan Green wrote:
>>> Hi, 
>>> I’ve lurked this list for quite some time, and finally applied to join,
>>> so thank you for approving me. I hope I can make some contributions to
>>> this excellent project.
>>>
>>> I use KiCAD in OSX 10.12 and noticed an issue with the recent BOM
>>> component table feature.
>>> When closing the dialog box, the main KiCAD windows and menus still
>>> behave as if a modal dialog box is still open: all menu items are
>>> greyed-out, and the windows don't respond to clicks or other events, and
>>> I have to kill the process from the OS.
>>>
>>> After reading some explanations in the comments, I can’t say I fully
>>> grasp the issue, but when I try invoking and closing the dialog as
>>> QuasiModal, it seems to work. I don’t know if this breaks it for other
>>> OS’s or if it violates a UI policy, so please let me know if there’s a
>>> better way!
>>>
>>> Attached is the simple hack I made.
>>>
>>> thanks!
>>>
>>> From 2253bec68af9b0b4ffc177bccc1325b4702ee084 Mon Sep 17 00:00:00 2001
>>>
>>> From: danngreen <danngreen1@xxxxxxxxx>
>>>
>>> Date: Thu, 1 Jun 2017 13:08:17 -0700
>>>
>>> Subject: [PATCH] Made BOM editor dialog quasi modal
>>>
>>>
>>> ---
>>>
>>> eeschema/dialogs/dialog_bom_editor.cpp | 4 +++-
>>>
>>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>>
>>> diff --git a/eeschema/dialogs/dialog_bom_editor.cpp
>>> b/eeschema/dialogs/dialog_bom_editor.cpp
>>>
>>> index e5114e533..f1d9a9aee 100644
>>>
>>> --- a/eeschema/dialogs/dialog_bom_editor.cpp
>>>
>>> +++ b/eeschema/dialogs/dialog_bom_editor.cpp
>>>
>>> @@ -44,7 +44,7 @@
>>>
>>> int InvokeDialogCreateBOMEditor( SCH_EDIT_FRAME* aCaller )
>>>
>>> {
>>>
>>>     DIALOG_BOM_EDITOR dlg( aCaller );
>>>
>>> -    return dlg.ShowModal();
>>>
>>> +    return dlg.ShowQuasiModal();
>>>
>>> }
>>>
>>>
>>>
>>> DIALOG_BOM_EDITOR::DIALOG_BOM_EDITOR( SCH_EDIT_FRAME* parent ) :
>>>
>>> @@ -129,6 +129,7 @@ bool DIALOG_BOM_EDITOR::CloseDialog()
>>>
>>> {
>>>
>>>     if( !m_bom->HaveFieldsChanged() )
>>>
>>>     {
>>>
>>> +        EndQuasiModal( wxID_CANCEL );
>>>
>>>         Destroy();
>>>
>>>         return true;
>>>
>>>     }
>>>
>>> @@ -146,6 +147,7 @@ bool DIALOG_BOM_EDITOR::CloseDialog()
>>>
>>>        break;
>>>
>>>     }
>>>
>>>
>>>
>>> +    EndQuasiModal( wxID_CANCEL );
>>>
>>>     Destroy();
>>>
>>>     return true;
>>>
>>> }
>>>
>>> -- 
>>>
>>> 2.11.0
>>>
>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~kicad-developers
>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
> 


Follow ups

References