Opened 6 years ago

Last modified 4 years ago

#9876 new bug

[Interface Kit] diagonal mouse support doesn't always work as expected

Reported by: diver Owned by: jackburton
Priority: normal Milestone: R1
Component: Kits/Interface Kit Version: R1/Development
Keywords: Cc: stippi
Blocked By: Blocking:
Has a Patch: no Platform: All

Description (last modified by diver)

Menu doesn't get selected under some specific circumstances.

  • open /boot
  • right click system folder
  • place cursor above the folder icon
  • start moving cursor horizontally to the right from the icon to letter m (as in system)
  • without stopping continue moving cursor vertically down to Edit name menu item and leave it there

At this point Edit name should be selected, but it didn't, like if it got stuck on the first menu item. Interestingly, if you move your cursor the same way from system to Mount (which has a submenu) it get selected.

Probably it has something to do with diagonal mouse support #284/hrev24193.

Maybe some ideas can be taken from this research: http://bjk5.com/post/44698559168/breaking-down-amazons-mega-dropdown

Attachments (1)

menu.png (42.0 KB) - added by diver 6 years ago.

Download all attachments as: .zip

Change History (5)

Changed 6 years ago by diver

Attachment: menu.png added

comment:1 Changed 6 years ago by diver

Description: modified (diff)

comment:2 Changed 6 years ago by diver

Description: modified (diff)

comment:3 Changed 6 years ago by leavengood

I'm pretty sure we do the diagonal "triangle" movement tracking shown in that blog post, but I suspect the missing element is time. At some point after the user stops moving the mouse the diagonal sub-menu tracking should give up and the current hovered-over item should be selected.

The only issue in trying to fix this is our menu-tracking code is quite complicated and hard-to-change. I've seriously considered trying to sit down and completely redo it, using a more object-oriented approach, but that is hard due to lack of time and of course the fact that our current menu code is already so complicated one would need a very good test suite to make sure nothing is broken in a redesign.

Some have suggested just waiting until after R1 is released to do a menu redesign as part of a new menu API (as supposedly part of the current difficulty is due to the BeOS menu classes design), but I don't think that is a very good excuse.

As for this ticket: it would be cool if Haiku could be one of the only modern operating systems to have menus actually work properly like they did in the original Mac OS.

comment:4 Changed 4 years ago by diver

The problem with the timeout is that when it expires, we don't select the menu the mouse is over immediately. Instead we do that at the next mouse move.

Note: See TracTickets for help on using tickets.