]> git.sur5r.net Git - i3/i3/commitdiff
Added assignment type 'A_NO_FOCUS' (#1416)
authorIngo Bürk <ingo.buerk@tngtech.com>
Sun, 29 Mar 2015 15:29:21 +0000 (17:29 +0200)
committerIngo Bürk <ingo.buerk@tngtech.com>
Wed, 1 Apr 2015 18:46:55 +0000 (20:46 +0200)
Any assignment with type 'A_NO_FOCUS' will cause the matched window to not be focused by i3 when it is managed.

include/data.h
src/manage.c

index d40ed29296e1136669473a83060e1c7b48b71067..50e1f1807bfc4cf2b16459a3d154f0883024f27f 100644 (file)
@@ -460,6 +460,7 @@ struct Assignment {
      *
      * A_COMMAND = run the specified command for the matching window
      * A_TO_WORKSPACE = assign the matching window to the specified workspace
+     * A_NO_FOCUS = don't focus matched window when it is managed
      *
      * While the type is a bitmask, only one value can be set at a time. It is
      * a bitmask to allow filtering for multiple types, for example in the
@@ -469,7 +470,8 @@ struct Assignment {
     enum {
         A_ANY = 0,
         A_COMMAND = (1 << 0),
-        A_TO_WORKSPACE = (1 << 1)
+        A_TO_WORKSPACE = (1 << 1),
+        A_NO_FOCUS = (1 << 2)
     } type;
 
     /** the criteria to check if a window matches */
index 2b3c6743a20df8b8b1c4525c9719fa11cdf6f01a..3499963b97647d4b6fa7796cd0978fc8feb5f3fa 100644 (file)
@@ -512,8 +512,10 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
     /* Defer setting focus after the 'new' event has been sent to ensure the
      * proper window event sequence. */
     if (set_focus && !nc->window->doesnt_accept_focus && nc->mapped) {
-        DLOG("Now setting focus.\n");
-        con_focus(nc);
+        if (assignment_for(cwindow, A_NO_FOCUS) == NULL) {
+            DLOG("Now setting focus.\n");
+            con_focus(nc);
+        }
     }
 
     tree_render();