/*
* ion/mod_menu/grabmenu.c
*
- * Copyright (c) Tuomo Valkonen 1999-2006.
+ * Copyright (c) Tuomo Valkonen 1999-2007.
*
* Ion is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
if(reg==NULL)
return FALSE;
- if(menu->gm_state==ev->state && ev->keycode==menu->gm_kcb)
+ if((menu->gm_state==ev->state || menu->gm_state==AnyModifier)
+ && ev->keycode==menu->gm_kcb){
menu_select_next(menu);
+ }
return FALSE;
}
WMPlexAttachParams par;
WMenu *menu;
XKeyEvent *ev;
+ uint state, kcb;
+ bool sub;
- ev=ioncore_current_key_event();
-
- if(ev==NULL)
+ if(!ioncore_current_key(&kcb, &state, &sub))
return NULL;
+ if(state==0){
+ /* TODO: cycle key? */
+ return mod_menu_do_menu(mplex, handler, tab, param);
+ }
+
fnp.handler=handler;
fnp.tab=tab;
fnp.pmenu_mode=FALSE;
(void*)&fnp);
if(menu==NULL)
- return FALSE;
+ return NULL;
- menu->gm_kcb=ev->keycode;
- menu->gm_state=ev->state;
+ menu->gm_kcb=kcb;
+ menu->gm_state=state;
ioncore_grab_establish((WRegion*)menu, grabmenu_handler, NULL, 0);