Menu items disappear while the menu is open

Bug #412797 reported by Cody Russell
18
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Ayatana Design
Fix Committed
Medium
Unassigned
gtk+3.0 (Ubuntu)
Triaged
Medium
Unassigned

Bug Description

Not sure if this is a bug or a deliberate design, but here goes:

If I receive an indication (say, Ted just joined IM) and I open the menu then I see Ted there. I might try to move the mouse over to click on that menuitem, but if I'm too slow then the menuitem will be removed from the menu.

Seems like a minor usability issue to me. While the menu is open should we really be modifying it?

David Barth (dbarth)
Changed in indicator-applet:
assignee: nobody → Ted Gould (ted)
status: New → Triaged
importance: Undecided → Wishlist
Revision history for this message
Ted Gould (ted) wrote :

Important, we shouldn't be rebuilding the menu on updates. We should be smarter about how we handle it.

affects: indicator-applet → dbusmenu
Changed in dbusmenu:
importance: Wishlist → Medium
status: Triaged → Confirmed
Revision history for this message
Ted Gould (ted) wrote :

Adding aytana-design because I think it'd be good to get some design feedback on this. It seems like leaving the menus in an inconsistent state isn't good, but the update while browsing sucks too. Not sure of how we should handle this? Only update when your mouse is over a separator? Block clicks for a second when we update?

Revision history for this message
Matthew Paul Thomas (mpt) wrote :

What a deliciously tricky problem.

A brutal way of handling it would be never to change menus while they're open. But there are at least a couple of worthy use cases for updating them: the items for available wireless networks in the network menu, and search result items in any menu containing a search field.

Going to the other extreme, a surgical solution for Cody's specific problem would be: If any item is highlighted at the moment it is supposed to disappear, it should become insensitive instead, and then disappear once it is no longer highlighted. However, that would be a bit *too* surgical. For example, if you are over item N that is pending deletion, and you aim at item N+1, you'll end up clicking item N+2 by mistake, because item N+1 has just slid into where item N was. It also doesn't help the opposite case, where you try to click item X, only to click item X-1 that appeared above it a moment earlier.

So, we need something between those two extremes. How about this:
(a) Whenever the highlighted item in a menu is supposed to disappear, it should instead become insensitive until it is no longer highlighted, and disappear then; and
(b) whenever any item X is added to or removed from a menu, the set of items {S} should become insensitive for one second, temporarily overriding any other changes in sensitivity for those items in that second:
    - if the menu opened downward, {S} = X + all items after it
    - if it opened upward (e.g. from a menubutton near the bottom of the screen), {S} = X + all items before it
    - if it opened in both directions (i.e. an option menu), {S} = all items in the menu.

Are there any obvious cases where that would fail? As you might guess, I think this is something that should be handled in GTK for every menu, rather than in DBus Menu just for indicator menus.

Revision history for this message
Ted Gould (ted) wrote :

The only thing I can see is that there's probably some odd cases where the menu expands to be larger than the screen, and thus gets scroll items on either side of it. I guess in those cases we just need to ensure that the item under the mouse stays constant. Need to test to ensure that's the case.

Ted Gould (ted)
Changed in dbusmenu:
assignee: Ted Gould (ted) → nobody
Revision history for this message
Lars Karlitski (larsu) wrote :

Another implication of changing menu items while the menu is open became apparent in bug 883317: menus of the indicators can go offscreen if menu items with long labels are added.

John Lea (johnlea)
Changed in ayatana-design:
assignee: nobody → Matthew Paul Thomas (mpt)
Changed in ayatana-design:
importance: Undecided → Medium
John Lea (johnlea)
tags: added: udp
Changed in ayatana-design:
status: New → Triaged
John Lea (johnlea)
summary: - Menu items disappear while the menu is open
+ Indicators - Menu items disappear while the menu is open
Changed in ayatana-design:
status: Triaged → Confirmed
summary: - Indicators - Menu items disappear while the menu is open
+ Menu items disappear while the menu is open
John Lea (johnlea)
Changed in dbusmenu:
status: Confirmed → Triaged
Changed in ayatana-design:
status: Confirmed → Fix Committed
Revision history for this message
Matthew Paul Thomas (mpt) wrote :

This is a toolkit problem, not a DBus Menu problem. It has nothing to do with window menus or indicator menus specifically -- It might equally happen in combo box menus, context menus, or any other kind.

affects: libdbusmenu → gtk+3.0 (Ubuntu)
Changed in ayatana-design:
assignee: Matthew Paul Thomas (mpt) → nobody
no longer affects: libdbusmenu (Ubuntu)
tags: added: rls-w-incoming
tags: added: rls-x-incoming
removed: rls-w-incoming
Will Cooke (willcooke)
tags: added: rls-x-notfixing
removed: rls-x-incoming
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.