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.
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.