diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c index 309193bcf..788b6d91f 100644 --- a/src/compositor/meta-window-actor.c +++ b/src/compositor/meta-window-actor.c @@ -309,11 +309,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 @@ -321,11 +319,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); @@ -343,7 +336,7 @@ window_decorated_notify (MetaWindow *mw, } } - priv->xwindow = new_xwindow; + priv->xwindow = meta_window_get_toplevel_xwindow (priv->window); /* * Recreate the contents. @@ -1677,18 +1670,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 b1ba70dc1..6840ece87 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 b0874af37..0f20d143b 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 e69910842..aa137d20b 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 307129c9b..485c495ed 100644 --- a/src/core/window-private.h +++ b/src/core/window-private.h @@ -754,5 +754,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 e13e0a70f..1a65ea6a1 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -12343,3 +12343,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; +}