[gtk+] color-swatch: add a "selectable" property to GtkColorSwatch
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] color-swatch: add a "selectable" property to GtkColorSwatch
- Date: Fri, 17 Feb 2012 16:03:30 +0000 (UTC)
commit 5f0c4fc20f073ebab271e15e0d097e6bc9237b1e
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Fri Feb 17 17:01:50 2012 +0100
color-swatch: add a "selectable" property to GtkColorSwatch
We don't want e.g. the swatch in GtkColorEditor to get the select badge
when it's clicked, so make this a property (on by default).
gtk/gtkcolorswatch.c | 38 +++++++++++++++++++++++++++++++++++---
gtk/gtkcolorswatchprivate.h | 6 +++++-
2 files changed, 40 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gtkcolorswatch.c b/gtk/gtkcolorswatch.c
index 11f5d39..0996dcd 100644
--- a/gtk/gtkcolorswatch.c
+++ b/gtk/gtkcolorswatch.c
@@ -43,12 +43,14 @@ struct _GtkColorSwatchPrivate
guint has_color : 1;
guint contains_pointer : 1;
guint use_alpha : 1;
+ guint selectable : 1;
};
enum
{
PROP_ZERO,
- PROP_RGBA
+ PROP_RGBA,
+ PROP_SELECTABLE
};
enum
@@ -76,6 +78,7 @@ gtk_color_swatch_init (GtkColorSwatch *swatch)
| GDK_ENTER_NOTIFY_MASK
| GDK_LEAVE_NOTIFY_MASK);
swatch->priv->use_alpha = TRUE;
+ swatch->priv->selectable = TRUE;
}
#define INTENSITY(r, g, b) ((r) * 0.30 + (g) * 0.59 + (b) * 0.11)
@@ -337,7 +340,9 @@ swatch_key_press (GtkWidget *widget,
event->keyval == GDK_KEY_KP_Enter ||
event->keyval == GDK_KEY_KP_Space)
{
- if (swatch->priv->has_color && (gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_SELECTED) == 0)
+ if (swatch->priv->has_color &&
+ swatch->priv->selectable &&
+ (gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_SELECTED) == 0)
gtk_widget_set_state_flags (widget, GTK_STATE_FLAG_SELECTED, FALSE);
else
g_signal_emit (swatch, signals[ACTIVATE], 0);
@@ -479,7 +484,8 @@ swatch_button_release (GtkWidget *widget,
g_signal_emit (swatch, signals[ACTIVATE], 0);
return TRUE;
}
- else if ((flags & GTK_STATE_FLAG_SELECTED) == 0)
+ else if (swatch->priv->selectable &&
+ (flags & GTK_STATE_FLAG_SELECTED) == 0)
{
gtk_widget_set_state_flags (widget, GTK_STATE_FLAG_SELECTED, FALSE);
return TRUE;
@@ -513,6 +519,9 @@ swatch_get_property (GObject *object,
gtk_color_swatch_get_rgba (swatch, &color);
g_value_set_boxed (value, &color);
break;
+ case PROP_SELECTABLE:
+ g_value_set_boolean (value, gtk_color_swatch_get_selectable (swatch));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -532,6 +541,9 @@ swatch_set_property (GObject *object,
case PROP_RGBA:
gtk_color_swatch_set_rgba (swatch, g_value_get_boxed (value));
break;
+ case PROP_SELECTABLE:
+ gtk_color_swatch_set_selectable (swatch, g_value_get_boolean (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -588,6 +600,9 @@ gtk_color_swatch_class_init (GtkColorSwatchClass *class)
g_object_class_install_property (object_class, PROP_RGBA,
g_param_spec_boxed ("rgba", P_("RGBA Color"), P_("Color as RGBA"),
GDK_TYPE_RGBA, GTK_PARAM_READWRITE));
+ g_object_class_install_property (object_class, PROP_SELECTABLE,
+ g_param_spec_boolean ("selectable", P_("Selectable"), P_("Whether the swatch is selectable"),
+ TRUE, GTK_PARAM_READWRITE));
g_type_class_add_private (object_class, sizeof (GtkColorSwatchPrivate));
@@ -696,4 +711,21 @@ gtk_color_swatch_set_use_alpha (GtkColorSwatch *swatch,
gtk_widget_queue_draw (GTK_WIDGET (swatch));
}
+void
+gtk_color_swatch_set_selectable (GtkColorSwatch *swatch,
+ gboolean selectable)
+{
+ if (selectable == swatch->priv->selectable)
+ return;
+
+ swatch->priv->selectable = selectable;
+ g_object_notify (G_OBJECT (swatch), "selectable");
+}
+
+gboolean
+gtk_color_swatch_get_selectable (GtkColorSwatch *swatch)
+{
+ return swatch->priv->selectable;
+}
+
/* vim:set foldmethod=marker: */
diff --git a/gtk/gtkcolorswatchprivate.h b/gtk/gtkcolorswatchprivate.h
index bc8a03d..4f236ab 100644
--- a/gtk/gtkcolorswatchprivate.h
+++ b/gtk/gtkcolorswatchprivate.h
@@ -90,7 +90,11 @@ void gtk_color_swatch_set_icon (GtkColorSwatch *swatch,
G_GNUC_INTERNAL
void gtk_color_swatch_set_use_alpha (GtkColorSwatch *swatch,
gboolean use_alpha);
-
+G_GNUC_INTERNAL
+void gtk_color_swatch_set_selectable (GtkColorSwatch *swatch,
+ gboolean selectable);
+G_GNUC_INTERNAL
+gboolean gtk_color_swatch_get_selectable (GtkColorSwatch *swatch);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]