summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2019-08-11 10:06:52 +0200
committerTimm Bäder <mail@baedert.org>2019-08-11 10:06:52 +0200
commit9999ac12555b3ddc114b68391b4a9b2a9b105249 (patch)
tree4da6adf472beddf71110ea6a1ce64423858b22f8 /gtk
parent3242174f813cf2b13f5e78233431ceef0d726347 (diff)
downloadgtk+-9999ac12555b3ddc114b68391b4a9b2a9b105249.tar.gz
range: Avoid a divison by 0
Based on a patch by Blake Latchford Fixes #618
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkrange.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c
index 992826d327..b2c2ae5d1d 100644
--- a/gtk/gtkrange.c
+++ b/gtk/gtkrange.c
@@ -2024,7 +2024,7 @@ update_slider_position (GtkRange *range,
gtk_widget_translate_coordinates (GTK_WIDGET (range), priv->trough_widget,
mouse_x, mouse_y, &mouse_x, &mouse_y);
- if (priv->zoom &&
+ if (priv->zoom &&
gtk_widget_compute_bounds (priv->trough_widget, priv->trough_widget, &trough_bounds))
{
zoom = MIN(1.0, (priv->orientation == GTK_ORIENTATION_VERTICAL ?
@@ -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 (zoom == 1.0)
+ zoom_divisor = 1.0;
+ else
+ 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 - 1.0);
+ 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 - 1.0);
+ 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)