Rewrite most of grab_menu in grab.c (it was partly 9wm code).

This should work functionally the same, with a few simplifications.

Changes:
- we don't care if you're holding another button when you release the
  menu key if you don't want to select anything, move off the menu.
- remove the hysteresis from the menu selection (before you had to move
  more than three pixels onto a new menu entry before it selected it)
- simplify a lot of the selection code
- kill dead code.
- do what the XXX comment said and cache the screensize (i may tweak
  this later).

As far as I can tell, the only code remaining from 9wm is the list of
fonts in calmwm.c. Others appear to concur.

ok marc@, looked over and tested by a few others. Reminders from okan@.
This commit is contained in:
oga
2008-01-14 15:21:10 +00:00
parent e5cabb0f43
commit 1eed217b1c
4 changed files with 89 additions and 261 deletions

View File

@@ -79,6 +79,10 @@ struct screen_ctx {
int altpersist;
int maxinitialised;
int xmax;
int ymax;
FILE *notifier;
struct cycle_entry_q mruq;
@@ -276,7 +280,6 @@ struct menu {
char text[MENU_MAXENTRY + 1];
char print[MENU_MAXENTRY + 1];
void *ctx;
short lasthit;
short dummy;
};
@@ -399,7 +402,6 @@ int grab_drag(struct client_ctx *);
void grab_menuinit(struct screen_ctx *);
void *grab_menu(XButtonEvent *, struct menu_q *);
void grab_label(struct client_ctx *);
void grab_exec(void);
void xfree(void *);
void *xmalloc(size_t);