From e81a90c4324caacc2668586d2014db57b936b049 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberts=20Muktup=C4=81vels?= Date: Sat, 30 Nov 2019 20:19:26 +0200 Subject: [PATCH] window: fix opaque region Decoration node for drawing is used only for client side decorated windows, but corners from opaque region is subtracted also for normal windows. Rename function to better reflect what it does and do not subtract corners if decoration node was not used for drawing. --- gtk/gtkwindow.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 24ced0c171..9e056fe774 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -5420,14 +5420,20 @@ corner_rect (cairo_rectangle_int_t *rect, } static void -subtract_corners_from_region (cairo_region_t *region, - cairo_rectangle_int_t *extents, - GtkStyleContext *context, - GtkWindow *window) +subtract_decoration_corners_from_region (cairo_region_t *region, + cairo_rectangle_int_t *extents, + GtkStyleContext *context, + GtkWindow *window) { GtkWindowPrivate *priv = gtk_window_get_instance_private (window); cairo_rectangle_int_t rect; + if (!priv->client_decorated || + !priv->decorated || + priv->fullscreen || + priv->maximized) + return; + gtk_style_context_save_to_node (context, priv->decoration_node); corner_rect (&rect, _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS)); @@ -5485,7 +5491,7 @@ update_opaque_region (GtkWindow *window, opaque_region = cairo_region_create_rectangle (&rect); - subtract_corners_from_region (opaque_region, &rect, context, window); + subtract_decoration_corners_from_region (opaque_region, &rect, context, window); } else {