app: make GimpSpinScale's slow part change the value 10x slower than the fast part

This commit is contained in:
Michael Natterer
2011-03-18 15:42:50 +01:00
parent f1d1bb610d
commit 61aa1854fd

View File

@ -321,14 +321,14 @@ gimp_spin_scale_get_target (GtkWidget *widget,
} }
static void static void
gimp_spin_scale_set_value (GtkWidget *widget, gimp_spin_scale_change_value (GtkWidget *widget,
gdouble x) gdouble x)
{ {
GimpSpinScalePrivate *private = GET_PRIVATE (widget);
GtkSpinButton *spin_button = GTK_SPIN_BUTTON (widget); GtkSpinButton *spin_button = GTK_SPIN_BUTTON (widget);
GtkAdjustment *adjustment = gtk_spin_button_get_adjustment (spin_button); GtkAdjustment *adjustment = gtk_spin_button_get_adjustment (spin_button);
GdkWindow *text_window = gtk_entry_get_text_window (GTK_ENTRY (widget)); GdkWindow *text_window = gtk_entry_get_text_window (GTK_ENTRY (widget));
gint width; gint width;
gdouble fraction;
gdouble value; gdouble value;
#if GTK_CHECK_VERSION (2, 24, 0) #if GTK_CHECK_VERSION (2, 24, 0)
@ -337,30 +337,30 @@ gimp_spin_scale_set_value (GtkWidget *widget,
gdk_drawable_get_size (text_window, &width, NULL); gdk_drawable_get_size (text_window, &width, NULL);
#endif #endif
if (private->relative_change)
{
gdouble diff;
gdouble step;
step = ((gtk_adjustment_get_upper (adjustment) -
gtk_adjustment_get_lower (adjustment)) +
gtk_adjustment_get_lower (adjustment)) / width / 10.0;
diff = x - private->start_x;
value = (private->start_value + diff * step);
}
else
{
gdouble fraction;
fraction = x / (gdouble) width; fraction = x / (gdouble) width;
value = (fraction * (gtk_adjustment_get_upper (adjustment) - value = (fraction * (gtk_adjustment_get_upper (adjustment) -
gtk_adjustment_get_lower (adjustment)) + gtk_adjustment_get_lower (adjustment)) +
gtk_adjustment_get_lower (adjustment)); gtk_adjustment_get_lower (adjustment));
gtk_adjustment_set_value (adjustment, value);
} }
static void
gimp_spin_scale_change_value (GtkWidget *widget,
gdouble x)
{
GimpSpinScalePrivate *private = GET_PRIVATE (widget);
GtkSpinButton *spin_button = GTK_SPIN_BUTTON (widget);
GtkAdjustment *adjustment = gtk_spin_button_get_adjustment (spin_button);
gdouble diff;
gdouble value;
diff = x - private->start_x;
value = (private->start_value +
diff * gtk_adjustment_get_step_increment (adjustment));
gtk_adjustment_set_value (adjustment, value); gtk_adjustment_set_value (adjustment, value);
} }
@ -382,7 +382,7 @@ gimp_spin_scale_button_press (GtkWidget *widget,
gtk_widget_grab_focus (widget); gtk_widget_grab_focus (widget);
gimp_spin_scale_set_value (widget, event->x); gimp_spin_scale_change_value (widget, event->x);
return TRUE; return TRUE;
@ -415,14 +415,7 @@ gimp_spin_scale_button_release (GtkWidget *widget,
{ {
private->changing_value = FALSE; private->changing_value = FALSE;
if (private->relative_change)
{
gimp_spin_scale_change_value (widget, event->x); gimp_spin_scale_change_value (widget, event->x);
}
else
{
gimp_spin_scale_set_value (widget, event->x);
}
return TRUE; return TRUE;
} }
@ -437,15 +430,8 @@ gimp_spin_scale_button_motion (GtkWidget *widget,
GimpSpinScalePrivate *private = GET_PRIVATE (widget); GimpSpinScalePrivate *private = GET_PRIVATE (widget);
if (private->changing_value) if (private->changing_value)
{
if (private->relative_change)
{ {
gimp_spin_scale_change_value (widget, event->x); gimp_spin_scale_change_value (widget, event->x);
}
else
{
gimp_spin_scale_set_value (widget, event->x);
}
return TRUE; return TRUE;
} }