summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdk/win32/gdksurface-win32.c20
-rw-r--r--gdk/win32/gdksurface-win32.h4
2 files changed, 11 insertions, 13 deletions
diff --git a/gdk/win32/gdksurface-win32.c b/gdk/win32/gdksurface-win32.c
index 05bd6a8974..69b71baf13 100644
--- a/gdk/win32/gdksurface-win32.c
+++ b/gdk/win32/gdksurface-win32.c
@@ -193,8 +193,6 @@ gdk_surface_win32_finalize (GObject *object)
surface->hicon_small = NULL;
}
- g_free (surface->decorations);
-
if (surface->cache_surface)
{
cairo_surface_destroy (surface->cache_surface);
@@ -1381,9 +1379,11 @@ get_effective_window_decorations (GdkSurface *window,
*decoration = 0;
if (!GDK_IS_TOPLEVEL (window))
- {
- return FALSE;
- }
+ return FALSE;
+
+ /* we want to apply the "no decorations", if decorations are disabled */
+ if (!GDK_WIN32_SURFACE (window)->decorate_all)
+ return TRUE;
if ((impl->hint_flags & GDK_HINT_MIN_SIZE) &&
(impl->hint_flags & GDK_HINT_MAX_SIZE) &&
@@ -1779,8 +1779,7 @@ _gdk_win32_surface_lacks_wm_decorations (GdkSurface *window)
* even though GdkWMDecoration docs indicate that 0 does NOT mean
* "no decorations".
*/
- if (impl->decorations &&
- *impl->decorations == 0)
+ if (!impl->decorate_all)
return TRUE;
if (GDK_SURFACE_HWND (window) == 0)
@@ -1880,6 +1879,7 @@ _gdk_win32_surface_update_style_bits (GdkSurface *window)
if (get_effective_window_decorations (window, &decorations))
{
all = (decorations & GDK_DECOR_ALL);
+
/* Keep this in sync with the test in _gdk_win32_surface_lacks_wm_decorations() */
update_single_bit (&new_style, all, decorations & GDK_DECOR_BORDER, WS_BORDER);
update_single_bit (&new_style, all, decorations & GDK_DECOR_RESIZEH, WS_THICKFRAME);
@@ -4829,6 +4829,7 @@ gdk_win32_toplevel_set_property (GObject *object,
break;
case LAST_PROP + GDK_TOPLEVEL_PROP_DECORATED:
+ GDK_WIN32_SURFACE (surface)->decorate_all = g_value_get_boolean (value);
_gdk_win32_surface_update_style_bits (surface);
g_object_notify_by_pspec (G_OBJECT (surface), pspec);
break;
@@ -4882,10 +4883,7 @@ gdk_win32_toplevel_get_property (GObject *object,
break;
case LAST_PROP + GDK_TOPLEVEL_PROP_DECORATED:
- {
- GdkWMDecoration decorations = GDK_DECOR_ALL;
- g_value_set_boolean (value, get_effective_window_decorations (surface, &decorations));
- }
+ g_value_set_boolean (value, GDK_WIN32_SURFACE (surface)->decorate_all);
break;
case LAST_PROP + GDK_TOPLEVEL_PROP_DELETABLE:
diff --git a/gdk/win32/gdksurface-win32.h b/gdk/win32/gdksurface-win32.h
index 603401f856..5f45eb7662 100644
--- a/gdk/win32/gdksurface-win32.h
+++ b/gdk/win32/gdksurface-win32.h
@@ -337,8 +337,8 @@ struct _GdkWin32Surface
/* Also remember the same position, but in absolute form. */
GdkRectangle *snap_stash_int;
- /* Decorations set by gdk_surface_set_decorations() or NULL if unset */
- GdkWMDecoration* decorations;
+ /* Enable all decorations? */
+ gboolean decorate_all;
/* No. of windows to force layered windows off */
guint suppress_layered;