gcal-viewport: added :scroll_to method

GcalViewport:scroll_to will scroll to a point of it
children accordingly to a value passed
This commit is contained in:
Erick Pérez Castellanos
2014-12-04 17:10:25 -05:00
parent deb21b8297
commit 005dd5e917
2 changed files with 31 additions and 0 deletions
+28
View File
@@ -253,3 +253,31 @@ gcal_viewport_add (GcalViewport *viewport,
g_signal_connect_after (widget, "size-allocate",
G_CALLBACK (gcal_viewport_child_allocated), viewport);
}
/**
* gcal_viewport_scroll_to:
* @viewport: a #GcalViewport
* @value: a value between 0 and 1.0 for scrolling the child.
*
* If no scrollbar is shown, this method does nothing
**/
void
gcal_viewport_scroll_to (GcalViewport *viewport,
gdouble value)
{
GcalViewportPrivate *priv;
GtkAdjustment *adj;
gdouble lower, upper, page_size;
priv = viewport->priv;
value = CLAMP (value, 0.0, 1.0);
adj = gtk_range_get_adjustment (GTK_RANGE (priv->vscrollbar));
page_size = gtk_adjustment_get_page_size (adj);
lower = gtk_adjustment_get_lower (adj);
upper = gtk_adjustment_get_upper (adj);
value = ((upper - page_size) - lower) * value;
gtk_adjustment_set_value (adj, value);
}
+3
View File
@@ -55,6 +55,9 @@ GtkWidget* gcal_viewport_new (void);
void gcal_viewport_add (GcalViewport *viewport,
GtkWidget *widget);
void gcal_viewport_scroll_to (GcalViewport *viewport,
gdouble value);
G_END_DECLS
#endif /* __GCAL_VIEWPORT_H__ */