[gimp] libgimpwidgets: add a "value" property to GimpIntComboBox…
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] libgimpwidgets: add a "value" property to GimpIntComboBox…
- Date: Fri, 18 Sep 2020 13:26:40 +0000 (UTC)
commit db71a8ffc72f28b33081f9012fecdaa822596740
Author: Jehan <jehan girinstud io>
Date: Fri Sep 18 15:19:24 2020 +0200
libgimpwidgets: add a "value" property to GimpIntComboBox…
… and have gimp_prop_int_combo_box_new() bind to "value" instead of
"active".
The "active" property is defined by GtkComboBox and is the index of the
combo box, not its values, whereas with gimp_prop_int_combo_box_new(),
we want to bind an int property to the combobox value. Therefore the
commit 0828a371c2 was only properly working when we were creating a
combo box with values starting at 0 and incremented by 1.
By adding a "value" property to GimpIntComboBox, I allow binding any
property to the int value rather than the index.
See also !265 where the issue was raised as it affected our HEIF
plug-in.
libgimpwidgets/gimpintcombobox.c | 30 +++++++++++++++++++++++++++++-
libgimpwidgets/gimppropwidgets.c | 2 +-
2 files changed, 30 insertions(+), 2 deletions(-)
---
diff --git a/libgimpwidgets/gimpintcombobox.c b/libgimpwidgets/gimpintcombobox.c
index 5d58ef4a94..364972181d 100644
--- a/libgimpwidgets/gimpintcombobox.c
+++ b/libgimpwidgets/gimpintcombobox.c
@@ -48,7 +48,8 @@ enum
PROP_0,
PROP_ELLIPSIZE,
PROP_LABEL,
- PROP_LAYOUT
+ PROP_LAYOUT,
+ PROP_VALUE
};
@@ -148,6 +149,21 @@ gimp_int_combo_box_class_init (GimpIntComboBoxClass *klass)
GIMP_TYPE_INT_COMBO_BOX_LAYOUT,
GIMP_INT_COMBO_BOX_LAYOUT_ABBREVIATED,
GIMP_PARAM_READWRITE));
+
+ /**
+ * GimpIntComboBox:value:
+ *
+ * The active value (different from the "active" property of
+ * GtkComboBox which is the active index).
+ *
+ * Since: 3.0
+ */
+ g_object_class_install_property (object_class, PROP_VALUE,
+ g_param_spec_int ("value",
+ "Value",
+ "Value of active item",
+ G_MININT, G_MAXINT, 0,
+ GIMP_PARAM_READWRITE));
}
static void
@@ -217,6 +233,10 @@ gimp_int_combo_box_set_property (GObject *object,
gimp_int_combo_box_set_layout (GIMP_INT_COMBO_BOX (object),
g_value_get_enum (value));
break;
+ case PROP_VALUE:
+ gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (object),
+ g_value_get_int (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -243,6 +263,14 @@ gimp_int_combo_box_get_property (GObject *object,
case PROP_LAYOUT:
g_value_set_enum (value, priv->layout);
break;
+ case PROP_VALUE:
+ {
+ gint v;
+
+ gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (object), &v);
+ g_value_set_int (value, v);
+ }
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
diff --git a/libgimpwidgets/gimppropwidgets.c b/libgimpwidgets/gimppropwidgets.c
index a518d2a208..453144f041 100644
--- a/libgimpwidgets/gimppropwidgets.c
+++ b/libgimpwidgets/gimppropwidgets.c
@@ -411,7 +411,7 @@ gimp_prop_int_combo_box_new (GObject *config,
gimp_help_set_help_data (combo_box, blurb, NULL);
g_object_bind_property (config, property_name,
- combo_box, "active",
+ combo_box, "value",
G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
return combo_box;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]