[metacity] window: add meta_window_reframe
- From: Alberts MuktupÄvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] window: add meta_window_reframe
- Date: Fri, 23 Aug 2019 11:11:05 +0000 (UTC)
commit cb91162897ded460a99fa4508623c22e176e486c
Author: Alberts MuktupÄvels <alberts muktupavels gmail com>
Date: Wed Aug 21 19:24:19 2019 +0300
window: add meta_window_reframe
src/core/window-private.h | 5 +++++
src/core/window.c | 36 ++++++++++++++++++++++++++++++++++++
2 files changed, 41 insertions(+)
---
diff --git a/src/core/window-private.h b/src/core/window-private.h
index faa546c7..7f7eb276 100644
--- a/src/core/window-private.h
+++ b/src/core/window-private.h
@@ -99,8 +99,11 @@ struct _MetaWindow
MetaScreen *screen;
MetaWorkspace *workspace;
Window xwindow;
+
/* may be NULL! not all windows get decorated */
MetaFrame *frame;
+ guint reframe_id;
+
int depth;
Visual *xvisual;
Colormap colormap;
@@ -718,6 +721,8 @@ gboolean meta_window_updates_are_frozen (MetaWindow *window);
void meta_window_update_shape_region (MetaWindow *window);
+void meta_window_reframe (MetaWindow *window);
+
G_END_DECLS
#endif
diff --git a/src/core/window.c b/src/core/window.c
index 6aea86d9..50118752 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -9203,6 +9203,24 @@ meta_window_update_shape_region (MetaWindow *window)
meta_compositor_window_shape_region_changed (window->display->compositor, window);
}
+static gboolean
+reframe_cb (gpointer user_data)
+{
+ MetaWindow *window;
+
+ window = META_WINDOW (user_data);
+ window->reframe_id = 0;
+
+ if (!window->decorated)
+ return G_SOURCE_REMOVE;
+
+ meta_window_ensure_frame (window);
+ meta_window_queue (window, META_QUEUE_MOVE_RESIZE | META_QUEUE_CALC_SHOWING);
+ g_object_notify_by_pspec (G_OBJECT (window), properties[PROP_DECORATED]);
+
+ return G_SOURCE_REMOVE;
+}
+
static void
meta_window_finalize (GObject *object)
{
@@ -9210,6 +9228,12 @@ meta_window_finalize (GObject *object)
window = META_WINDOW (object);
+ if (window->reframe_id != 0)
+ {
+ g_source_remove (window->reframe_id);
+ window->reframe_id = 0;
+ }
+
g_clear_object (&window->icon);
g_clear_object (&window->mini_icon);
@@ -9289,3 +9313,15 @@ static void
meta_window_init (MetaWindow *window)
{
}
+
+void
+meta_window_reframe (MetaWindow *window)
+{
+ if (!window->decorated)
+ return;
+
+ meta_window_destroy_frame (window);
+ meta_window_move_resize_now (window);
+
+ window->reframe_id = g_idle_add (reframe_cb, window);
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]