summaryrefslogtreecommitdiff
path: root/desktop/treeview.c
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-08-20 19:44:14 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-08-20 20:04:42 +0100
commit71676165c18ac1dfb979f9c9b9ff1523c33e8229 (patch)
tree4252327820d5ea0147ce055b4c225c70568954f2 /desktop/treeview.c
parent011ba501a7d1ce4ef4a9d4e7f107569bdce6b847 (diff)
downloadnetsurf-71676165c18ac1dfb979f9c9b9ff1523c33e8229.tar.gz
netsurf-71676165c18ac1dfb979f9c9b9ff1523c33e8229.tar.bz2
Add folder node update function.
Diffstat (limited to 'desktop/treeview.c')
-rw-r--r--desktop/treeview.c42
1 files changed, 41 insertions, 1 deletions
diff --git a/desktop/treeview.c b/desktop/treeview.c
index 0f998fc4e..ac65b0d38 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -476,6 +476,43 @@ nserror treeview_create_node_folder(treeview *tree,
/* Exported interface, documented in treeview.h */
+nserror treeview_update_node_folder(treeview *tree,
+ treeview_node *folder,
+ const struct treeview_field_data *field,
+ void *data)
+{
+ bool match;
+
+ assert(data != NULL);
+ assert(tree != NULL);
+ assert(folder != NULL);
+ assert(data == folder->client_data);
+ assert(folder->parent != NULL);
+
+ assert(field != NULL);
+ assert(lwc_string_isequal(tree->fields[tree->n_fields].field,
+ field->field, &match) == lwc_error_ok &&
+ match == true);
+ folder->text.data = field->value;
+ folder->text.len = field->value_len;
+ folder->text.width = 0;
+
+ if (folder->parent->flags & TREE_NODE_EXPANDED) {
+ /* Text will be seen, get its width */
+ nsfont.font_width(&plot_style_odd.text,
+ folder->text.data,
+ folder->text.len,
+ &(folder->text.width));
+ } else {
+ /* Just invalidate the width, since it's not needed now */
+ folder->text.width = 0;
+ }
+
+ return NSERROR_OK;
+}
+
+
+/* Exported interface, documented in treeview.h */
nserror treeview_update_node_entry(treeview *tree,
treeview_node *entry,
const struct treeview_field_data fields[],
@@ -2420,7 +2457,10 @@ static bool treeview_edit_node_at_point(treeview *tree, treeview_node *n,
bool success;
/* If the main field is editable, make field_data point to it */
- ef = &(tree->fields[0]);
+ if (n->type == TREE_NODE_ENTRY)
+ ef = &(tree->fields[0]);
+ else
+ ef = &(tree->fields[tree->n_fields]);
if (ef->flags & TREE_FLAG_ALLOW_EDIT) {
field_data = &n->text;
field_desc = ef;