summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2013-11-24 19:53:17 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2013-11-25 16:38:01 -0300
commitb62d220b7b328ea1ba4c70a517466f0906dfe348 (patch)
tree2f5e06aac8ba8f13b80e877b18cb48fa9fe32807
parent27b7e1c87cb439dc99fdea8e2e5924a514602181 (diff)
downloadglade-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.c23
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;
}