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 : [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 > _______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp

