aboutsummaryrefslogtreecommitdiff
path: root/src/gtkutils.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-04-07 07:40:06 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-04-07 07:40:06 +0000
commit39c49cbb79d346f277d236c6b069a9de7dad4211 (patch)
treead31dc7288af4d27c5c5b8ffbb5eac265ced41b8 /src/gtkutils.c
parent130f58af6de1b8669c01ee873a4188b2ffd9c4d5 (diff)
reimplemented folder view with GtkTreeView.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@202 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/gtkutils.c')
-rw-r--r--src/gtkutils.c95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/gtkutils.c b/src/gtkutils.c
index 96f99762..bf30b9a1 100644
--- a/src/gtkutils.c
+++ b/src/gtkutils.c
@@ -383,6 +383,101 @@ void gtkut_clist_set_focus_row(GtkCList *clist, gint row)
GTKUT_CTREE_REFRESH(clist);
}
+gboolean gtkut_tree_model_next(GtkTreeModel *model, GtkTreeIter *iter)
+{
+ GtkTreeIter iter_, parent;
+ gboolean valid;
+
+ if (gtk_tree_model_iter_children(model, &iter_, iter)) {
+ *iter = iter_;
+ return TRUE;
+ }
+
+ iter_ = *iter;
+ if (gtk_tree_model_iter_next(model, &iter_)) {
+ *iter = iter_;
+ return TRUE;
+ }
+
+ iter_ = *iter;
+ valid = gtk_tree_model_iter_parent(model, &parent, &iter_);
+ while (valid) {
+ iter_ = parent;
+ if (gtk_tree_model_iter_next(model, &iter_)) {
+ *iter = iter_;
+ return TRUE;
+ }
+
+ iter_ = parent;
+ valid = gtk_tree_model_iter_parent(model, &parent, &iter_);
+ }
+
+ return FALSE;
+}
+
+gboolean gtkut_tree_model_find_by_column_data(GtkTreeModel *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *start,
+ gint col, gpointer data)
+{
+ gboolean valid;
+ GtkTreeIter iter_;
+ gpointer store_data;
+
+ if (start)
+ valid = gtk_tree_model_iter_children(model, &iter_, start);
+ else
+ valid = gtk_tree_model_get_iter_first(model, &iter_);
+
+ while (valid) {
+ gtk_tree_model_get(model, &iter_, col, &store_data, -1);
+ if (store_data == data) {
+ *iter = iter_;
+ return TRUE;
+ }
+
+ if (gtk_tree_model_iter_has_child(model, &iter_)) {
+ if (gtkut_tree_model_find_by_column_data
+ (model, iter, &iter_, col, data)) {
+ return TRUE;
+ }
+ }
+
+ valid = gtk_tree_model_iter_next(model, &iter_);
+ }
+
+ return FALSE;
+}
+
+gboolean gtkut_tree_view_find_collapsed_parent(GtkTreeView *treeview,
+ GtkTreeIter *parent,
+ GtkTreeIter *iter)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter_, parent_;
+ GtkTreePath *path;
+ gboolean valid;
+
+ if (!iter) return FALSE;
+
+ model = gtk_tree_view_get_model(treeview);
+ valid = gtk_tree_model_iter_parent(model, &parent_, iter);
+
+ while (valid) {
+ path = gtk_tree_model_get_path(model, &parent_);
+ if (!gtk_tree_view_row_expanded(treeview, path)) {
+ *parent = parent_;
+ gtk_tree_path_free(path);
+ return TRUE;
+ }
+ gtk_tree_path_free(path);
+ iter_ = parent_;
+ valid = gtk_tree_model_iter_parent(model, &parent_, &iter_);
+ }
+
+ return FALSE;
+}
+
void gtkut_combo_set_items(GtkCombo *combo, const gchar *str1, ...)
{
va_list args;