range: Avoid a divison by 0

Based on a patch by Blake Latchford

Fixes #618
This commit is contained in:
Timm Bäder
2019-08-11 10:06:52 +02:00
parent 3242174f81
commit 9999ac1255

View File

@@ -2044,14 +2044,20 @@ update_slider_position (GtkRange *range,
if (priv->slide_initial_slider_position == -1)
{
graphene_rect_t slider_bounds;
double zoom_divisor;
if (!gtk_widget_compute_bounds (priv->slider_widget, GTK_WIDGET (range), &slider_bounds))
graphene_rect_init (&slider_bounds, 0, 0, 0, 0);
if (priv->orientation == GTK_ORIENTATION_VERTICAL)
priv->slide_initial_slider_position = (zoom * (mouse_y - priv->slide_initial_coordinate_delta) - slider_bounds.origin.y) / (zoom - 1.0);
if (zoom == 1.0)
zoom_divisor = 1.0;
else
priv->slide_initial_slider_position = (zoom * (mouse_x - priv->slide_initial_coordinate_delta) - slider_bounds.origin.x) / (zoom - 1.0);
zoom_divisor = zoom - 1.0;
if (priv->orientation == GTK_ORIENTATION_VERTICAL)
priv->slide_initial_slider_position = (zoom * (mouse_y - priv->slide_initial_coordinate_delta) - slider_bounds.origin.y) / zoom_divisor;
else
priv->slide_initial_slider_position = (zoom * (mouse_x - priv->slide_initial_coordinate_delta) - slider_bounds.origin.x) / zoom_divisor;
}
if (priv->orientation == GTK_ORIENTATION_VERTICAL)