Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#7924 closed enhancement (invalid)

Enable optional Z-Snake functionality.

Reported by: KarmaMechanic Owned by: stippi
Priority: low Milestone: Unscheduled
Component: User Interface Version: R1/alpha3
Keywords: z-snake menu snake tracker deskbar Cc:
Blocked By: Blocking:
Platform: All

Description

Add an option to enable Snaking menu highlights("Z-snake"), such as those seen in BeOS R5.1d0

Change History (6)

comment:1 by scottmc, 13 years ago

Milestone: R1Unscheduled
Priority: normallow

comment:2 by axeld, 13 years ago

Resolution: invalid
Status: newclosed

What would be the use of that, anyway? It didn't even look good, besides that it doesn't add any other value.

in reply to:  2 comment:3 by anevilyak, 13 years ago

Replying to axeld:

What would be the use of that, anyway? It didn't even look good, besides that it doesn't add any other value.

While the visual implementation left some to be desired, it was quite useful when browsing deep directory hierarchies in Tracker context menus, since it let you follow the path you'd gone to arrive at the menu you're currently at, which can get a little confusing when a menu needs to be located to the left of the current one due to space constraints.

comment:4 by KarmaMechanic, 13 years ago

Not a key feature desired by everyone, I did find it useful when adding drivers to the old dano system I used to have on real hardware. Figured it might be a semi-easy gui task for a newer developer, and set to off by default. I guess this gives me a good reason to learn something more than generic c++ lol.

comment:5 by DFergATL, 13 years ago

Hey now, don't be down on the snake. I loved z-snake and would love to have the option for it.

in reply to:  4 comment:6 by anevilyak, 13 years ago

Replying to KarmaMechanic:

Not a key feature desired by everyone, I did find it useful when adding drivers to the old dano system I used to have on real hardware. Figured it might be a semi-easy gui task for a newer developer, and set to off by default. I guess this gives me a good reason to learn something more than generic c++ lol.

I would advise against that, one of the many reasons it hasn't been done is because it's actually quite hard to do correctly. You'll notice even Dano didn't manage, seeing as Z-snake has visual artifacts in a lot of situations. Path computation for it is non-trivial since you have to figure out a path that looks good regardless of where the next menu window is ultimately positioned, bearing in mind that could be above, below and to either side of your current window.

Furthermore, as implemented in Dano it's currently impossible in Haiku since it requires non-rectangular window support in the app_server, which Haiku doesn't currently have, and which would require pretty significant effort to implement (especially in a way that actually performs well). To add to the complexity, the menu code is quite complex/messy as is, partly due to the BeOS API design for them being horrible, which makes it even harder to implement than it otherwise would be. None of the above is something I'd advise attempting without very deep knowledge of the involved components.

Note: See TracTickets for help on using tickets.