path bar: Don't hide arrows

Changing the visibility of child widgets in size-allocate does
not work well with out current allocation and layout machinery.
To avoid the visual fallout, just keep the arrow buttons visible
and only change their sensitivity.

https://bugzilla.gnome.org/show_bug.cgi?id=754868
This commit is contained in:
Matthias Clasen 2016-01-24 16:29:40 -05:00
parent 761120a5e2
commit e8ad47498b

View File

@ -527,7 +527,7 @@ gtk_path_bar_size_allocate (GtkWidget *widget,
GList *list, *first_button; GList *list, *first_button;
gint width; gint width;
gint allocation_width; gint allocation_width;
gboolean need_sliders = FALSE; gboolean need_sliders = TRUE;
gint up_slider_offset = 0; gint up_slider_offset = 0;
gint down_slider_offset = 0; gint down_slider_offset = 0;
GtkRequisition child_requisition; GtkRequisition child_requisition;
@ -585,7 +585,7 @@ gtk_path_bar_size_allocate (GtkWidget *widget,
else else
first_button = path_bar->priv->button_list; first_button = path_bar->priv->button_list;
need_sliders = TRUE; need_sliders = TRUE;
/* To see how much space we have, and how many buttons we can display. /* To see how much space we have, and how many buttons we can display.
* We start at the first button, count forward until hit the new * We start at the first button, count forward until hit the new
* button, then count backwards. * button, then count backwards.
@ -743,7 +743,7 @@ gtk_path_bar_size_allocate (GtkWidget *widget,
needs_reorder |= gtk_widget_get_child_visible (path_bar->priv->up_slider_button) == TRUE; needs_reorder |= gtk_widget_get_child_visible (path_bar->priv->up_slider_button) == TRUE;
gtk_widget_set_child_visible (path_bar->priv->up_slider_button, FALSE); gtk_widget_set_child_visible (path_bar->priv->up_slider_button, FALSE);
} }
if (need_sliders) if (need_sliders)
{ {
child_allocation.width = path_bar->priv->slider_width; child_allocation.width = path_bar->priv->slider_width;