It can now be used also for non-trivial use cases, where
the caller needs to further work with the model and/or
selection, or if a string value needs to be read from the
model.
#endif
gpointer gtkut_tree_view_get_selected_pointer(GtkTreeView *view,
#endif
gpointer gtkut_tree_view_get_selected_pointer(GtkTreeView *view,
+ gint column, GtkTreeModel **_model, GtkTreeSelection **_selection,
+ GtkTreeIter *_iter)
{
GtkTreeIter iter;
GtkTreeModel *model;
GtkTreeSelection *sel;
gpointer ptr;
{
GtkTreeIter iter;
GtkTreeModel *model;
GtkTreeSelection *sel;
gpointer ptr;
cm_return_val_if_fail(view != NULL, NULL);
cm_return_val_if_fail(column >= 0, NULL);
cm_return_val_if_fail(view != NULL, NULL);
cm_return_val_if_fail(column >= 0, NULL);
cm_return_val_if_fail(
gtk_tree_model_get_n_columns(model) > column,
NULL);
cm_return_val_if_fail(
gtk_tree_model_get_n_columns(model) > column,
NULL);
+
+ type = gtk_tree_model_get_column_type(model, column);
- gtk_tree_model_get_column_type(model, column) == G_TYPE_POINTER,
+ type == G_TYPE_POINTER || type == G_TYPE_STRING,
NULL);
gtk_tree_model_get(model, &iter, column, &ptr, -1);
NULL);
gtk_tree_model_get(model, &iter, column, &ptr, -1);
+ if (_model != NULL)
+ *_model = model;
+ if (_selection != NULL)
+ *_selection = sel;
+ if (_iter != NULL)
+ *_iter = iter;
+
#endif
/* Returns pointer stored in selected row of a tree view's model
#endif
/* Returns pointer stored in selected row of a tree view's model
- * in a given column. The column has to be of type G_TYPE_POINTER. */
+ * in a given column. The column has to be of type G_TYPE_POINTER
+ * or G_TYPE_STRING (in this case, the returned value has to be
+ * freed by the caller.
+ * _model, _selection and _iter parameters are optional, and if
+ * not NULL, they will be set to point to corresponding GtkTreeModel,
+ * GtkTreeSelection, and GtkTreeIter of the selected row. */
gpointer gtkut_tree_view_get_selected_pointer(GtkTreeView *view,
gpointer gtkut_tree_view_get_selected_pointer(GtkTreeView *view,
+ gint column, GtkTreeModel **_model, GtkTreeSelection **_selection,
+ GtkTreeIter *_iter);
#if GTK_CHECK_VERSION (3, 2, 0)
#define GTK_TYPE_VBOX GTK_TYPE_BOX
#if GTK_CHECK_VERSION (3, 2, 0)
#define GTK_TYPE_VBOX GTK_TYPE_BOX