Don't hide menus
Daniel
xracoonx at gmx.de
Fri Oct 13 06:05:57 UTC 2023
It seems to be a rather universally accepted UI rule that menu items
should not be hidden. Feel free to can check your favorite apps or
search the recommendation on the web. (There is also the more extreme
recommendations to not even disable menu entries but I think it is
generally agreed that this is a bad idea because it leaves the user
clicking in vain.)
I am referring here foremost to the main menu items. Context-menus may
be treated differently because they are expected to be context-dependent
(as the name suggests).
Among the main reasons for why menu items should not be hidden are that
with hidden menus users have a harder time
1) discovering features
2) figuring out and remembering where menu items are located
Notice that these two may be hard to appreciate for developers because
they typically know the entries independently of whether they are shown.
And I seem to remember a couple of instances where users were asking
about missing features on the list which were due to OptItems being hard
to discover.
In contrast to other applications, LyX has a greater number of menu
entries that become hidden. I am not sure about what the history of this
special behavior of LyX is but maybe it had to do with a trade-off in a
time when screen size/resolution was quite limited?
I have made a test and changed all OptItems to Items in the
stdmenus.inc. That might not show all the menu items since there are
some whose "expansion" is hard-coded. Those expansions should typically
have a disabled "empty" entry when there is nothing to expand. See,
e.g., Navigate > (Empty Table of Contents) which is a perfect example of
informing a user about a feature with a disabled entry while the feature
is unavailable.
With this change I found that the length of the menus seemed totally
acceptable to me (and at least not longer than for other "word processors").
The only exception were the various inset settings in the "Edit" menu.
However, these seem to be mutually exclusive. So, there are different
ways to resolve this problem. For example, to create one settings entry
that rules them all and shows a disabled "Inset Setting..." when
unavailable. In the short term, one might even have an exception here
for using OptItems for this specific case.
Best,
Daniel
More information about the lyx-devel
mailing list