summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2014-10-01 05:44:19 +0200
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2015-02-19 18:38:53 +0200
commitdf22e3a04f54c3bde32b948b91a8c00089255564 (patch)
treeac2fb621f7bea8fd7195853951618455cc4668cc
parentb6e140de066df0690b2aa0fc8f0e1734731d5445 (diff)
downloadmetacity-df22e3a04f54c3bde32b948b91a8c00089255564.tar.gz
theme: Add titlebar_spacing
Rather than defining the space to the left and right of buttons, add a simple spacing property that defines the space between buttons, which is what GTK+ does for client-side decorations (e.g. GtkButtons in a GtkBox). Unfortunately the value is hardcoded in GTK+; if it is exposed in the theme in the future, we should pick it up from there, but for now we just use the same value as GTK+. https://bugzilla.gnome.org/show_bug.cgi?id=741917 NOTE: Updated for metacity.
-rw-r--r--src/ui/theme.c58
-rw-r--r--src/ui/theme.h3
2 files changed, 52 insertions, 9 deletions
diff --git a/src/ui/theme.c b/src/ui/theme.c
index af65681f..d77f31da 100644
--- a/src/ui/theme.c
+++ b/src/ui/theme.c
@@ -236,6 +236,10 @@ meta_frame_layout_new (void)
layout->button_width = -1;
layout->button_height = -1;
+ /* Spacing as hardcoded in GTK+:
+ * https://git.gnome.org/browse/gtk+/tree/gtk/gtkheaderbar.c?h=gtk-3-14#n53
+ */
+ layout->titlebar_spacing = 6;
layout->has_title = TRUE;
layout->title_scale = 1.0;
@@ -778,13 +782,23 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
space_used_by_buttons += button_width * n_left;
space_used_by_buttons += (button_width * 0.75) * n_left_spacers;
- space_used_by_buttons += layout->button_border.left * n_left;
- space_used_by_buttons += layout->button_border.right * n_left;
+ if (meta_prefs_get_theme ())
+ {
+ space_used_by_buttons += layout->button_border.left * n_left;
+ space_used_by_buttons += layout->button_border.right * n_left;
+ }
+ else
+ space_used_by_buttons += layout->titlebar_spacing * MAX (n_left - 1, 0);
space_used_by_buttons += button_width * n_right;
space_used_by_buttons += (button_width * 0.75) * n_right_spacers;
- space_used_by_buttons += layout->button_border.left * n_right;
- space_used_by_buttons += layout->button_border.right * n_right;
+ if (meta_prefs_get_theme ())
+ {
+ space_used_by_buttons += layout->button_border.left * n_right;
+ space_used_by_buttons += layout->button_border.right * n_right;
+ }
+ else
+ space_used_by_buttons += layout->titlebar_spacing * MAX (n_right - 1, 0);
if (space_used_by_buttons <= space_available)
break; /* Everything fits, bail out */
@@ -881,7 +895,10 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
break;
rect = right_func_rects[i];
- rect->visible.x = x - layout->button_border.right - button_width;
+ if (meta_prefs_get_theme ())
+ rect->visible.x = x - layout->button_border.right - button_width;
+ else
+ rect->visible.x = x - button_width;
if (right_buttons_has_spacer[i])
rect->visible.x -= (button_width * 0.75);
@@ -899,7 +916,12 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
rect->clickable.height = button_height;
if (i == n_right - 1)
- rect->clickable.width += layout->right_titlebar_edge + layout->right_width + layout->button_border.right;
+ {
+ if (meta_prefs_get_theme ())
+ rect->clickable.width += layout->right_titlebar_edge + layout->right_width + layout->button_border.right;
+ else
+ rect->clickable.width += layout->right_titlebar_edge + layout->right_width;
+ }
}
else
@@ -907,7 +929,15 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
*(right_bg_rects[i]) = rect->visible;
- x = rect->visible.x - layout->button_border.left;
+ if (meta_prefs_get_theme ())
+ x = rect->visible.x - layout->button_border.left;
+ else
+ {
+ x = rect->visible.x;
+
+ if (i > 0)
+ x -= layout->titlebar_spacing;
+ }
--i;
}
@@ -925,7 +955,10 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
rect = left_func_rects[i];
- rect->visible.x = x + layout->button_border.left;
+ if (meta_prefs_get_theme ())
+ rect->visible.x = x + layout->button_border.left;
+ else
+ rect->visible.x = x;
rect->visible.y = button_y;
rect->visible.width = button_width;
rect->visible.height = button_height;
@@ -940,7 +973,14 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
else
g_memmove (&(rect->clickable), &(rect->visible), sizeof(rect->clickable));
- x = rect->visible.x + rect->visible.width + layout->button_border.right;
+ if (meta_prefs_get_theme ())
+ x = rect->visible.x + rect->visible.width + layout->button_border.right;
+ else
+ {
+ x = rect->visible.x + rect->visible.width;
+ if (i < n_left - 1)
+ x += layout->titlebar_spacing;
+ }
if (left_buttons_has_spacer[i])
x += (button_width * 0.75);
diff --git a/src/ui/theme.h b/src/ui/theme.h
index b4eca89e..ffec77c5 100644
--- a/src/ui/theme.h
+++ b/src/ui/theme.h
@@ -131,6 +131,9 @@ struct _MetaFrameLayout
/** Space around buttons */
GtkBorder button_border;
+ /** Space between titlebar elements */
+ guint titlebar_spacing;
+
/** scale factor for title text */
double title_scale;