summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2014-09-25 22:55:53 +0200
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2015-02-19 19:03:38 +0200
commit80eb42647212ffa1f1e4f041d905f7dc1de71152 (patch)
treef0986bca2d4aba519ac3dae98dabadae44cc1a33
parent6b750ff8e22691d8f54a56621b270411b39ded80 (diff)
downloadmetacity-80eb42647212ffa1f1e4f041d905f7dc1de71152.tar.gz
theme: Scale whitespace from theme with title_scale factor
GTK+ doesn't deal with different frame types for its client-side decorations - it just treats dialogs the same as normal windows and ignores the odder frame types like UTILITY and MENU. That's fine as those have largely gone out of fashion anyway, but it's a different case for the WM - we still have to support them somehow. For now, just apply the existing title_scale factor to the geometry information picked up from the theme in addition to the title font. If it turns out that there's demand for something more sophisticated, we can still consider adding wm-only style information to the GTK+ theme. https://bugzilla.gnome.org/show_bug.cgi?id=741917
-rw-r--r--src/ui/theme.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/ui/theme.c b/src/ui/theme.c
index 01402e47..132e70b4 100644
--- a/src/ui/theme.c
+++ b/src/ui/theme.c
@@ -641,6 +641,16 @@ get_padding_and_border (GtkStyleContext *style,
}
static void
+scale_border (GtkBorder *border,
+ double factor)
+{
+ border->left *= factor;
+ border->right *= factor;
+ border->top *= factor;
+ border->bottom *= factor;
+}
+
+static void
meta_frame_layout_sync_with_style (MetaFrameLayout *layout,
MetaStyleInfo *style_info,
MetaFrameFlags flags)
@@ -659,6 +669,7 @@ meta_frame_layout_sync_with_style (MetaFrameLayout *layout,
style = style_info->styles[META_STYLE_ELEMENT_FRAME];
get_padding_and_border (style, &border);
+ scale_border (&border, layout->title_scale);
layout->left_width = border.left;
layout->right_width = border.right;
@@ -687,6 +698,7 @@ meta_frame_layout_sync_with_style (MetaFrameLayout *layout,
layout->bottom_right_corner_rounded_radius = MAX (border_radius, max_radius);
get_padding_and_border (style, &border);
+ scale_border (&border, layout->title_scale);
layout->left_titlebar_edge = border.left;
layout->right_titlebar_edge = border.right;
layout->title_vertical_pad = border.top;
@@ -701,11 +713,13 @@ meta_frame_layout_sync_with_style (MetaFrameLayout *layout,
style = style_info->styles[META_STYLE_ELEMENT_BUTTON];
get_padding_and_border (style, &border);
+ scale_border (&border, layout->title_scale);
layout->button_width += border.left + border.right;
layout->button_height += border.top + border.bottom;
style = style_info->styles[META_STYLE_ELEMENT_IMAGE];
get_padding_and_border (style, &border);
+ scale_border (&border, layout->title_scale);
layout->button_width += border.left + border.right;
layout->button_height += border.top + border.bottom;
}