[metacity] window-props: update reload_net_wm_window_type



commit 3a207e479b9bba2cece9838121cee300c6c7c693
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Sun Feb 26 21:14:05 2017 +0200

    window-props: update reload_net_wm_window_type
    
    Commit a91fda7881f6b038abd8f2a27e326811da6e0b65 did not include all
    changes from mutter commit a7b7213017441ecc9e44872e2d67f783a4fdefa5.

 src/core/window-props.c |   73 ++++++++++++++++------------------------------
 1 files changed, 26 insertions(+), 47 deletions(-)
---
diff --git a/src/core/window-props.c b/src/core/window-props.c
index 203a9e7..136311d 100644
--- a/src/core/window-props.c
+++ b/src/core/window-props.c
@@ -226,59 +226,38 @@ reload_net_wm_window_type (MetaWindow    *window,
                            MetaPropValue *value,
                            gboolean       initial)
 {
-  int n_atoms;
-  Atom *atoms;
-  int i;
-
   window->type_atom = None;
-  n_atoms = 0;
-  atoms = NULL;
-
-  meta_prop_get_atom_list (window->display, window->xwindow,
-                           window->display->atom__NET_WM_WINDOW_TYPE,
-                           &atoms, &n_atoms);
-
-  i = 0;
-  while (i < n_atoms)
-    {
-      /* We break as soon as we find one we recognize,
-       * supposed to prefer those near the front of the list
-       */
-      if (atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_DESKTOP ||
-          atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_DOCK ||
-          atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_TOOLBAR ||
-          atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_MENU ||
-          atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_DIALOG ||
-          atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_NORMAL ||
-          atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_UTILITY ||
-          atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_SPLASH)
-        {
-          window->type_atom = atoms[i];
-          break;
-        }
-
-      ++i;
-    }
-
-  meta_XFree (atoms);
 
-  if (meta_is_verbose ())
+  if (value->type != META_PROP_VALUE_INVALID)
     {
-      char *str;
+      int i;
 
-      str = NULL;
-      if (window->type_atom != None)
+      for (i = 0; i < value->v.atom_list.n_atoms; i++)
         {
-          meta_error_trap_push (window->display);
-          str = XGetAtomName (window->display->xdisplay, window->type_atom);
-          meta_error_trap_pop (window->display);
-        }
+          Atom atom = value->v.atom_list.atoms[i];
 
-      meta_verbose ("Window %s type atom %s\n", window->desc,
-                    str ? str : "(none)");
-
-      if (str)
-        meta_XFree (str);
+          /* We break as soon as we find one we recognize,
+           * supposed to prefer those near the front of the list
+           */
+          if (atom == window->display->atom__NET_WM_WINDOW_TYPE_DESKTOP ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_DOCK ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_TOOLBAR ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_MENU ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_UTILITY ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_SPLASH ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_DIALOG ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_DROPDOWN_MENU ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_POPUP_MENU ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_TOOLTIP ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_NOTIFICATION ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_COMBO ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_DND ||
+              atom == window->display->atom__NET_WM_WINDOW_TYPE_NORMAL)
+            {
+              window->type_atom = atom;
+              break;
+            }
+        }
     }
 
   meta_window_recalc_window_type (window);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]