[gtk/gtk-4-2: 66/91] window: Tweak resize borders
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/gtk-4-2: 66/91] window: Tweak resize borders
- Date: Tue, 4 May 2021 02:05:42 +0000 (UTC)
commit 0b0d7d3877ac5b07908ee31223c72601665d8c8f
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Apr 21 21:09:09 2021 -0400
window: Tweak resize borders
Make windows resizable in the padding and border
area of the css box as well. This naturally makes
solid-csd borders work again.
gtk/gtkwindow.c | 29 +++++++++++++----------------
1 file changed, 13 insertions(+), 16 deletions(-)
---
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 7e66830a20..d88dcf2e4a 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -1364,10 +1364,10 @@ static void
get_box_border (GtkCssStyle *style,
GtkBorder *border)
{
- border->top = get_number (style->border->border_top_width);
- border->left = get_number (style->border->border_left_width);
- border->bottom = get_number (style->border->border_bottom_width);
- border->right = get_number (style->border->border_right_width);
+ border->top = get_number (style->border->border_top_width) + get_number (style->size->padding_top);
+ border->left = get_number (style->border->border_left_width) + get_number (style->size->padding_left);
+ border->bottom = get_number (style->border->border_bottom_width) + get_number
(style->size->padding_bottom);
+ border->right = get_number (style->border->border_right_width) + get_number (style->size->padding_right);
}
static int
@@ -1396,7 +1396,10 @@ get_edge_for_coordinates (GtkWindow *window,
return -1;
gtk_css_boxes_init (&css_boxes, GTK_WIDGET (window));
- border_rect = gtk_css_boxes_get_padding_rect (&css_boxes);
+ border_rect = gtk_css_boxes_get_content_rect (&css_boxes);
+
+ get_box_border (gtk_css_node_get_style (gtk_widget_get_css_node (GTK_WIDGET (window))),
+ &handle_size);
if (priv->use_client_shadow)
{
@@ -1405,16 +1408,10 @@ get_edge_for_coordinates (GtkWindow *window,
get_shadow_width (window, &shadow);
/* This logic is duplicated in update_realized_window_properties() */
- handle_size.left = MIN (RESIZE_HANDLE_SIZE, shadow.left);
- handle_size.top = MIN (RESIZE_HANDLE_SIZE, shadow.top);
- handle_size.right = MIN (RESIZE_HANDLE_SIZE, shadow.right);
- handle_size.bottom = MIN (RESIZE_HANDLE_SIZE, shadow.bottom);
- }
- else
- {
- /* Use border */
- get_box_border (gtk_css_node_get_style (gtk_widget_get_css_node (GTK_WIDGET (window))),
- &handle_size);
+ handle_size.left += MIN (RESIZE_HANDLE_SIZE, shadow.left);
+ handle_size.top += MIN (RESIZE_HANDLE_SIZE, shadow.top);
+ handle_size.right += MIN (RESIZE_HANDLE_SIZE, shadow.right);
+ handle_size.bottom += MIN (RESIZE_HANDLE_SIZE, shadow.bottom);
}
left = border_rect->origin.x;
@@ -4008,7 +4005,7 @@ get_shadow_width (GtkWindow *window,
if (!priv->decorated)
goto out;
- if (!priv->client_decorated &&
+ if (!priv->client_decorated ||
!(gtk_window_should_use_csd (window) &&
gtk_window_supports_client_shadow (window)))
goto out;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]