Hi Wayne, here’s the patch. I appreciate your comments about the confusion over quasi-modal boxes. In the future, what would be a good example to follow? Perhaps DIALOG_EESCHEMA_OPTIONS?
thanks Dan
0001-Made-BOM-editor-dialog-quasi-modal.patch
Description: Binary data
> On Jun 6, 2017, at 8:47 AM, Wayne Stambaugh <[email protected]> wrote: > > 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 <[email protected]> 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 <[email protected]> >>>> >>>> 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 : [email protected] >>>> Unsubscribe : https://launchpad.net/~kicad-developers >>>> More help : https://help.launchpad.net/ListHelp >>>> >>> >>> >>> _______________________________________________ >>> Mailing list: https://launchpad.net/~kicad-developers >>> Post to : [email protected] >>> Unsubscribe : https://launchpad.net/~kicad-developers >>> More help : https://help.launchpad.net/ListHelp >> > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : [email protected] > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp
_______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp

