GtkHeaderBar: don't show dangling separators

If we don't have a window icon, we hide the titlebar_icon,
we still add it, so we can't simply go by the number of
children when deciding whether to show the separator or
now. Instead, update the separator visibility as we create
the various buttons.
This commit is contained in:
Matthias Clasen 2013-12-13 00:47:35 -05:00
parent dc073b8020
commit a33e5748db

View File

@ -346,7 +346,6 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
t = g_strsplit (tokens[i], ",", -1);
separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
gtk_widget_show (separator);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, priv->spacing);
@ -365,6 +364,8 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
priv->titlebar_icon = button;
if (!_gtk_header_bar_update_window_icon (bar, window))
gtk_widget_hide (button);
else
gtk_widget_show (separator);
}
else if (strcmp (t[j], "menu") == 0 && menu != NULL)
{
@ -383,6 +384,7 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
if (!_gtk_header_bar_update_window_icon (bar, window))
gtk_image_set_from_icon_name (GTK_IMAGE (priv->titlebar_icon), "process-stop-symbolic", GTK_ICON_SIZE_MENU);
gtk_widget_show (separator);
}
else if (strcmp (t[j], "minimize") == 0 &&
gtk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_NORMAL)
@ -400,6 +402,7 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
if (GTK_IS_ACCESSIBLE (accessible))
atk_object_set_name (accessible, _("Minimize"));
priv->titlebar_min_button = button;
gtk_widget_show (separator);
}
else if (strcmp (t[j], "maximize") == 0 &&
gtk_window_get_resizable (window) &&
@ -422,6 +425,7 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
if (GTK_IS_ACCESSIBLE (accessible))
atk_object_set_name (accessible, maximized ? _("Restore") : _("Maximize"));
priv->titlebar_max_button = button;
gtk_widget_show (separator);
}
else if (strcmp (t[j], "close") == 0 &&
gtk_window_get_deletable (window) &&
@ -440,6 +444,7 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
if (GTK_IS_ACCESSIBLE (accessible))
atk_object_set_name (accessible, _("Close"));
priv->titlebar_close_button = button;
gtk_widget_show (separator);
}
if (button)