← Back to team overview

kicad-developers team mailing list archive

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

 

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

Attachment: 0001-Made-BOM-editor-dialog-quasi-modal.patch
Description: Binary data


> On Jun 6, 2017, at 8:47 AM, Wayne Stambaugh <stambaughw@xxxxxxxxx> 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 <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
>> 
> 
> _______________________________________________
> 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