summaryrefslogtreecommitdiff
path: root/libnautilus-extensions/nautilus-ctree.c
diff options
context:
space:
mode:
authorGene Z. Ragan <gzr@eazel.com>2000-09-12 21:39:33 +0000
committerGene Ragan <gzr@src.gnome.org>2000-09-12 21:39:33 +0000
commitc94e0a363882ce9f5a5351f1004c7bda2d5e8536 (patch)
treef3b1817a62ded17438a4a4ea15efce852db2ca31 /libnautilus-extensions/nautilus-ctree.c
parent0c40e22012973cff80f32cf5926fb38e4112d209 (diff)
downloadnautilus-c94e0a363882ce9f5a5351f1004c7bda2d5e8536.tar.gz
More work on bug 1595
2000-09-12 Gene Z. Ragan <gzr@eazel.com> More work on bug 1595 * libnautilus-extensions/nautilus-ctree.c: * libnautilus-extensions/nautilus-ctree.h: (nautilus_ctree_draw_expander), (tree_draw_node), (row_new), (nautilus_ctree_insert_node): More code to handle click and hold cases. (nautilus_ctree_draw_node) Created a public function to cause a tree node to be redrawn * components/tree/nautilus-tree-view.c: Replace gtk_widget_queue_redraw () with new nautilus_ctree_draw_node () Fixed logic so a mouse click and drag on expander and then out of the twisty hot spot properly resets expander to unclicked state.
Diffstat (limited to 'libnautilus-extensions/nautilus-ctree.c')
-rw-r--r--libnautilus-extensions/nautilus-ctree.c147
1 files changed, 78 insertions, 69 deletions
diff --git a/libnautilus-extensions/nautilus-ctree.c b/libnautilus-extensions/nautilus-ctree.c
index 1818535a3..b674b534c 100644
--- a/libnautilus-extensions/nautilus-ctree.c
+++ b/libnautilus-extensions/nautilus-ctree.c
@@ -1106,8 +1106,7 @@ nautilus_ctree_draw_expander (NautilusCTree *ctree,
gdk_draw_polygon (clist->clist_window, style->base_gc[GTK_STATE_NORMAL], TRUE, points, 3);
if (ctree_row->mouse_down) {
- g_message ("mouse_down");
- //gdk_draw_polygon (clist->clist_window, style->fg_gc[GTK_STATE_NORMAL], FALSE, points, 3);
+ gdk_draw_polygon (clist->clist_window, style->fg_gc[GTK_STATE_NORMAL], FALSE, points, 3);
} else {
gdk_draw_polygon (clist->clist_window, style->fg_gc[GTK_STATE_NORMAL], TRUE, points, 3);
}
@@ -1924,29 +1923,37 @@ draw_row (GtkCList *clist,
}
}
+void
+nautilus_ctree_draw_node (NautilusCTree *ctree, NautilusCTreeNode *node)
+{
+ tree_draw_node (ctree, node);
+}
+
static void
tree_draw_node (NautilusCTree *ctree,
NautilusCTreeNode *node)
{
- GtkCList *clist;
+ GtkCList *clist;
- clist = GTK_CLIST (ctree);
+ clist = GTK_CLIST (ctree);
- if (CLIST_UNFROZEN (clist) && nautilus_ctree_is_viewable (ctree, node))
- {
- NautilusCTreeNode *work;
- gint num = 0;
-
- work = NAUTILUS_CTREE_NODE (clist->row_list);
- while (work && work != node)
+ if (CLIST_UNFROZEN (clist) && nautilus_ctree_is_viewable (ctree, node))
{
- work = NAUTILUS_CTREE_NODE_NEXT (work);
- num++;
+ NautilusCTreeNode *work;
+ gint num = 0;
+
+ work = NAUTILUS_CTREE_NODE (clist->row_list);
+ while (work && work != node)
+ {
+ work = NAUTILUS_CTREE_NODE_NEXT (work);
+ num++;
+ }
+
+ if (work && gtk_clist_row_is_visible (clist, num) != GTK_VISIBILITY_NONE) {
+ GTK_CLIST_CLASS_FW (clist)->draw_row
+ (clist, NULL, num, GTK_CLIST_ROW ((GList *) node));
+ }
}
- if (work && gtk_clist_row_is_visible (clist, num) != GTK_VISIBILITY_NONE)
- GTK_CLIST_CLASS_FW (clist)->draw_row
- (clist, NULL, num, GTK_CLIST_ROW ((GList *) node));
- }
}
static NautilusCTreeNode *
@@ -3085,43 +3092,43 @@ tree_toggle_expansion (NautilusCTree *ctree,
static NautilusCTreeRow *
row_new (NautilusCTree *ctree)
{
- GtkCList *clist;
- NautilusCTreeRow *ctree_row;
- int i;
+ GtkCList *clist;
+ NautilusCTreeRow *ctree_row;
+ int i;
- clist = GTK_CLIST (ctree);
- ctree_row = g_chunk_new (NautilusCTreeRow, clist->row_mem_chunk);
- ctree_row->row.cell = g_chunk_new (GtkCell, clist->cell_mem_chunk);
+ clist = GTK_CLIST (ctree);
+ ctree_row = g_chunk_new (NautilusCTreeRow, clist->row_mem_chunk);
+ ctree_row->row.cell = g_chunk_new (GtkCell, clist->cell_mem_chunk);
+
+ for (i = 0; i < clist->columns; i++) {
+ ctree_row->row.cell[i].type = GTK_CELL_EMPTY;
+ ctree_row->row.cell[i].vertical = 0;
+ ctree_row->row.cell[i].horizontal = 0;
+ ctree_row->row.cell[i].style = NULL;
+ }
- for (i = 0; i < clist->columns; i++)
- {
- ctree_row->row.cell[i].type = GTK_CELL_EMPTY;
- ctree_row->row.cell[i].vertical = 0;
- ctree_row->row.cell[i].horizontal = 0;
- ctree_row->row.cell[i].style = NULL;
- }
-
- GTK_CELL_PIXTEXT (ctree_row->row.cell[ctree->tree_column])->text = NULL;
-
- ctree_row->row.fg_set = FALSE;
- ctree_row->row.bg_set = FALSE;
- ctree_row->row.style = NULL;
- ctree_row->row.selectable = TRUE;
- ctree_row->row.state = GTK_STATE_NORMAL;
- ctree_row->row.data = NULL;
- ctree_row->row.destroy = NULL;
-
- ctree_row->level = 0;
- ctree_row->expanded = FALSE;
- ctree_row->parent = NULL;
- ctree_row->sibling = NULL;
- ctree_row->children = NULL;
- ctree_row->pixmap_closed = NULL;
- ctree_row->mask_closed = NULL;
- ctree_row->pixmap_opened = NULL;
- ctree_row->mask_opened = NULL;
-
- return ctree_row;
+ GTK_CELL_PIXTEXT (ctree_row->row.cell[ctree->tree_column])->text = NULL;
+
+ ctree_row->row.fg_set = FALSE;
+ ctree_row->row.bg_set = FALSE;
+ ctree_row->row.style = NULL;
+ ctree_row->row.selectable = TRUE;
+ ctree_row->row.state = GTK_STATE_NORMAL;
+ ctree_row->row.data = NULL;
+ ctree_row->row.destroy = NULL;
+
+ ctree_row->level = 0;
+ ctree_row->expanded = FALSE;
+ ctree_row->parent = NULL;
+ ctree_row->sibling = NULL;
+ ctree_row->children = NULL;
+ ctree_row->pixmap_closed = NULL;
+ ctree_row->mask_closed = NULL;
+ ctree_row->pixmap_opened = NULL;
+ ctree_row->mask_opened = NULL;
+ ctree_row->mouse_down = FALSE;
+
+ return ctree_row;
}
static void
@@ -3555,27 +3562,29 @@ nautilus_ctree_insert_node (NautilusCTree *ctree,
gboolean is_leaf,
gboolean expanded)
{
- GtkCList *clist;
- NautilusCTreeRow *new_row;
- NautilusCTreeNode *node;
- GList *list;
- gint i;
+ GtkCList *clist;
+ NautilusCTreeRow *new_row;
+ NautilusCTreeNode *node;
+ GList *list;
+ gint i;
- g_return_val_if_fail (ctree != NULL, NULL);
- g_return_val_if_fail (NAUTILUS_IS_CTREE (ctree), NULL);
- if (sibling)
- g_return_val_if_fail (NAUTILUS_CTREE_ROW (sibling)->parent == parent, NULL);
+ g_return_val_if_fail (ctree != NULL, NULL);
+ g_return_val_if_fail (NAUTILUS_IS_CTREE (ctree), NULL);
+ if (sibling) {
+ g_return_val_if_fail (NAUTILUS_CTREE_ROW (sibling)->parent == parent, NULL);
+ }
- if (parent && NAUTILUS_CTREE_ROW (parent)->is_leaf)
- return NULL;
+ if (parent && NAUTILUS_CTREE_ROW (parent)->is_leaf) {
+ return NULL;
+ }
- clist = GTK_CLIST (ctree);
+ clist = GTK_CLIST (ctree);
- /* create the row */
- new_row = row_new (ctree);
- list = g_list_alloc ();
- list->data = new_row;
- node = NAUTILUS_CTREE_NODE (list);
+ /* create the row */
+ new_row = row_new (ctree);
+ list = g_list_alloc ();
+ list->data = new_row;
+ node = NAUTILUS_CTREE_NODE (list);
if (text)
for (i = 0; i < clist->columns; i++)