kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #22729
Re: Final? version of hotkeys patch
-
To:
kicad-developers@xxxxxxxxxxxxxxxxxxx
-
From:
Clemens Koller <cko@xxxxxxxxx>
-
Date:
Mon, 18 Jan 2016 00:47:26 +0100
-
In-reply-to:
<20160116021042.GA19545@potato.localdomain>
-
User-agent:
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1
Hello, Chris!
I was testing the hotkeys in bzr 6494.
Duplicate hotkeys still don't get recognized when there is
the Alt-key envolved.
I am able to assign i.e. Alt-W or Ctrl-Alt-E to several
commands at the same time.
Ctrl-Tab ist still assigned as Ctrl-I (well, it's not
nice but not a show-stopper).
Maybe you want to verify and fix these issues.
Regards,
Clemens
On 2016-01-16 03:10, Chris Pavlina wrote:
> Okay, I merged this - I'm still not 100% clear whether or not you wanted
> me to, but it's been quite a while and I've fixed what you told me to
> fix - feel free to revert if I'm wrong.
>
> On Wed, Jan 13, 2016 at 09:36:13PM -0500, Chris Pavlina wrote:
>> Want me to commit this?
>>
>> On Mon, Jan 11, 2016 at 09:27:49PM -0500, Chris Pavlina wrote:
>>> Looks like the text overflow was actually a wx bug - it insisted on
>>> computing the size of the wxStaticText based on the smaller default font
>>> instead of the larger one I had set.
>>>
>>> Easily solved by just not setting a larger font. Still looks fine.
>>>
>>> Patch attached.
>>>
>>> On Mon, Jan 11, 2016 at 03:32:00PM -0500, Wayne Stambaugh wrote:
>>>> It seems like this may be one of those issues where we have to
>>>> compromise on the design. Once you figure out the hotkey entry dialog
>>>> text overflow issues I'm fine with committing the changes. Everything
>>>> else seems to work as expected.
>>>>
>>>> On 1/11/2016 3:00 PM, Chris Pavlina wrote:
>>>>> Well, yes, that would be why it was selected. I don't like the idea of
>>>>> limiting ourselves so much (must be wxListCtrl, must be an otherwise
>>>>> mostly empty dialog) just because of a quirk of the way wx processes
>>>>> events, though, and IMO the dialog method isn't all that bad. Nice and
>>>>> clean with the way events are handled and received (except for the few
>>>>> weird quirks I ranted about earlier, but those are nicely isolated now).
>>>>> We can put that in any control in any layout we want without
>>>>> restriction.
>>>>>
>>>>> Also I'd argue that just accepting the hotkeys directly in the dialog is
>>>>> rather poor UI design /anyway/. It disables the normal navigation keys,
>>>>> such that a user cannot operate the hotkeys list with the keyboard the
>>>>> way he can operate the other controls, and works in a unique way to any
>>>>> other programs, making it non-obvious. Pretty much everything I've seen
>>>>> uses something different from that.
>>>>>
>>>>> The one I _really_ like is KDE, which places a button /in/ the list
>>>>> control under the selected item. You click the button, and then as far
>>>>> as I can tell the button receives the event. I tried. wx makes this
>>>>> almost impossible. :(
>>>>>
>>>>>
>>>>> On Mon, Jan 11, 2016 at 02:51:26PM -0500, Wayne Stambaugh wrote:
>>>>>> On 1/11/2016 2:16 PM, Chris Pavlina wrote:
>>>>>>> Had to change the capture method for both reasons. The old wxListCtrl
>>>>>>> (IIRC) was the _only_ widget that captured them correctly.
>>>>>>
>>>>>> Maybe that's why the person who design the original hotkey dialog end up
>>>>>> using wxListCtrl. It's certainly something to consider. I know it
>>>>>> doesn't layout as nice as the tree control.
>>>>>>
>>>>>>>
>>>>>>> I'm not completely a fan of the dialog either, but it's not all _that_
>>>>>>> bad, and we're not the only ones doing it that way. At very least the
>>>>>>> XFCE settings dialog does that, as well as a few others I tested (that I
>>>>>>> don't remember right away). It's a pretty reliable way to make sure
>>>>>>> you're the only thing receiving an event.
>>>>>>>
>>>>>>> I'll look at the labels - they weren't truncated in my Windows builds,
>>>>>>> but maybe I changed something and didn't realize it.
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>>>
>>>>>>> On Mon, Jan 11, 2016 at 02:11:36PM -0500, Wayne Stambaugh wrote:
>>>>>>>> Chris,
>>>>>>>>
>>>>>>>> I just finished testing this and I'm not sure about using a dialog to
>>>>>>>> capture the hotkey press. Did you have to do this to overcome using the
>>>>>>>> tabbed dialog or was it due to changing the control to a tree control?
>>>>>>>> If it's the tabbed dialog design, it might be worth leaving the hotkey
>>>>>>>> assignment dialog as a separate dialog. If not, I guess I can live
>>>>>>>> with it but it wasn't necessary with the previous hotkey dialog. One
>>>>>>>> other thing, you might want to avoid is using bold characters in the
>>>>>>>> hotkey capture dialog. They are getting truncated on my windows builds.
>>>>>>>> The longer the description, the worse the truncation.
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>>
>>>>>>>> Wayne
>>>>>>>>
>>>>>>>> On 1/8/2016 1:16 PM, Chris Pavlina wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> Jesus, here be dragons. Finally got the hotkeys stuff working properly
>>>>>>>>> on all platforms - this has been tested on Linux, Win10, and OSX. Thanks
>>>>>>>>> to JP for a push in the right direction (and even that required more
>>>>>>>>> work!).
>>>>>>>>>
>>>>>>>>> Quick summary of the problems:
>>>>>>>>>
>>>>>>>>> - On Windows, there is a bug/quirk somewhere, where if a Tab
>>>>>>>>> keypress occurs in a dialog with nothing in the tab order, this
>>>>>>>>> must NOT generate the corresponding wxEVT_CHAR. If this happens,
>>>>>>>>> the entire application freezes solid. This has nothing to do with
>>>>>>>>> wxTAB_TRAVERSAL, so disabling this style property does not help.
>>>>>>>>>
>>>>>>>>> - wxEVT_CHAR_HOOK can be used to catch this event early and block
>>>>>>>>> the tab bug. It also has the benefit of catching other 'special'
>>>>>>>>> keys that wxEVT_CHAR misses (again, on Windows. wxEVT_CHAR has no
>>>>>>>>> problem receiving them on Linux).
>>>>>>>>>
>>>>>>>>> - .../however/, wxEVT_CHAR_HOOK reports some keys incorrectly. Any
>>>>>>>>> shifted symbol keys are reported as shift+(the unshifted key), so
>>>>>>>>> on a US keyboard for example, when you type <?>, it sees
>>>>>>>>> <Shift>+</>. There's no easy way to map these to the "correct"
>>>>>>>>> keys, particularly considering international keyboards.
>>>>>>>>>
>>>>>>>>> - When wxEvent::DoAllowNextEvent() is called (see below),
>>>>>>>>> wxEvent::Skip MUST be called on Linux and OSX, and must NOT be
>>>>>>>>> called on Windows. No... I don't know why.
>>>>>>>>>
>>>>>>>>> In the end, I implemented separate OnChar and OnCharHook handlers.
>>>>>>>>> OnCharHook does the following:
>>>>>>>>>
>>>>>>>>> 1. If the keypress is a pure modifier (wxEVT_CHAR_HOOK generates
>>>>>>>>> events for things like Ctrl by itself), do nothing.
>>>>>>>>>
>>>>>>>>> 2. If the keypress is for a printable character **that is not
>>>>>>>>> whitespace** (to avoid tripping the Tab bug), call
>>>>>>>>> wxEvent::DoAllowNextEvent to cause the wxEVT_CHAR for the same key
>>>>>>>>> to be generated. Call or do not call wxEvent::Skip depending on
>>>>>>>>> platform, as above. This causes the "correct" key to be looked up
>>>>>>>>> (e.g. <?> instead of <Shift></>) and this progresses to the OnChar
>>>>>>>>> handler.
>>>>>>>>>
>>>>>>>>> 3. For all other keys, do not allow the wxEVT_CHAR to be generated,
>>>>>>>>> but instead pass the event object directly to OnChar.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Then OnChar handles returning the keycode to caller.
>>>>>>>>>
>>>>>>>>> Please, help me test this. Wayne, if this works, and you don't mind, I'd
>>>>>>>>> really like to get it merged. Even if there are still minor GUI quirks
>>>>>>>>> and whatnot, the current top of the devel branch has the hotkey bugs
>>>>>>>>> from earlier that I'd like to get fixed. Any further minor issues can be
>>>>>>>>> resolved in further minor commits.
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Exasperatedly,
>>>>>>>>> Chris
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> 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
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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