Date: prev next · Thread: first prev next last
2014 Archives by date, by thread · List index



2014 Január 16, Csütörtök 14:43 GMT dátummal, Caolán McNamara <caolanm@redhat.com> ezt írta:

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.

Ok, thanks for all this information and the commit. :)

Tamás





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.