On Wed, 2014-01-15 at 14:25 +0000, Tamas Zolnai wrote: > Main problem is that the 'Help' and the 'Extensions' buttons on the > Start Center are in different GtkBoxes and so arrow key traversal > doesn't work between them.
So, actually containers are "invisible" to cursor traversal. So on pressing "right" when the focus is on the Help button the Extension button *is* considered as a candidate but is rejected because it has its WB_GROUP bit set to state it's the start of a new group. The WB_GROUP bit on the button comes about because the containers are not "invisible" to the PushButton *ctor* which checks if the preceding window of its parent is a button and if it then defaults to grouping with it and if it is not a button defaults to setting itself as the start of a new group. So the trick to toggle off the WB_GROUP bit of the second button so that when the "transparent" cursor traversal happens then it will allowed to be part of the group starting with "Help" I've done that now with http://cgit.freedesktop.org/libreoffice/core/commit/?id=9290998442166fae70431ee98aa9eb019bad24b3 nBits &= ~WB_GROUP unsets the WB_GROUP bit and nBits |= WB_NOGROUP sets the nogroup bit which suppresses vcl from resetting WB_GROUP again > Second I pick up "member_of" property and > Window::SetAccessibleRelationMemberOf() method which is used not for > only RadioButtons but for other elements too. For example: > http://opengrok.libreoffice.org/xref/core/cui/source/dialogs/hlinettp.cxx#93 > (an image button related with a fixed text). The manual calls of "SetAccessibleRelationMemberOf" etc are basically a pre-widget layout hack to fake a hierarchy for accessibility. e.g. to manually set all the widgets that visually appear to be subelements under a FixedLine title as children of the fixedline. That generally all goes away with the widget layout in favour of a VclFrame that contains those widgets and we then delete the "SetAccessibleRelationMemberOf" calls. (Similarly the manual SetAccessibleRelationLabeledBy stuff is either a simple Mnemonic widget target for a label (or entered into the .ui a11y section if the label isn't a "true" label but something like a checkbox and doesn't have the feature to set a mnemonic target) > So secondly that came in my mind to modify the corresponding > Window::ImplDlgCtrl() method to take account of member_of relation in > case of arrow keys. ImplDlgDtrl is so horribly complicated, as is the rest of that family of functions that I'd rather not touch them as much as possible :-) C. _______________________________________________ LibreOffice mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice
