summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-08-28 12:58:41 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-08-28 12:58:41 +0100
commit826b392b576d9e2bb0b3d5ea3e4537428e21e55d (patch)
tree6331df06140c998bcc1cb1bc29e954140317f2ef
parentfbfe5ab17ba41187bcbba5e759dd8e2e98a1b3e7 (diff)
downloadnetsurf-826b392b576d9e2bb0b3d5ea3e4537428e21e55d.tar.gz
netsurf-826b392b576d9e2bb0b3d5ea3e4537428e21e55d.tar.bz2
Simple treeview_edit_selection implementation.
-rw-r--r--desktop/treeview.c36
-rw-r--r--desktop/treeview.h7
2 files changed, 43 insertions, 0 deletions
diff --git a/desktop/treeview.c b/desktop/treeview.c
index a0fbe9203..227b86025 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -2687,6 +2687,42 @@ static bool treeview_edit_node_at_point(treeview *tree, treeview_node *n,
}
+/* Exported interface, documented in treeview.h */
+void treeview_edit_selection(treeview *tree)
+{
+ struct rect rect;
+ treeview_node *n;
+ bool redraw;
+ int y;
+
+ assert(tree != NULL);
+ assert(tree->root != NULL);
+
+ /* Get first selected node */
+ n = treeview_get_first_selected(tree);
+
+ if (n == NULL)
+ return;
+
+ /* Get node's y-position */
+ y = treeview_node_y(tree, n);
+
+ /* Edit node at y */
+ redraw = treeview_edit_node_at_point(tree, n, y,
+ 0, y + tree_g.line_height / 2, &rect);
+
+ if (redraw == false)
+ return;
+
+ /* Redraw */
+ rect.x0 = 0;
+ rect.y0 = y;
+ rect.x1 = REDRAW_MAX;
+ rect.y1 = y + tree_g.line_height;
+ tree->cw_t->redraw_request(tree->cw_h, rect);
+}
+
+
struct treeview_mouse_action {
treeview *tree;
browser_mouse_state mouse;
diff --git a/desktop/treeview.h b/desktop/treeview.h
index ee2e82b42..872a8c23b 100644
--- a/desktop/treeview.h
+++ b/desktop/treeview.h
@@ -372,6 +372,13 @@ bool treeview_clear_selection(treeview *tree, struct rect *rect);
bool treeview_select_all(treeview *tree, struct rect *rect);
/**
+ * Edit the first selected node
+ *
+ * \param tree Treeview object to edit selected node in
+ */
+void treeview_edit_selection(treeview *tree);
+
+/**
* Find current height of a treeview
*
* \param tree Treeview object to find height of