visualizer-view: dynamically toggle scrollbar visibility

Generally we want this thing hidden, so only show it if we have
zoomed in enough to cause it to be useful.

We need to also find a way for the container to be able to
handle the change in size request and adjust the GtkPaned
to be non-ugly.
This commit is contained in:
Christian Hergert
2016-09-29 17:49:53 -07:00
parent 0766bd6b93
commit 75332678a6

View File

@ -33,6 +33,7 @@ typedef struct
SpVisualizerList *list;
GtkAdjustment *scroll_adjustment;
GtkScrollbar *scrollbar;
SpVisualizerTicks *ticks;
} SpVisualizerViewPrivate;
@ -142,6 +143,17 @@ sp_visualizer_view_notify_zoom (SpVisualizerView *self,
sp_visualizer_view_set_time_range (self, begin_time, end_time);
gtk_adjustment_set_page_size (priv->scroll_adjustment, end_time - begin_time);
if (priv->reader != NULL)
{
gint64 real_range;
gboolean visible;
real_range = sp_capture_reader_get_end_time (priv->reader)
- sp_capture_reader_get_start_time (priv->reader);
visible = (gtk_adjustment_get_page_size (priv->scroll_adjustment) < real_range);
gtk_widget_set_visible (GTK_WIDGET (priv->scrollbar), visible);
}
}
static void
@ -247,6 +259,7 @@ sp_visualizer_view_class_init (SpVisualizerViewClass *klass)
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/ui/sp-visualizer-view.ui");
gtk_widget_class_bind_template_child_private (widget_class, SpVisualizerView, list);
gtk_widget_class_bind_template_child_private (widget_class, SpVisualizerView, scroll_adjustment);
gtk_widget_class_bind_template_child_private (widget_class, SpVisualizerView, scrollbar);
gtk_widget_class_bind_template_child_private (widget_class, SpVisualizerView, ticks);
gtk_widget_class_set_css_name (widget_class, "visualizers");