[mutter/wip/gtk-theming: 12/20] theme: Scale whitespace from theme with title_scale factor



commit 5b75b3a66f6acb8fb645994a52ca3df4deb4ae05
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu Sep 25 22:55:53 2014 +0200

    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.

 src/ui/theme.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)
---
diff --git a/src/ui/theme.c b/src/ui/theme.c
index 70451a7..9ecce8e 100644
--- a/src/ui/theme.c
+++ b/src/ui/theme.c
@@ -540,6 +540,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)
@@ -554,6 +564,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;
@@ -576,6 +587,7 @@ meta_frame_layout_sync_with_style (MetaFrameLayout *layout,
   layout->bottom_right_corner_rounded_radius = border_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;
@@ -590,11 +602,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;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]