[gtk/stringlist] dropdown: Avoid need for an expression
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/stringlist] dropdown: Avoid need for an expression
- Date: Tue, 23 Jun 2020 02:34:52 +0000 (UTC)
commit d55a13cc0ed4f22d6c625f146b0c433372f7acfc
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Jun 22 22:10:52 2020 -0400
dropdown: Avoid need for an expression
Make gtk_drop_down_set_from_string work without
a special expression, This will make it easier
to set up dropdowns from ui files.
gtk/gtkdropdown.c | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
---
diff --git a/gtk/gtkdropdown.c b/gtk/gtkdropdown.c
index 3e8cbff0fe..7cdaea644b 100644
--- a/gtk/gtkdropdown.c
+++ b/gtk/gtkdropdown.c
@@ -578,20 +578,26 @@ bind_item (GtkSignalListItemFactory *factory,
GtkWidget *label;
GValue value = G_VALUE_INIT;
- if (self->expression == NULL)
- {
- g_critical ("Either GtkDropDown:factory or GtkDropDown:expression must be set");
- return;
- }
-
item = gtk_list_item_get_item (list_item);
label = gtk_list_item_get_child (list_item);
- if (gtk_expression_evaluate (self->expression, item, &value))
+ if (self->expression &&
+ gtk_expression_evaluate (self->expression, item, &value))
{
gtk_label_set_label (GTK_LABEL (label), g_value_get_string (&value));
g_value_unset (&value);
}
+ else if (GTK_IS_STRING_OBJECT (item))
+ {
+ const char *string;
+
+ string = gtk_string_object_get_string (GTK_STRING_OBJECT (item));
+ gtk_label_set_label (GTK_LABEL (label), string);
+ }
+ else
+ {
+ g_critical ("Either GtkDropDown:factory or GtkDropDown:expression must be set");
+ }
}
static void
@@ -956,7 +962,6 @@ void
gtk_drop_down_set_from_strings (GtkDropDown *self,
const char *const *texts)
{
- GtkExpression *expression;
GListModel *model;
g_return_if_fail (GTK_IS_DROP_DOWN (self));
@@ -964,10 +969,6 @@ gtk_drop_down_set_from_strings (GtkDropDown *self,
set_default_factory (self);
- expression = gtk_property_expression_new (GTK_TYPE_STRING_OBJECT, NULL, "string");
- gtk_drop_down_set_expression (self, expression);
- gtk_expression_unref (expression);
-
model = G_LIST_MODEL (gtk_string_list_new_from_strv ((const char **)texts));
gtk_drop_down_set_model (self, model);
g_object_unref (model);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]