summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-10-09 18:49:14 +0000
committerDana Jansens <danakj@orodu.net>2003-10-09 18:49:14 +0000
commitbb5294199982817a84cd6b5c1197115389cbad56 (patch)
treea069d442c65d26c1bf7248411a7c18bb98580ee9
parent8e34732b3a6d19c64addc6e7f8cdc7bbf6293f1f (diff)
cancel focus delays when the user runs a focus (or focus cycle) action, and when focusing new windows
-rw-r--r--openbox/action.c12
-rw-r--r--openbox/client.c8
2 files changed, 19 insertions, 1 deletions
diff --git a/openbox/action.c b/openbox/action.c
index 5cce18a3..bac08787 100644
--- a/openbox/action.c
+++ b/openbox/action.c
@@ -994,6 +994,10 @@ void action_activate(union ActionData *data)
void action_focus(union ActionData *data)
{
+ /* if using focus_delay, stop the timer now so that focus doesn't go moving
+ on us */
+ event_halt_focus_delay();
+
client_focus(data->client.any.c);
}
@@ -1380,6 +1384,10 @@ void action_showmenu(union ActionData *data)
void action_cycle_windows(union ActionData *data)
{
+ /* if using focus_delay, stop the timer now so that focus doesn't go moving
+ on us */
+ event_halt_focus_delay();
+
focus_cycle(data->cycle.forward, data->cycle.linear,
data->cycle.dialog,
data->cycle.inter.final, data->cycle.inter.cancel);
@@ -1387,6 +1395,10 @@ void action_cycle_windows(union ActionData *data)
void action_directional_focus(union ActionData *data)
{
+ /* if using focus_delay, stop the timer now so that focus doesn't go moving
+ on us */
+ event_halt_focus_delay();
+
focus_directional_cycle(data->interdiraction.direction,
data->interdiraction.dialog,
data->interdiraction.inter.final,
diff --git a/openbox/client.c b/openbox/client.c
index b562283b..feaa24df 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -359,7 +359,13 @@ void client_manage(Window window)
a window maps since its not based on an action from the user like
clicking a window to activate is. so keep the new window out of the way
but do focus it. */
- if (activate) client_focus(self);
+ if (activate) {
+ /* if using focus_delay, stop the timer now so that focus doesn't go
+ moving on us */
+ event_halt_focus_delay();
+
+ client_focus(self);
+ }
/* client_activate does this but we aret using it so we have to do it
here as well */