diff options
author | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2013-11-24 19:53:17 -0300 |
---|---|---|
committer | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2013-11-25 16:38:01 -0300 |
commit | b62d220b7b328ea1ba4c70a517466f0906dfe348 (patch) | |
tree | 2f5e06aac8ba8f13b80e877b18cb48fa9fe32807 | |
parent | 27b7e1c87cb439dc99fdea8e2e5924a514602181 (diff) | |
download | glade-b62d220b7b328ea1ba4c70a517466f0906dfe348.tar.gz |
Fixed cellrenderer model column combobox chooser.
If treeview model is a filter or a sort model we need to walk up until
we find a tree or list store which is where glade have defined the model columns.
-rw-r--r-- | plugins/gtk+/glade-cell-renderer-editor.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/plugins/gtk+/glade-cell-renderer-editor.c b/plugins/gtk+/glade-cell-renderer-editor.c index 3286ef9e..67d48b4c 100644 --- a/plugins/gtk+/glade-cell-renderer-editor.c +++ b/plugins/gtk+/glade-cell-renderer-editor.c @@ -423,7 +423,8 @@ GLADE_MAKE_EPROP (GladeEPropCellAttribute, glade_eprop_cell_attribute) #define GLADE_IS_EPROP_CELL_ATTRIBUTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_EPROP_CELL_ATTRIBUTE)) #define GLADE_IS_EPROP_CELL_ATTRIBUTE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_EPROP_CELL_ATTRIBUTE)) #define GLADE_EPROP_CELL_ATTRIBUTE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GLADE_EPROP_CELL_ATTRIBUTE, GladeEPropCellAttributeClass)) - static void glade_eprop_cell_attribute_finalize (GObject * object) +static void +glade_eprop_cell_attribute_finalize (GObject *object) { /* Chain up */ GObjectClass *parent_class = @@ -436,12 +437,22 @@ GLADE_MAKE_EPROP (GladeEPropCellAttribute, glade_eprop_cell_attribute) static GladeWidget * glade_cell_renderer_parent_get_model (GladeWidget *widget) { - GtkTreeModel *real_model = NULL; - - glade_widget_property_get (widget, "model", &real_model); + GtkTreeModel *model = NULL; - if (real_model) - return glade_widget_get_from_gobject (real_model); + glade_widget_property_get (widget, "model", &model); + + do + { + if (GTK_IS_TREE_MODEL_SORT (model)) + model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (model)); + else if (GTK_IS_TREE_MODEL_FILTER (model)) + model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (model)); + else + break; + } while (model); + + if (model) + return glade_widget_get_from_gobject (model); return NULL; } |