From: SourceForge.net <no...@so...> - 2013-03-20 10:27:53
|
Bugs item #3608074, was opened at 2013-03-14 12:42 Message generated for change (Comment added) made by nijtmans You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=112997&aid=3608074&group_id=12997 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: 01. Bindings Group: None >Status: Open >Resolution: None Priority: 5 Private: No Submitted By: Talvo (talvo) Assigned to: Joe English (jenglish) Summary: <<Invoke>> binding in lib/ttk/button.tcl Initial Comment: In lib/ttk/button.tcl, there are two bindings (which are later copied to TRadiobutton and TCheckbutton as well): bind TButton <Key-space> { ttk::button::activate %W } bind TButton <<Invoke>> { ttk::button::activate %W } <<Invoke>> is undocumented (it's not on the [event] manpage's list of Pre-Defined Events, or mentioned on the [ttk::button] manpage) - I'm not sure if this is an oversight, or if the binding is only there for backwards compatability or something. But it looks like it should probably either be removed, or should be documented (and the <Key-space> binding changed to [event add <<Invoke>> <Key-space>] so it's used). ---------------------------------------------------------------------- >Comment By: Jan Nijtmans (nijtmans) Date: 2013-03-20 03:27 Message: >OK, so we should document it Agreed. <<Invoke>> should be documented as an event which is not defined by Tk, only used. And - indeed - for consistancy, I would add <<Invoke>> bindings to other relevant widgets as well (button, listbox and menu) > Do not add <Key-space> as a synonym for <<Invoke>>, that > would be incorrect. Such addition would mean that the default binding for <Key-space> changes, a potentional incompatible change which therefore cannot be done in Tk 8.6. ---------------------------------------------------------------------- Comment By: Donal K. Fellows (dkf) Date: 2013-03-20 02:44 Message: OK, so we should document it. That's fine. We could also add it to the bindings put on ordinary *buttons, etc. as it isn't mapped to a key sequence. The docs really are just a “these are the virtual events used in Tk”, and could probably do with some updating anyway. I suggest something like this shell magic to find things worthy of mentioning (and where to look for the uses of the events): grep '<<[a-zA-Z0-9]*>>' $(find tk/library -name '*.tcl') | sed 's/\([^:]*\):.*\(<<.*>>\).*/\2: \1/' | sort -u Don't know if I'll get to doing such an audit in the near future. :-( ---------------------------------------------------------------------- Comment By: Joe English (jenglish) Date: 2013-03-19 14:24 Message: <<Invoke>> event bindings are used for mnemonic activation and for accelerators, for exaqmple: bind $dlg <KeyPress-Escape> [list event generate $dlg.cancel <<Invoke>>] See also the keynav package (which was a part of Tile that Jeff left behind when executing TIP#248), https://github.com/jenglish/tile-extras/blob/master/keynav.tcl Please do not remove the <<Invoke>> binding from library/ttk/*.tcl, that will break user code that relies on it. Do not add <Key-space> as a synonym for <<Invoke>>, that would be incorrect. ---------------------------------------------------------------------- Comment By: Jan Nijtmans (nijtmans) Date: 2013-03-19 07:36 Message: <<Invoke>> cannot be added to the virtual events, at least not until Tk 8.7. I see no added value in defining a virtual event which is equivalent to <Key-space>, so I would suggest removing it. Joe? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=112997&aid=3608074&group_id=12997 |