diff --git a/modules/gimpcolorwheel.c b/modules/gimpcolorwheel.c index 6ae0df0c66..9d04192f27 100644 --- a/modules/gimpcolorwheel.c +++ b/modules/gimpcolorwheel.c @@ -81,6 +81,7 @@ typedef struct /* Dragging mode */ DragMode mode; + gboolean triangle_locked; guint focus_on_ring : 1; @@ -234,10 +235,11 @@ gimp_color_wheel_init (GimpColorWheel *wheel) gtk_widget_set_has_window (GTK_WIDGET (wheel), FALSE); gtk_widget_set_can_focus (GTK_WIDGET (wheel), TRUE); - priv->format = NULL; - priv->ring_fraction = DEFAULT_FRACTION; - priv->size = DEFAULT_SIZE; - priv->ring_width = DEFAULT_RING_WIDTH; + priv->format = NULL; + priv->ring_fraction = DEFAULT_FRACTION; + priv->size = DEFAULT_SIZE; + priv->ring_width = DEFAULT_RING_WIDTH; + priv->triangle_locked = TRUE; /* Allow the user to drag the rectangle on the preview */ gesture = gtk_gesture_drag_new (GTK_WIDGET (wheel)); @@ -500,7 +502,11 @@ compute_triangle (GimpColorWheel *wheel, outer = priv->size / 2.0; inner = outer - priv->ring_width; - angle = priv->h * 2.0 * G_PI; + + if (! priv->triangle_locked) + angle = priv->h * 2.0 * G_PI; + else + angle = 90 * G_PI; *hx = floor (center_x + cos (angle) * inner + 0.5); *hy = floor (center_y - sin (angle) * inner + 0.5); @@ -1538,3 +1544,15 @@ gimp_color_wheel_move (GimpColorWheel *wheel, gimp_color_wheel_set_color (wheel, hue, sat, val); } + +void +gimp_color_wheel_set_triangle_locked (GimpColorWheel *wheel, + gboolean triangle_locked) +{ + GimpColorWheelPrivate *priv = gimp_color_wheel_get_instance_private (wheel); + + g_return_if_fail (GIMP_IS_COLOR_WHEEL (wheel)); + + priv->triangle_locked = triangle_locked; +} + diff --git a/modules/gimpcolorwheel.h b/modules/gimpcolorwheel.h index b5ebece36d..e14058741e 100644 --- a/modules/gimpcolorwheel.h +++ b/modules/gimpcolorwheel.h @@ -67,30 +67,32 @@ struct _GimpColorWheelClass }; -void color_wheel_register_type (GTypeModule *module); +void color_wheel_register_type (GTypeModule *module); -GType gimp_color_wheel_get_type (void) G_GNUC_CONST; -GtkWidget * gimp_color_wheel_new (void); +GType gimp_color_wheel_get_type (void) G_GNUC_CONST; +GtkWidget * gimp_color_wheel_new (void); -void gimp_color_wheel_set_color (GimpColorWheel *wheel, - double h, - double s, - double v); -void gimp_color_wheel_get_color (GimpColorWheel *wheel, - gfloat *h, - gfloat *s, - gfloat *v); +void gimp_color_wheel_set_color (GimpColorWheel *wheel, + double h, + double s, + double v); +void gimp_color_wheel_get_color (GimpColorWheel *wheel, + gfloat *h, + gfloat *s, + gfloat *v); -void gimp_color_wheel_set_ring_fraction (GimpColorWheel *wheel, - gdouble fraction); -gdouble gimp_color_wheel_get_ring_fraction (GimpColorWheel *wheel); +void gimp_color_wheel_set_ring_fraction (GimpColorWheel *wheel, + gdouble fraction); +gdouble gimp_color_wheel_get_ring_fraction (GimpColorWheel *wheel); -void gimp_color_wheel_set_format (GimpColorWheel *wheel, - const Babl *format); -void gimp_color_wheel_set_color_config (GimpColorWheel *wheel, - GimpColorConfig *config); +void gimp_color_wheel_set_format (GimpColorWheel *wheel, + const Babl *format); +void gimp_color_wheel_set_color_config (GimpColorWheel *wheel, + GimpColorConfig *config); +void gimp_color_wheel_set_triangle_locked (GimpColorWheel *wheel, + gboolean triangle_locked); -gboolean gimp_color_wheel_is_adjusting (GimpColorWheel *wheel); +gboolean gimp_color_wheel_is_adjusting (GimpColorWheel *wheel); G_END_DECLS