summarylogtreecommitdiffstats
path: root/rounded_corners.patch
diff options
context:
space:
mode:
Diffstat (limited to 'rounded_corners.patch')
-rw-r--r--rounded_corners.patch266
1 files changed, 213 insertions, 53 deletions
diff --git a/rounded_corners.patch b/rounded_corners.patch
index cba8116b706f..82b583f64e22 100644
--- a/rounded_corners.patch
+++ b/rounded_corners.patch
@@ -1,8 +1,8 @@
diff --git a/data/org.gnome.mutter.gschema.xml.in b/data/org.gnome.mutter.gschema.xml.in
-index 23fa9f3ad..7ad3f3f35 100644
+index c014b749f..f5f77c05d 100644
--- a/data/org.gnome.mutter.gschema.xml.in
+++ b/data/org.gnome.mutter.gschema.xml.in
-@@ -2,6 +2,84 @@
+@@ -10,6 +10,84 @@
<schema id="org.gnome.mutter" path="/org/gnome/mutter/"
gettext-domain="@GETTEXT_DOMAIN@">
@@ -88,12 +88,12 @@ index 23fa9f3ad..7ad3f3f35 100644
<default>'Super_L'</default>
<summary>Modifier to use for extended window management operations</summary>
diff --git a/src/compositor/compositor-private.h b/src/compositor/compositor-private.h
-index 580618e48..f62de1924 100644
+index d3b3145a3..e11efb9f6 100644
--- a/src/compositor/compositor-private.h
+++ b/src/compositor/compositor-private.h
-@@ -82,6 +82,8 @@ gboolean meta_compositor_is_switching_workspace (MetaCompositor *compositor);
-
- MetaLaters * meta_compositor_get_laters (MetaCompositor *compositor);
+@@ -77,6 +77,8 @@ gboolean meta_compositor_is_switching_workspace (MetaCompositor *compositor);
+ void meta_compositor_grab_begin (MetaCompositor *compositor);
+ void meta_compositor_grab_end (MetaCompositor *compositor);
+void meta_compositor_update_blur_behind(MetaCompositor *compositor);
+
@@ -101,7 +101,7 @@ index 580618e48..f62de1924 100644
* This function takes a 64 bit time stamp from the monotonic clock, and clamps
* it to the scope of the X server clock, without losing the granularity.
diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c
-index 9cdd39c15..c55366fb2 100644
+index 1576ce551..dec3d63d5 100644
--- a/src/compositor/compositor.c
+++ b/src/compositor/compositor.c
@@ -85,6 +85,8 @@
@@ -113,7 +113,7 @@ index 9cdd39c15..c55366fb2 100644
enum
{
PROP_0,
-@@ -618,6 +620,10 @@ meta_compositor_add_window (MetaCompositor *compositor,
+@@ -512,6 +514,10 @@ meta_compositor_add_window (MetaCompositor *compositor,
* before we first paint.
*/
priv->windows = g_list_append (priv->windows, window_actor);
@@ -124,7 +124,7 @@ index 9cdd39c15..c55366fb2 100644
sync_actor_stacking (compositor);
}
-@@ -664,6 +670,7 @@ meta_compositor_queue_frame_drawn (MetaCompositor *compositor,
+@@ -558,6 +564,7 @@ meta_compositor_queue_frame_drawn (MetaCompositor *compositor,
MetaWindowActor *window_actor = meta_window_actor_from_window (window);
meta_window_actor_queue_frame_drawn (window_actor, no_delay_frame);
@@ -132,7 +132,7 @@ index 9cdd39c15..c55366fb2 100644
}
void
-@@ -995,6 +1002,20 @@ meta_compositor_sync_stack (MetaCompositor *compositor,
+@@ -889,6 +896,20 @@ meta_compositor_sync_stack (MetaCompositor *compositor,
sync_actor_stacking (compositor);
@@ -153,7 +153,7 @@ index 9cdd39c15..c55366fb2 100644
top_window_actor = get_top_visible_window_actor (compositor);
if (priv->top_window_actor == top_window_actor)
-@@ -1025,7 +1046,17 @@ meta_compositor_sync_window_geometry (MetaCompositor *compositor,
+@@ -919,7 +940,17 @@ meta_compositor_sync_window_geometry (MetaCompositor *compositor,
changes = meta_window_actor_sync_actor_geometry (window_actor, did_placement);
if (changes & META_WINDOW_ACTOR_CHANGE_SIZE)
@@ -171,7 +171,7 @@ index 9cdd39c15..c55366fb2 100644
}
static void
-@@ -1191,6 +1222,45 @@ meta_compositor_get_property (GObject *object,
+@@ -1085,6 +1116,45 @@ meta_compositor_get_property (GObject *object,
}
}
@@ -217,7 +217,7 @@ index 9cdd39c15..c55366fb2 100644
static void
meta_compositor_init (MetaCompositor *compositor)
{
-@@ -1221,6 +1291,8 @@ meta_compositor_constructed (GObject *object)
+@@ -1115,6 +1185,8 @@ meta_compositor_constructed (GObject *object)
priv->laters = meta_laters_new (compositor);
@@ -226,8 +226,8 @@ index 9cdd39c15..c55366fb2 100644
G_OBJECT_CLASS (meta_compositor_parent_class)->constructed (object);
}
-@@ -1246,6 +1318,8 @@ meta_compositor_dispose (GObject *object)
- g_clear_pointer (&priv->feedback_group, clutter_actor_destroy);
+@@ -1134,6 +1206,8 @@ meta_compositor_dispose (GObject *object)
+
g_clear_pointer (&priv->windows, g_list_free);
+ meta_prefs_remove_listener(prefs_changed_cb, compositor);
@@ -235,7 +235,7 @@ index 9cdd39c15..c55366fb2 100644
G_OBJECT_CLASS (meta_compositor_parent_class)->dispose (object);
}
-@@ -1579,3 +1653,20 @@ meta_compositor_get_laters (MetaCompositor *compositor)
+@@ -1477,3 +1551,20 @@ meta_compositor_get_laters (MetaCompositor *compositor)
return priv->laters;
}
@@ -257,10 +257,10 @@ index 9cdd39c15..c55366fb2 100644
+ }
+}
diff --git a/src/compositor/meta-window-actor-private.h b/src/compositor/meta-window-actor-private.h
-index adae06547..eea31fa41 100644
+index 138ce2c83..abcd695a9 100644
--- a/src/compositor/meta-window-actor-private.h
+++ b/src/compositor/meta-window-actor-private.h
-@@ -102,4 +102,15 @@ void meta_window_actor_update_regions (MetaWindowActor *self);
+@@ -106,4 +106,15 @@ void meta_window_actor_update_regions (MetaWindowActor *self);
gboolean meta_window_actor_can_freeze_commits (MetaWindowActor *self);
@@ -277,7 +277,7 @@ index adae06547..eea31fa41 100644
+void meta_window_actor_update_blur_window_opacity (MetaWindowActor *self);
#endif /* META_WINDOW_ACTOR_PRIVATE_H */
diff --git a/src/compositor/meta-window-actor-wayland.c b/src/compositor/meta-window-actor-wayland.c
-index bdc5c5a53..4e8418334 100644
+index 468229751..eefd9c26b 100644
--- a/src/compositor/meta-window-actor-wayland.c
+++ b/src/compositor/meta-window-actor-wayland.c
@@ -24,10 +24,36 @@
@@ -317,8 +317,8 @@ index bdc5c5a53..4e8418334 100644
};
G_DEFINE_TYPE (MetaWindowActorWayland, meta_window_actor_wayland, META_TYPE_WINDOW_ACTOR)
-@@ -88,18 +114,54 @@ meta_window_actor_wayland_rebuild_surface_tree (MetaWindowActor *actor)
- &traverse_data);
+@@ -104,18 +130,54 @@ meta_window_actor_wayland_get_topmost_surface (MetaWindowActor *actor)
+ return NULL;
}
+static void
@@ -372,7 +372,7 @@ index bdc5c5a53..4e8418334 100644
}
static void
-@@ -115,10 +177,287 @@ meta_window_actor_wayland_queue_frame_drawn (MetaWindowActor *actor,
+@@ -131,10 +193,287 @@ meta_window_actor_wayland_queue_frame_drawn (MetaWindowActor *actor,
{
}
@@ -660,7 +660,7 @@ index bdc5c5a53..4e8418334 100644
}
static void
-@@ -149,12 +488,29 @@ meta_window_actor_wayland_can_freeze_commits (MetaWindowActor *actor)
+@@ -165,12 +504,29 @@ meta_window_actor_wayland_can_freeze_commits (MetaWindowActor *actor)
return FALSE;
}
@@ -690,10 +690,11 @@ index bdc5c5a53..4e8418334 100644
g_autoptr (GList) children = NULL;
GList *l;
-@@ -167,7 +523,19 @@ meta_window_actor_wayland_dispose (GObject *object)
+@@ -183,7 +539,19 @@ meta_window_actor_wayland_dispose (GObject *object)
child_actor != CLUTTER_ACTOR (surface_actor))
clutter_actor_remove_child (CLUTTER_ACTOR (window_actor), child_actor);
}
+-
+
+ g_clear_pointer (&actor_wayland->shape_region, cairo_region_destroy);
+ g_clear_pointer (&actor_wayland->shadow_clip, cairo_region_destroy);
@@ -702,7 +703,7 @@ index bdc5c5a53..4e8418334 100644
+ g_clear_pointer (&actor_wayland->focused_shadow, meta_shadow_unref);
+ g_clear_pointer (&actor_wayland->unfocused_shadow, meta_shadow_unref);
+ g_clear_pointer (&actor_wayland->shadow_shape, meta_window_shape_unref);
-
++
+ g_clear_signal_handler (&actor_wayland->size_changed_id, surface_actor);
+ g_clear_signal_handler (&actor_wayland->repaint_scheduled_id, surface_actor);
+ g_clear_signal_handler (&actor_wayland->shadow_factory_changed_handler_id,
@@ -710,15 +711,15 @@ index bdc5c5a53..4e8418334 100644
G_OBJECT_CLASS (meta_window_actor_wayland_parent_class)->dispose (object);
}
-@@ -175,6 +543,7 @@ static void
+@@ -191,6 +559,7 @@ static void
meta_window_actor_wayland_class_init (MetaWindowActorWaylandClass *klass)
{
MetaWindowActorClass *window_actor_class = META_WINDOW_ACTOR_CLASS (klass);
+ ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- window_actor_class->assign_surface_actor = meta_window_actor_wayland_assign_surface_actor;
-@@ -187,10 +556,19 @@ meta_window_actor_wayland_class_init (MetaWindowActorWaylandClass *klass)
+ window_actor_class->get_topmost_surface = meta_window_actor_wayland_get_topmost_surface;
+@@ -204,10 +573,19 @@ meta_window_actor_wayland_class_init (MetaWindowActorWaylandClass *klass)
window_actor_class->update_regions = meta_window_actor_wayland_update_regions;
window_actor_class->can_freeze_commits = meta_window_actor_wayland_can_freeze_commits;
@@ -854,7 +855,7 @@ index 9e64462ea..7c003a342 100644
/* The frame bounds are already subtracted from actor_x11->shadow_clip
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
-index b32df2010..012b67c2b 100644
+index 9cee56a37..de5775768 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -41,6 +41,9 @@
@@ -883,7 +884,7 @@ index b32df2010..012b67c2b 100644
int geometry_scale;
/*
-@@ -119,6 +131,246 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (MetaWindowActor, meta_window_actor, CLUTTER_TY
+@@ -121,6 +133,246 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (MetaWindowActor, meta_window_actor, CLUTTER_TY
G_IMPLEMENT_INTERFACE (META_TYPE_CULLABLE, cullable_iface_init)
G_IMPLEMENT_INTERFACE (META_TYPE_SCREEN_CAST_WINDOW, screen_cast_window_iface_init));
@@ -1130,7 +1131,7 @@ index b32df2010..012b67c2b 100644
static void
meta_window_actor_class_init (MetaWindowActorClass *klass)
{
-@@ -216,6 +468,11 @@ meta_window_actor_init (MetaWindowActor *self)
+@@ -219,6 +471,11 @@ meta_window_actor_init (MetaWindowActor *self)
meta_window_actor_get_instance_private (self);
priv->geometry_scale = 1;
@@ -1142,7 +1143,7 @@ index b32df2010..012b67c2b 100644
}
static void
-@@ -368,6 +625,11 @@ meta_window_actor_real_assign_surface_actor (MetaWindowActor *self,
+@@ -371,6 +628,11 @@ meta_window_actor_real_assign_surface_actor (MetaWindowActor *self,
meta_window_actor_set_frozen (self, TRUE);
else
meta_window_actor_sync_thawed_state (self);
@@ -1154,7 +1155,7 @@ index b32df2010..012b67c2b 100644
}
void
-@@ -399,6 +661,32 @@ init_surface_actor (MetaWindowActor *self)
+@@ -402,6 +664,32 @@ init_surface_actor (MetaWindowActor *self)
meta_window_actor_assign_surface_actor (self, surface_actor);
}
@@ -1187,7 +1188,7 @@ index b32df2010..012b67c2b 100644
static void
meta_window_actor_constructed (GObject *object)
{
-@@ -406,6 +694,7 @@ meta_window_actor_constructed (GObject *object)
+@@ -409,6 +697,7 @@ meta_window_actor_constructed (GObject *object)
MetaWindowActorPrivate *priv =
meta_window_actor_get_instance_private (self);
MetaWindow *window = priv->window;
@@ -1195,7 +1196,7 @@ index b32df2010..012b67c2b 100644
priv->compositor = window->display->compositor;
-@@ -424,6 +713,15 @@ meta_window_actor_constructed (GObject *object)
+@@ -427,6 +716,15 @@ meta_window_actor_constructed (GObject *object)
priv->first_frame_state = DRAWING_FIRST_FRAME;
meta_window_actor_sync_actor_geometry (self, priv->window->placed);
@@ -1211,7 +1212,7 @@ index b32df2010..012b67c2b 100644
}
static void
-@@ -442,6 +740,7 @@ meta_window_actor_dispose (GObject *object)
+@@ -445,6 +743,7 @@ meta_window_actor_dispose (GObject *object)
priv->disposed = TRUE;
@@ -1219,7 +1220,7 @@ index b32df2010..012b67c2b 100644
meta_compositor_remove_window_actor (compositor, self);
g_clear_object (&priv->window);
-@@ -470,6 +769,8 @@ meta_window_actor_set_property (GObject *object,
+@@ -473,6 +772,8 @@ meta_window_actor_set_property (GObject *object,
{
case PROP_META_WINDOW:
priv->window = g_value_dup_object (value);
@@ -1228,7 +1229,7 @@ index b32df2010..012b67c2b 100644
g_signal_connect_object (priv->window, "notify::appears-focused",
G_CALLBACK (window_appears_focused_notify), self, 0);
break;
-@@ -588,6 +889,7 @@ meta_window_actor_effect_in_progress (MetaWindowActor *self)
+@@ -603,6 +904,7 @@ meta_window_actor_effect_in_progress (MetaWindowActor *self)
meta_window_actor_get_instance_private (self);
return (priv->minimize_in_progress ||
@@ -1236,7 +1237,7 @@ index b32df2010..012b67c2b 100644
priv->size_change_in_progress ||
priv->map_in_progress ||
priv->destroy_in_progress);
-@@ -606,6 +908,47 @@ is_freeze_thaw_effect (MetaPluginEffect event)
+@@ -621,6 +923,47 @@ is_freeze_thaw_effect (MetaPluginEffect event)
}
}
@@ -1284,7 +1285,7 @@ index b32df2010..012b67c2b 100644
static gboolean
start_simple_effect (MetaWindowActor *self,
MetaPluginEffect event)
-@@ -625,15 +968,33 @@ start_simple_effect (MetaWindowActor *self,
+@@ -640,15 +983,33 @@ start_simple_effect (MetaWindowActor *self,
case META_PLUGIN_NONE:
return FALSE;
case META_PLUGIN_MINIMIZE:
@@ -1318,7 +1319,7 @@ index b32df2010..012b67c2b 100644
counter = &priv->destroy_in_progress;
break;
case META_PLUGIN_SIZE_CHANGE:
-@@ -682,6 +1043,7 @@ meta_window_actor_after_effects (MetaWindowActor *self)
+@@ -697,6 +1058,7 @@ meta_window_actor_after_effects (MetaWindowActor *self)
g_signal_emit (self, signals[EFFECTS_COMPLETED], 0);
meta_window_actor_sync_visibility (self);
meta_window_actor_sync_actor_geometry (self, FALSE);
@@ -1326,7 +1327,7 @@ index b32df2010..012b67c2b 100644
}
clutter_stage_repick_device (stage, clutter_seat_get_pointer (seat));
-@@ -803,6 +1165,19 @@ meta_window_actor_queue_destroy (MetaWindowActor *self)
+@@ -818,6 +1180,19 @@ meta_window_actor_queue_destroy (MetaWindowActor *self)
clutter_actor_destroy (CLUTTER_ACTOR (self));
}
@@ -1346,7 +1347,7 @@ index b32df2010..012b67c2b 100644
MetaWindowActorChanges
meta_window_actor_sync_actor_geometry (MetaWindowActor *self,
gboolean did_placement)
-@@ -1031,7 +1406,7 @@ meta_window_actor_sync_visibility (MetaWindowActor *self)
+@@ -1046,7 +1421,7 @@ meta_window_actor_sync_visibility (MetaWindowActor *self)
if (CLUTTER_ACTOR_IS_VISIBLE (self) != priv->visible)
{
@@ -1700,10 +1701,10 @@ index 536d9dd57..29bddc170 100644
+ return FALSE;
+}
diff --git a/src/meson.build b/src/meson.build
-index f3aebfb28..cf9cf4b61 100644
+index 7b456f524..35d4b07aa 100644
--- a/src/meson.build
+++ b/src/meson.build
-@@ -169,6 +169,18 @@ if get_option('verbose')
+@@ -174,6 +174,18 @@ if get_option('verbose')
]
endif
@@ -1722,7 +1723,7 @@ index f3aebfb28..cf9cf4b61 100644
mutter_sources = [
'backends/edid.h',
'backends/edid-parse.c',
-@@ -458,6 +470,8 @@ mutter_sources = [
+@@ -463,6 +475,8 @@ mutter_sources = [
'x11/window-x11-private.h',
'x11/xprops.c',
'x11/xprops.h',
@@ -1730,8 +1731,8 @@ index f3aebfb28..cf9cf4b61 100644
+ 'meta_clip_effect.h',
]
- if have_egl
-@@ -993,7 +1007,8 @@ subdir('meta')
+ if have_egl_device
+@@ -1017,7 +1031,8 @@ subdir('meta')
mutter_built_sources += mutter_enum_types
libmutter = shared_library(libmutter_name,
@@ -1797,7 +1798,7 @@ index 227de68bf..7d5d8f347 100644
* MetaKeyBindingAction:
* @META_KEYBINDING_ACTION_NONE: FILLME
diff --git a/src/ui/frames.c b/src/ui/frames.c
-index 48b2a361c..8be6a8f8b 100644
+index cf90d477b..f82d653fd 100644
--- a/src/ui/frames.c
+++ b/src/ui/frames.c
@@ -711,6 +711,27 @@ meta_ui_frame_get_bounds (MetaUIFrame *frame)
@@ -1829,10 +1830,10 @@ index 48b2a361c..8be6a8f8b 100644
meta_ui_frame_move_resize (MetaUIFrame *frame,
int x, int y, int width, int height)
diff --git a/src/ui/frames.h b/src/ui/frames.h
-index d81be1c72..c32a93d99 100644
+index 89b399265..8262f0446 100644
--- a/src/ui/frames.h
+++ b/src/ui/frames.h
-@@ -134,6 +134,10 @@ void meta_ui_frame_get_borders (MetaUIFrame *frame,
+@@ -139,6 +139,10 @@ void meta_ui_frame_get_borders (MetaUIFrame *frame,
cairo_region_t * meta_ui_frame_get_bounds (MetaUIFrame *frame);
@@ -1843,11 +1844,170 @@ index d81be1c72..c32a93d99 100644
void meta_ui_frame_get_mask (MetaUIFrame *frame,
cairo_rectangle_int_t *frame_rect,
cairo_t *cr);
+diff --git a/src/ui/frames.h.orig b/src/ui/frames.h.orig
+new file mode 100644
+index 000000000..89b399265
+--- /dev/null
++++ b/src/ui/frames.h.orig
+@@ -0,0 +1,153 @@
++/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
++
++/* Metacity window frame manager widget */
++
++/*
++ * Copyright (C) 2001 Havoc Pennington
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of the
++ * License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, see <http://www.gnu.org/licenses/>.
++ */
++
++#ifndef META_FRAMES_H
++#define META_FRAMES_H
++
++#include <gtk/gtk.h>
++#include <gdk/gdkx.h>
++
++#include "meta/common.h"
++#include "meta/types.h"
++#include "ui/theme-private.h"
++#include "ui/ui.h"
++
++typedef enum
++{
++ META_FRAME_CONTROL_NONE,
++ META_FRAME_CONTROL_TITLE,
++ META_FRAME_CONTROL_DELETE,
++ META_FRAME_CONTROL_MENU,
++ META_FRAME_CONTROL_MINIMIZE,
++ META_FRAME_CONTROL_MAXIMIZE,
++ META_FRAME_CONTROL_UNMAXIMIZE,
++ META_FRAME_CONTROL_RESIZE_SE,
++ META_FRAME_CONTROL_RESIZE_S,
++ META_FRAME_CONTROL_RESIZE_SW,
++ META_FRAME_CONTROL_RESIZE_N,
++ META_FRAME_CONTROL_RESIZE_NE,
++ META_FRAME_CONTROL_RESIZE_NW,
++ META_FRAME_CONTROL_RESIZE_W,
++ META_FRAME_CONTROL_RESIZE_E,
++ META_FRAME_CONTROL_CLIENT_AREA
++} MetaFrameControl;
++
++/* This is one widget that manages all the window frames
++ * as subwindows.
++ */
++
++#define META_TYPE_FRAMES (meta_frames_get_type ())
++#define META_FRAMES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_FRAMES, MetaFrames))
++#define META_FRAMES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_FRAMES, MetaFramesClass))
++#define META_IS_FRAMES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_FRAMES))
++#define META_IS_FRAMES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_FRAMES))
++#define META_FRAMES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_FRAMES, MetaFramesClass))
++
++typedef struct _MetaFrames MetaFrames;
++typedef struct _MetaFramesClass MetaFramesClass;
++
++struct _MetaUIFrame
++{
++ MetaFrames *frames;
++ MetaWindow *meta_window;
++ Window xwindow;
++ GdkWindow *window;
++ MetaStyleInfo *style_info;
++ MetaFrameLayout *cache_layout;
++ PangoLayout *text_layout;
++ int text_height;
++ char *title; /* NULL once we have a layout */
++ guint maybe_ignore_leave_notify : 1;
++
++ /* FIXME get rid of this, it can just be in the MetaFrames struct */
++ MetaFrameControl prelit_control;
++ MetaButtonState button_state;
++ int grab_button;
++
++ gboolean is_frozen;
++};
++
++struct _MetaFrames
++{
++ GtkWindow parent_instance;
++
++ MetaX11Display *x11_display;
++
++ GHashTable *text_heights;
++
++ GHashTable *frames;
++
++ MetaStyleInfo *normal_style;
++ GHashTable *style_variants;
++
++ MetaGrabOp current_grab_op;
++ MetaUIFrame *grab_frame;
++ guint grab_button;
++ gdouble grab_x;
++ gdouble grab_y;
++
++ ClutterEventSequence *grab_touch;
++
++ float last_click_x;
++ float last_click_y;
++ uint32_t last_click_time;
++ int click_count;
++};
++
++struct _MetaFramesClass
++{
++ GtkWindowClass parent_class;
++
++};
++
++GType meta_frames_get_type (void) G_GNUC_CONST;
++
++MetaFrames * meta_frames_new (MetaX11Display *x11_display);
++
++MetaUIFrame * meta_frames_manage_window (MetaFrames *frames,
++ MetaWindow *meta_window,
++ Window xwindow,
++ GdkWindow *window);
++
++void meta_ui_frame_unmanage (MetaUIFrame *frame);
++
++void meta_ui_frame_set_title (MetaUIFrame *frame,
++ const char *title);
++
++void meta_ui_frame_update_style (MetaUIFrame *frame);
++
++void meta_ui_frame_get_borders (MetaUIFrame *frame,
++ MetaFrameBorders *borders);
++
++cairo_region_t * meta_ui_frame_get_bounds (MetaUIFrame *frame);
++
++void meta_ui_frame_get_mask (MetaUIFrame *frame,
++ cairo_rectangle_int_t *frame_rect,
++ cairo_t *cr);
++
++void meta_ui_frame_move_resize (MetaUIFrame *frame,
++ int x, int y, int width, int height);
++
++void meta_ui_frame_queue_draw (MetaUIFrame *frame);
++
++gboolean meta_ui_frame_handle_event (MetaUIFrame *frame, const ClutterEvent *event);
++
++#endif
diff --git a/src/wayland/meta-window-wayland.c b/src/wayland/meta-window-wayland.c
-index 12e9567d9..7138330bc 100644
+index 2b389bfbf..cbd04cc41 100644
--- a/src/wayland/meta-window-wayland.c
+++ b/src/wayland/meta-window-wayland.c
-@@ -1002,6 +1002,9 @@ meta_window_wayland_finish_move_resize (MetaWindow *window,
+@@ -1073,6 +1073,9 @@ meta_window_wayland_finish_move_resize (MetaWindow *window,
gravity = META_GRAVITY_STATIC;
meta_window_move_resize_internal (window, flags, gravity, rect);