week-view: Split zooming into dedicating functions

This will help zooming with in other ways like Ctrl+Scroll.
This commit is contained in:
Adrien Plazas
2022-06-23 17:09:15 +00:00
committed by Georges Basile Stavracas Neto
parent bed7f9e027
commit 7b19a0fca7
+32 -13
View File
@@ -93,15 +93,29 @@ on_event_activated (GcalWeekView *self,
}
static void
on_zoom_gesture_scale_changed_cb (GcalWeekView *self,
gdouble scale,
GtkGestureZoom *gesture)
begin_zoom (GcalWeekView *self,
gdouble view_center_y)
{
GtkAdjustment *vadjustment;
gdouble center, height;
vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->scrolled_window));
center = gtk_adjustment_get_value (vadjustment) + view_center_y - gtk_adjustment_get_lower (vadjustment);
height = gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_lower (vadjustment);
self->gesture_zoom_center = center / height;
self->gesture_zoom_initial_height = gtk_widget_get_allocated_height (self->content);
}
static void
apply_zoom (GcalWeekView *self,
gdouble view_center_y,
gdouble scale)
{
GtkAdjustment *vadjustment;
gdouble view_center_x, view_center_y;
gdouble height;
gtk_gesture_get_bounding_box_center (GTK_GESTURE (gesture), &view_center_x, &view_center_y);
vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->scrolled_window));
height = self->gesture_zoom_initial_height * scale;
@@ -113,23 +127,28 @@ on_zoom_gesture_scale_changed_cb (GcalWeekView *self,
gtk_adjustment_set_value (vadjustment, (self->gesture_zoom_center * height) - view_center_y);
}
static void
on_zoom_gesture_scale_changed_cb (GcalWeekView *self,
gdouble scale,
GtkGestureZoom *gesture)
{
gdouble view_center_x, view_center_y;
gtk_gesture_get_bounding_box_center (GTK_GESTURE (gesture), &view_center_x, &view_center_y);
apply_zoom (self, view_center_y, scale);
}
static void
on_zoom_gesture_begin_cb (GcalWeekView *self,
GdkEventSequence *sequence,
GtkGesture *gesture)
{
GtkAdjustment *vadjustment;
gdouble view_center_x, view_center_y;
gdouble center, height;
gtk_gesture_get_bounding_box_center (gesture, &view_center_x, &view_center_y);
vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->scrolled_window));
center = gtk_adjustment_get_value (vadjustment) + view_center_y - gtk_adjustment_get_lower (vadjustment);
height = gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_lower (vadjustment);
self->gesture_zoom_center = center / height;
self->gesture_zoom_initial_height = gtk_widget_get_allocated_height (self->content);
begin_zoom (self, view_center_y);
}
static void