From 7ea537fad7fc9d62c057ff33611f6827445714bb Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 6 Dec 2013 15:39:24 -0500 Subject: [PATCH] Move position-changed / size-changed signals to the MetaWindow They fit more appropriately over here... https://bugzilla.gnome.org/show_bug.cgi?id=720631 --- src/compositor/meta-window-actor.c | 37 ------------------------------ src/core/window.c | 24 +++++++++++++++++++ 2 files changed, 24 insertions(+), 37 deletions(-) diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c index db44798f6..9d6500072 100644 --- a/src/compositor/meta-window-actor.c +++ b/src/compositor/meta-window-actor.c @@ -37,15 +37,6 @@ #include "monitor-private.h" #include "meta-cullable.h" -enum { - POSITION_CHANGED, - SIZE_CHANGED, - LAST_SIGNAL -}; - -static guint signals[LAST_SIGNAL] = {0}; - - struct _MetaWindowActorPrivate { MetaWindow *window; @@ -245,19 +236,6 @@ meta_window_actor_class_init (MetaWindowActorClass *klass) g_object_class_install_property (object_class, PROP_SHADOW_CLASS, pspec); - - signals[POSITION_CHANGED] = - g_signal_new ("position-changed", - G_TYPE_FROM_CLASS (klass), - G_SIGNAL_RUN_LAST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 0); - signals[SIZE_CHANGED] = - g_signal_new ("size-changed", - G_TYPE_FROM_CLASS (klass), - G_SIGNAL_RUN_LAST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 0); } static void @@ -327,8 +305,6 @@ surface_allocation_changed_notify (ClutterActor *actor, { meta_window_actor_sync_actor_geometry (self, FALSE); meta_window_actor_update_shape (self); - - g_signal_emit (self, signals[SIZE_CHANGED], 0); } static gboolean @@ -1392,8 +1368,6 @@ meta_window_actor_sync_actor_geometry (MetaWindowActor *self, window_rect.x, window_rect.y); clutter_actor_set_size (CLUTTER_ACTOR (self), window_rect.width, window_rect.height); - - g_signal_emit (self, signals[POSITION_CHANGED], 0); } void @@ -1760,17 +1734,6 @@ check_needs_x11_pixmap (MetaWindowActor *self) g_warning ("NOTE: Not using GLX TFP!\n"); meta_surface_actor_set_texture (META_SURFACE_ACTOR (priv->surface), texture); - - /* ::size-changed is supposed to refer to meta_window_get_frame_rect(). - * Emitting it here works pretty much OK because a new value of the - * *input* rect (which is the outer rect with the addition of invisible - * borders) forces a new pixmap and we get here. In the rare case where - * a change to the window size was exactly balanced by a change to the - * invisible borders, we would miss emitting the signal. We would also - * emit spurious signals when we get a new pixmap without a new size, - * but that should be mostly harmless. - */ - g_signal_emit (self, signals[SIZE_CHANGED], 0); } priv->needs_pixmap = FALSE; diff --git a/src/core/window.c b/src/core/window.c index 5ac4b195a..dbac50751 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -215,6 +215,8 @@ enum FOCUS, RAISED, UNMANAGED, + SIZE_CHANGED, + POSITION_CHANGED, LAST_SIGNAL }; @@ -611,6 +613,22 @@ meta_window_class_init (MetaWindowClass *klass) G_STRUCT_OFFSET (MetaWindowClass, unmanaged), NULL, NULL, NULL, G_TYPE_NONE, 0); + + window_signals[POSITION_CHANGED] = + g_signal_new ("position-changed", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, NULL, + G_TYPE_NONE, 0); + + window_signals[SIZE_CHANGED] = + g_signal_new ("size-changed", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, NULL, + G_TYPE_NONE, 0); } static void @@ -5377,6 +5395,12 @@ meta_window_move_resize_internal (MetaWindow *window, else if (is_user_action) save_user_window_placement (window); + if (need_move_frame) + g_signal_emit (window, window_signals[POSITION_CHANGED], 0); + + if (need_resize_client) + g_signal_emit (window, window_signals[SIZE_CHANGED], 0); + if (need_move_frame || need_resize_frame || need_move_client || need_resize_client || did_placement || is_wayland_resize)