]> Dogcows Code - chaz/openbox/blobdiff - openbox/focus.c
Merge branch 'backport' into work
[chaz/openbox] / openbox / focus.c
index cff81bfb03918a0b5fe0e982cd5bedbea17d7e97..baf88e8134bcc8227c8706cdbae849184781da7e 100644 (file)
@@ -27,6 +27,7 @@
 #include "focus_cycle.h"
 #include "screen.h"
 #include "keyboard.h"
+#include "hooks.h"
 #include "focus.h"
 #include "stacking.h"
 #include "obt/prop.h"
@@ -72,6 +73,7 @@ static void push_to_top(ObClient *client)
 void focus_set_client(ObClient *client)
 {
     Window active;
+    ObClient *old;
 
     ob_debug_type(OB_DEBUG_FOCUS,
                   "focus_set_client 0x%lx", client ? client->window : 0);
@@ -87,6 +89,7 @@ void focus_set_client(ObClient *client)
     focus_cycle_stop(focus_client);
     focus_cycle_stop(client);
 
+    old = focus_client;
     focus_client = client;
 
     if (client != NULL) {
@@ -101,6 +104,9 @@ void focus_set_client(ObClient *client)
         active = client ? client->window : None;
         OBT_PROP_SET32(obt_root(ob_screen), NET_ACTIVE_WINDOW, WINDOW, active);
     }
+
+    hooks_queue(OB_HOOK_WIN_UNFOCUS, old);
+    hooks_queue(OB_HOOK_WIN_FOCUS, client);
 }
 
 static ObClient* focus_fallback_target(gboolean allow_refocus,
@@ -196,13 +202,6 @@ void focus_nothing(void)
     /* nothing is focused, update the colormap and _the root property_ */
     focus_set_client(NULL);
 
-    /* if there is a grab going on, then we need to cancel it. if we move
-       focus during the grab, applications will get NotifyWhileGrabbed events
-       and ignore them !
-
-       actions should not rely on being able to move focus during an
-       interactive grab.
-    */
     event_cancel_all_key_grabs();
 
     /* when nothing will be focused, send focus to the backup target */
@@ -365,4 +364,3 @@ gboolean focus_valid_target(ObClient *ft,
 
     return ok;
 }
-
This page took 0.024482 seconds and 4 git commands to generate.