Skip to content

Commit

Permalink
app: avoid spin scale pointer wrap when value is at upper/loewr limit
Browse files Browse the repository at this point in the history
When applying a relative adjustment to a spin scale, don't wrap the
pointer around the corresponding screen edge if the spin scale's
value is already minimal/maximal.
  • Loading branch information
ell-gh committed Nov 2, 2017
1 parent 2bdf537 commit ae851c3
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions app/widgets/gimpspinscale.c
Original file line number Diff line number Diff line change
Expand Up @@ -887,13 +887,37 @@ gimp_spin_scale_motion_notify (GtkWidget *widget,

if (private->relative_change)
{
if (pointer_x <= monitor_geometry.x)
GtkAdjustment *adjustment;
gdouble value;
gdouble lower;
gdouble upper;

adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget));

value = gtk_adjustment_get_value (adjustment);
lower = gtk_adjustment_get_lower (adjustment);
upper = gtk_adjustment_get_upper (adjustment);

if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
{
gdouble temp;

value = -value;

temp = lower;
lower = -upper;
upper = -temp;
}

if (pointer_x <= monitor_geometry.x &&
value > lower)
{
private->pointer_warp = TRUE;
private->pointer_warp_x = (monitor_geometry.width - 1) + pointer_x - 1;
private->pointer_warp_start_x = private->start_x + (monitor_geometry.width - 2);
}
else if (pointer_x >= monitor_geometry.x + (monitor_geometry.width - 1))
else if (pointer_x >= monitor_geometry.x + (monitor_geometry.width - 1) &&
value < upper)
{
private->pointer_warp = TRUE;
private->pointer_warp_x = pointer_x - (monitor_geometry.width - 1) + 1;
Expand Down

0 comments on commit ae851c3

Please sign in to comment.