[mutter/wip/surface-content: 17/20] window: Add a simple meta_window_get_toplevel_xwindow utility



commit bb0dc968f7d70ff8cea2c6ad9e0b78c2535dbfae
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Fri Dec 6 00:57:11 2013 -0500

    window: Add a simple meta_window_get_toplevel_xwindow utility
    
    To replace all the places where we do:
    
      window->frame ? window->frame->xwindow : window->xwindow
    
    or similar...

 src/compositor/meta-window-actor.c |   19 +++----------------
 src/core/core.c                    |    3 +--
 src/core/display.c                 |    2 +-
 src/core/keybindings.c             |    4 ++--
 src/core/window-private.h          |    1 +
 src/core/window.c                  |    6 ++++++
 6 files changed, 14 insertions(+), 21 deletions(-)
---
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
index 38d1d75..a6aeeb4 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -285,11 +285,9 @@ window_decorated_notify (MetaWindow *mw,
 {
   MetaWindowActor        *self     = META_WINDOW_ACTOR (data);
   MetaWindowActorPrivate *priv     = self->priv;
-  MetaFrame              *frame    = meta_window_get_frame (mw);
   MetaScreen             *screen   = priv->screen;
   MetaDisplay            *display  = meta_screen_get_display (screen);
   Display                *xdisplay = meta_display_get_xdisplay (display);
-  Window                  new_xwindow;
 
   /*
    * Basically, we have to reconstruct the the internals of this object
@@ -297,11 +295,6 @@ window_decorated_notify (MetaWindow *mw,
    */
   priv->redecorating = TRUE;
 
-  if (frame)
-    new_xwindow = meta_frame_get_xwindow (frame);
-  else
-    new_xwindow = meta_window_get_xwindow (mw);
-
   if (!meta_is_wayland_compositor ())
     {
       meta_window_actor_detach_x11_pixmap (self);
@@ -319,7 +312,7 @@ window_decorated_notify (MetaWindow *mw,
         }
     }
 
-  priv->xwindow = new_xwindow;
+  priv->xwindow = meta_window_get_toplevel_xwindow (priv->window);
 
   /*
    * Recreate the contents.
@@ -1590,18 +1583,12 @@ meta_window_actor_new (MetaWindow *window)
   MetaCompScreen         *info = meta_screen_get_compositor_data (screen);
   MetaWindowActor        *self;
   MetaWindowActorPrivate *priv;
-  MetaFrame             *frame;
-  Window                 top_window = None;
+  Window                 top_window;
   ClutterActor           *window_group;
 
   if (window->client_type == META_WINDOW_CLIENT_TYPE_X11)
     {
-      frame = meta_window_get_frame (window);
-      if (frame)
-        top_window = meta_frame_get_xwindow (frame);
-      else
-        top_window = meta_window_get_xwindow (window);
-
+      top_window = meta_window_get_toplevel_xwindow (window);
       meta_verbose ("add window: Meta %p, xwin 0x%x\n", window, (guint)top_window);
     }
   else
diff --git a/src/core/core.c b/src/core/core.c
index b1ba70d..6840ece 100644
--- a/src/core/core.c
+++ b/src/core/core.c
@@ -283,8 +283,7 @@ meta_core_lower_beneath_grab_window (Display *xdisplay,
     return;
 
   changes.stack_mode = Below;
-  changes.sibling = grab_window->frame ? grab_window->frame->xwindow
-                                       : grab_window->xwindow;
+  changes.sibling = meta_window_get_toplevel_xwindow (grab_window);
 
   stack_window.any.type = META_WINDOW_CLIENT_TYPE_X11;
   stack_window.x11.xwindow = xwindow;
diff --git a/src/core/display.c b/src/core/display.c
index b0874af..0f20d14 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -4204,7 +4204,7 @@ meta_display_begin_grab_op (MetaDisplay *display,
    *   key grab on the RootWindow.
    */
   if (grab_window)
-    grab_xwindow = grab_window->frame ? grab_window->frame->xwindow : grab_window->xwindow;
+    grab_xwindow = meta_window_get_toplevel_xwindow (grab_window);
   else
     grab_xwindow = screen->xroot;
 
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index e699108..aa137d2 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -1277,7 +1277,7 @@ meta_window_grab_keys (MetaWindow  *window)
     }
 
   meta_window_change_keygrabs (window,
-                               window->frame ? window->frame->xwindow : window->xwindow,
+                               meta_window_get_toplevel_xwindow (window),
                                TRUE);
 
   window->keys_grabbed = TRUE;
@@ -1584,7 +1584,7 @@ meta_window_grab_all_keys (MetaWindow  *window,
               window->desc);
   meta_window_focus (window, timestamp);
 
-  grabwindow = window->frame ? window->frame->xwindow : window->xwindow;
+  grabwindow = meta_window_get_toplevel_xwindow (window);
 
   meta_topic (META_DEBUG_KEYBINDINGS,
               "Grabbing all keys on window %s\n", window->desc);
diff --git a/src/core/window-private.h b/src/core/window-private.h
index 6740a1d..0e0631a 100644
--- a/src/core/window-private.h
+++ b/src/core/window-private.h
@@ -760,5 +760,6 @@ void meta_window_ping (MetaWindow         *window,
                        void               *user_data);
 void meta_window_pong (MetaWindow *window,
                        guint32     timestamp);
+Window meta_window_get_toplevel_xwindow (MetaWindow *window);
 
 #endif
diff --git a/src/core/window.c b/src/core/window.c
index 90814fc..c352561 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -12379,3 +12379,9 @@ meta_window_ping (MetaWindow        *window,
   else
     meta_wayland_surface_ping (window->surface, timestamp);
 }
+
+Window
+meta_window_get_toplevel_xwindow (MetaWindow *window)
+{
+  return window->frame ? window->frame->xwindow : window->xwindow;
+}


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