Fix some keyboard control issues.
This commit is contained in:
parent
b799cfd9a3
commit
f6ad401dab
1 changed files with 12 additions and 8 deletions
|
@ -320,7 +320,7 @@ void menu_hide(ObMenu *self) {
|
||||||
XUnmapWindow(ob_display, self->frame);
|
XUnmapWindow(ob_display, self->frame);
|
||||||
self->shown = FALSE;
|
self->shown = FALSE;
|
||||||
if (self->open_submenu)
|
if (self->open_submenu)
|
||||||
menu_hide(self->open_submenu);
|
self->open_submenu->hide(self->open_submenu);
|
||||||
if (self->parent && self->parent->open_submenu == self) {
|
if (self->parent && self->parent->open_submenu == self) {
|
||||||
self->parent->open_submenu = NULL;
|
self->parent->open_submenu = NULL;
|
||||||
}
|
}
|
||||||
|
@ -392,7 +392,7 @@ void menu_entry_fire(ObMenuEntry *self, unsigned int button, unsigned int x,
|
||||||
{
|
{
|
||||||
ObMenu *m;
|
ObMenu *m;
|
||||||
|
|
||||||
if (button != 1) return;
|
if (button > 3) return;
|
||||||
|
|
||||||
if (self->action) {
|
if (self->action) {
|
||||||
self->action->data.any.c = self->parent->client;
|
self->action->data.any.c = self->parent->client;
|
||||||
|
@ -401,7 +401,7 @@ void menu_entry_fire(ObMenuEntry *self, unsigned int button, unsigned int x,
|
||||||
/* hide the whole thing */
|
/* hide the whole thing */
|
||||||
m = self->parent;
|
m = self->parent;
|
||||||
while (m->parent) m = m->parent;
|
while (m->parent) m = m->parent;
|
||||||
menu_hide(m);
|
m->hide(m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,7 +434,7 @@ void menu_control_show(ObMenu *self, int x, int y, ObClient *client)
|
||||||
stacking_raise(MENU_AS_WINDOW(self));
|
stacking_raise(MENU_AS_WINDOW(self));
|
||||||
self->shown = TRUE;
|
self->shown = TRUE;
|
||||||
} else if (self->shown && self->open_submenu) {
|
} else if (self->shown && self->open_submenu) {
|
||||||
menu_hide(self->open_submenu);
|
self->open_submenu->hide(self->open_submenu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -454,7 +454,7 @@ void menu_control_mouseover(ObMenuEntry *self, gboolean enter)
|
||||||
e = (ObMenuEntry *) self->parent->over->data;
|
e = (ObMenuEntry *) self->parent->over->data;
|
||||||
e->hilite = FALSE;
|
e->hilite = FALSE;
|
||||||
menu_entry_render(e);
|
menu_entry_render(e);
|
||||||
menu_hide(self->parent->open_submenu);
|
self->parent->open_submenu->hide(self->parent->open_submenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self->submenu && self->parent->open_submenu != self->submenu) {
|
if (self->submenu && self->parent->open_submenu != self->submenu) {
|
||||||
|
@ -505,6 +505,9 @@ void menu_control_keyboard_nav(unsigned int key)
|
||||||
obkey = OB_KEY_RIGHT;
|
obkey = OB_KEY_RIGHT;
|
||||||
else if (key == ob_keycode(OB_KEY_LEFT)) /* users */
|
else if (key == ob_keycode(OB_KEY_LEFT)) /* users */
|
||||||
obkey = OB_KEY_LEFT;
|
obkey = OB_KEY_LEFT;
|
||||||
|
else if (key == ob_keycode(OB_KEY_RETURN))
|
||||||
|
obkey = OB_KEY_RETURN;
|
||||||
|
|
||||||
|
|
||||||
if (current_menu == NULL)
|
if (current_menu == NULL)
|
||||||
current_menu = menu_visible->data;
|
current_menu = menu_visible->data;
|
||||||
|
@ -544,6 +547,7 @@ void menu_control_keyboard_nav(unsigned int key)
|
||||||
return;
|
return;
|
||||||
e = (ObMenuEntry *)current_menu->over->data;
|
e = (ObMenuEntry *)current_menu->over->data;
|
||||||
if (e->submenu) {
|
if (e->submenu) {
|
||||||
|
current_menu->mouseover(e, TRUE);
|
||||||
current_menu = e->submenu;
|
current_menu = e->submenu;
|
||||||
current_menu->over = current_menu->entries;
|
current_menu->over = current_menu->entries;
|
||||||
if (current_menu->over)
|
if (current_menu->over)
|
||||||
|
@ -561,15 +565,15 @@ void menu_control_keyboard_nav(unsigned int key)
|
||||||
current_menu->over = NULL;
|
current_menu->over = NULL;
|
||||||
/* zero is enter */
|
/* zero is enter */
|
||||||
menu_entry_fire(e, 0, 0, 0);
|
menu_entry_fire(e, 0, 0, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
case OB_KEY_LEFT: {
|
case OB_KEY_LEFT: {
|
||||||
if (current_menu->over != NULL) {
|
if (current_menu->over != NULL) {
|
||||||
current_menu->mouseover(current_menu->over->data, FALSE);
|
current_menu->mouseover(current_menu->over->data, FALSE);
|
||||||
current_menu->over = NULL;
|
current_menu->over = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
menu_hide(current_menu);
|
current_menu->hide(current_menu);
|
||||||
|
|
||||||
if (current_menu->parent)
|
if (current_menu->parent)
|
||||||
current_menu = current_menu->parent;
|
current_menu = current_menu->parent;
|
||||||
|
@ -578,7 +582,7 @@ void menu_control_keyboard_nav(unsigned int key)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if (current_menu)
|
if (current_menu)
|
||||||
menu_hide(current_menu);
|
current_menu->hide(current_menu);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue