openbox/DESIGN/menu-thoughts.txt
2003-04-06 05:15:13 +00:00

29 lines
1.2 KiB
Text

Okay Soldiers, here's the plan:
menu.c contains functions for handling a menu list. This may have to
be turned into an array.
The invalid bit denotes whether the menu must be rerendered. Normally,
it is auto-managed by the menu.c functions.
Each menu has a set of controller functions that handle behaviour:
show() - place a menu on screen
also, may rerender the menu if the invalid bit is set
hide() - hide a menu
mouseover() - called when the mouse moves over a new entry
may highlight new entry and display submenu
selected() - called when an item is clicked on
may execute, change config options?, perform action, or
display submenu
update() - re-render the menu
When a menu is rerendered, the engine can place any information like
(x,y) coordinates, appearances &c in the renderdata.
To customize the behaviour of a menu, set the controller function
pointers. Some ideas:
- we can have plugins for PipeMenus, FIFOMenus, ConfigMenus, Toolbar,
&c.
- a TimedUpdate menu (say for mp3 lists) could call update()
periodically.
- window lists/workspace menus need to be optimized somehow since
these change often, and modifying the list that often will be
crap. needs profiling.