]> git.sur5r.net Git - i3/i3/blobdiff - include/data.h
Handle changes to _NET_WM_WINDOW_TYPE after the window has been managed.
[i3/i3] / include / data.h
index 8f2c197df3e11e4a9234323a5fd8b3fd6049b289..5fb9a07458e28a60d1e6ee1974d9b31a510653cd 100644 (file)
@@ -378,6 +378,9 @@ struct Window {
      * default will be 'accepts focus'. */
     bool doesnt_accept_focus;
 
+    /** The _NET_WM_WINDOW_TYPE for this window. */
+    xcb_atom_t window_type;
+
     /** Whether the window says it is a dock window */
     enum { W_NODOCK = 0,
            W_DOCK_TOP = 1,
@@ -408,6 +411,7 @@ struct Match {
     struct regex *instance;
     struct regex *mark;
     struct regex *window_role;
+    xcb_atom_t window_type;
     enum {
         U_DONTCHECK = -1,
         U_LATEST = 0,
@@ -450,7 +454,7 @@ struct Match {
 /**
  * An Assignment makes specific windows go to a specific workspace/output or
  * run a command for that window. With this mechanism, the user can -- for
- * example -- assign his browser to workspace "www". Checking if a window is
+ * example -- assign their browser to workspace "www". Checking if a window is
  * assigned works by comparing the Match data structure with the window (see
  * match_matches_window()).
  *
@@ -460,7 +464,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_TO_OUTPUT = assign the matching window to the specified output
+     * 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
@@ -471,17 +475,16 @@ struct Assignment {
         A_ANY = 0,
         A_COMMAND = (1 << 0),
         A_TO_WORKSPACE = (1 << 1),
-        A_TO_OUTPUT = (1 << 2)
+        A_NO_FOCUS = (1 << 2)
     } type;
 
     /** the criteria to check if a window matches */
     Match match;
 
-    /** destination workspace/output/command, depending on the type */
+    /** destination workspace/command, depending on the type */
     union {
         char *command;
         char *workspace;
-        char *output;
     } dest;
 
     TAILQ_ENTRY(Assignment) assignments;
@@ -546,6 +549,8 @@ struct Con {
 
     /* user-definable mark to jump to this container later */
     char *mark;
+    /* cached to decide whether a redraw is needed */
+    bool mark_changed;
 
     double percent;