Grouping UI elements
Tamas Zolnai
tamas.zolnai at collabora.co.uk
Thu Jan 16 10:12:26 PST 2014
2014 Január 16, Csütörtök 14:43 GMT dátummal, Caolán McNamara <caolanm at 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
More information about the LibreOffice
mailing list