headerbar: Remove spacing property

Replace it with border-spacing in css
This commit is contained in:
Timm Bäder 2019-09-13 10:40:26 +02:00
parent f0266cbef3
commit 097f3c9514
2 changed files with 31 additions and 26 deletions

View File

@ -65,9 +65,30 @@
* For these reasons, GtkHeaderBar is the natural choice for use as the custom
* titlebar widget of a #GtkWindow (see gtk_window_set_titlebar()), as it gives
* features typical of titlebars while allowing the addition of child widgets.
*
* # CSS nodes
*
* |[<!-- language="plain" -->
* headerbar
* box.start
* box
* [image.titlebutton.icon]
* [menubutton.titlebutton.appmenu]
* [button.titlebutton.minimize]
* [button.titlebutton.maximize]
* [button.titlebutton.close]
* [Custom Title]
* box.end
* ]|
*
* A #GtkHeaderBar's CSS node is called headerbar. It contains two box subnodes at the start
* and end of the headerbar, as well as a center node that represents the title.
*
* The titlebuttons get their own box subnode, either in the start box or in the end box.
* Which of the title buttons exist and where they are placed exactly depends on the
* desktop environment.
*/
#define DEFAULT_SPACING 6
#define MIN_TITLE_CHARS 5
typedef struct _GtkHeaderBarPrivate GtkHeaderBarPrivate;
@ -96,7 +117,6 @@ struct _GtkHeaderBarPrivate
GtkWidget *label_sizing_box;
GtkWidget *subtitle_sizing_label;
GtkWidget *custom_title;
gint spacing;
gboolean has_subtitle;
gboolean show_title_buttons;
@ -123,7 +143,6 @@ enum {
PROP_SUBTITLE,
PROP_HAS_SUBTITLE,
PROP_CUSTOM_TITLE,
PROP_SPACING,
PROP_SHOW_TITLE_BUTTONS,
PROP_DECORATION_LAYOUT,
PROP_DECORATION_LAYOUT_SET,
@ -354,7 +373,7 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
gtk_style_context_add_class (gtk_widget_get_style_context (separator), "titlebutton");
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, priv->spacing);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
for (j = 0; t[j]; j++)
{
@ -840,10 +859,6 @@ gtk_header_bar_get_property (GObject *object,
g_value_set_object (value, priv->custom_title);
break;
case PROP_SPACING:
g_value_set_int (value, priv->spacing);
break;
case PROP_SHOW_TITLE_BUTTONS:
g_value_set_boolean (value, gtk_header_bar_get_show_title_buttons (bar));
break;
@ -889,15 +904,6 @@ gtk_header_bar_set_property (GObject *object,
gtk_header_bar_set_custom_title (bar, g_value_get_object (value));
break;
case PROP_SPACING:
if (priv->spacing != g_value_get_int (value))
{
priv->spacing = g_value_get_int (value);
gtk_widget_queue_resize (GTK_WIDGET (bar));
g_object_notify_by_pspec (object, pspec);
}
break;
case PROP_SHOW_TITLE_BUTTONS:
gtk_header_bar_set_show_title_buttons (bar, g_value_get_boolean (value));
break;
@ -1146,14 +1152,6 @@ gtk_header_bar_class_init (GtkHeaderBarClass *class)
GTK_TYPE_WIDGET,
G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS);
header_bar_props[PROP_SPACING] =
g_param_spec_int ("spacing",
P_("Spacing"),
P_("The amount of space between children"),
0, G_MAXINT,
DEFAULT_SPACING,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
/**
* GtkHeaderBar:show-title-buttons:
*
@ -1229,7 +1227,6 @@ gtk_header_bar_init (GtkHeaderBar *bar)
priv->title = NULL;
priv->subtitle = NULL;
priv->custom_title = NULL;
priv->spacing = DEFAULT_SPACING;
priv->has_subtitle = TRUE;
priv->decoration_layout = NULL;
priv->decoration_layout_set = FALSE;
@ -1238,9 +1235,11 @@ gtk_header_bar_init (GtkHeaderBar *bar)
layout = gtk_widget_get_layout_manager (GTK_WIDGET (bar));
priv->start_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_style_context_add_class (gtk_widget_get_style_context (priv->start_box), "start");
gtk_widget_set_parent (priv->start_box, GTK_WIDGET (bar));
gtk_center_layout_set_start_widget (GTK_CENTER_LAYOUT (layout), priv->start_box);
priv->end_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_style_context_add_class (gtk_widget_get_style_context (priv->end_box), "end");
gtk_widget_set_parent (priv->end_box, GTK_WIDGET (bar));
gtk_center_layout_set_end_widget (GTK_CENTER_LAYOUT (layout), priv->end_box);

View File

@ -1488,6 +1488,7 @@ headerbar {
border-style: solid;
border-color: $alt_borders_color;
border-radius: 0;
border-spacing: 6px;
@include headerbar_fill(darken($bg_color, 10%));
@ -1500,6 +1501,11 @@ headerbar {
transition: $backdrop_transition;
}
> box.start,
> box.end {
border-spacing: 6px;
}
.title {
padding-left: 12px;
padding-right: 12px;