app: make GimpSpinScale's slow part change the value 10x slower than the fast part
This commit is contained in:
@ -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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user