add special shit for window cycling, grab the keyboard etc
This commit is contained in:
parent
3778846122
commit
69c9b6211b
1 changed files with 25 additions and 3 deletions
|
@ -86,8 +86,22 @@ gboolean kbind(GList *keylist, Action *action)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void press(ObEvent *e, void *foo)
|
static void event(ObEvent *e, void *foo)
|
||||||
{
|
{
|
||||||
|
static KeyBindingTree *grabbed_key = NULL;
|
||||||
|
|
||||||
|
if (e->type == Event_X_KeyRelease) {
|
||||||
|
if (grabbed_key) {
|
||||||
|
if (!(grabbed_key->state & e->data.x.e->xkey.state)) {
|
||||||
|
grabbed_key->action->data.cycle.final = TRUE;
|
||||||
|
grabbed_key->action->func(&grabbed_key->action->data);
|
||||||
|
grab_keyboard(FALSE);
|
||||||
|
grabbed_key = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (e->data.x.e->xkey.keycode == reset_key &&
|
if (e->data.x.e->xkey.keycode == reset_key &&
|
||||||
e->data.x.e->xkey.state == reset_state) {
|
e->data.x.e->xkey.state == reset_state) {
|
||||||
reset_chains();
|
reset_chains();
|
||||||
|
@ -116,7 +130,15 @@ static void press(ObEvent *e, void *foo)
|
||||||
g_assert(!(p->action->func == action_move ||
|
g_assert(!(p->action->func == action_move ||
|
||||||
p->action->func == action_resize));
|
p->action->func == action_resize));
|
||||||
|
|
||||||
|
if (p->action->func == action_cycle_windows)
|
||||||
|
p->action->data.cycle.final = FALSE;
|
||||||
|
|
||||||
p->action->func(&p->action->data);
|
p->action->func(&p->action->data);
|
||||||
|
|
||||||
|
if (p->action->func == action_cycle_windows) {
|
||||||
|
grab_keyboard(TRUE);
|
||||||
|
grabbed_key = p;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
reset_chains();
|
reset_chains();
|
||||||
|
@ -133,14 +155,14 @@ void plugin_startup()
|
||||||
curpos = NULL;
|
curpos = NULL;
|
||||||
grabbed = FALSE;
|
grabbed = FALSE;
|
||||||
|
|
||||||
dispatch_register(Event_X_KeyPress, (EventHandler)press, NULL);
|
dispatch_register(Event_X_KeyPress | Event_X_KeyRelease, (EventHandler)event, NULL);
|
||||||
|
|
||||||
translate_key("C-g", &reset_state, &reset_key);
|
translate_key("C-g", &reset_state, &reset_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
void plugin_shutdown()
|
void plugin_shutdown()
|
||||||
{
|
{
|
||||||
dispatch_register(0, (EventHandler)press, NULL);
|
dispatch_register(0, (EventHandler)event, NULL);
|
||||||
|
|
||||||
grab_keys(FALSE);
|
grab_keys(FALSE);
|
||||||
tree_destroy(firstnode);
|
tree_destroy(firstnode);
|
||||||
|
|
Loading…
Reference in a new issue