summaryrefslogtreecommitdiff
path: root/desktop/treeview.c
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/treeview.c')
-rw-r--r--desktop/treeview.c105
1 files changed, 56 insertions, 49 deletions
diff --git a/desktop/treeview.c b/desktop/treeview.c
index 93b5ff6c3..107f490e0 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -2019,15 +2019,16 @@ static struct textarea *treeview__create_textarea(
/* Exported interface, documented in treeview.h */
nserror
-treeview_create(treeview **tree,
+treeview_create(treeview **treeout,
const struct treeview_callback_table *callbacks,
int n_fields,
struct treeview_field_desc fields[],
struct core_window *cw,
treeview_flags flags)
{
+ treeview *tree;
nserror error;
- int i;
+ int fldidx;
assert(callbacks != NULL);
@@ -2036,85 +2037,91 @@ treeview_create(treeview **tree,
assert(fields[n_fields - 1].flags & TREE_FLAG_DEFAULT);
assert(n_fields >= 2);
- *tree = malloc(sizeof(struct treeview));
- if (*tree == NULL) {
+ tree = malloc(sizeof(struct treeview));
+ if (tree == NULL) {
return NSERROR_NOMEM;
}
- (*tree)->fields = malloc(sizeof(struct treeview_field) * n_fields);
- if ((*tree)->fields == NULL) {
- free(*tree);
+ tree->fields = malloc(sizeof(struct treeview_field) * n_fields);
+ if (tree->fields == NULL) {
+ free(tree);
return NSERROR_NOMEM;
}
- error = treeview_create_node_root(&((*tree)->root));
+ error = treeview_create_node_root(&(tree->root));
if (error != NSERROR_OK) {
- free((*tree)->fields);
- free(*tree);
+ free(tree->fields);
+ free(tree);
return error;
}
- (*tree)->field_width = 0;
- for (i = 0; i < n_fields; i++) {
- struct treeview_field *f = &((*tree)->fields[i]);
+ tree->field_width = 0;
+ for (fldidx = 0; fldidx < n_fields; fldidx++) {
+ struct treeview_field *f = &(tree->fields[fldidx]);
- f->flags = fields[i].flags;
- f->field = lwc_string_ref(fields[i].field);
- f->value.data = lwc_string_data(fields[i].field);
- f->value.len = lwc_string_length(fields[i].field);
+ f->flags = fields[fldidx].flags;
+ f->field = lwc_string_ref(fields[fldidx].field);
+ f->value.data = lwc_string_data(fields[fldidx].field);
+ f->value.len = lwc_string_length(fields[fldidx].field);
- guit->layout->width(&plot_style_odd.text, f->value.data,
- f->value.len, &(f->value.width));
+ guit->layout->width(&plot_style_odd.text,
+ f->value.data,
+ f->value.len,
+ &(f->value.width));
- if (f->flags & TREE_FLAG_SHOW_NAME)
- if ((*tree)->field_width < f->value.width)
- (*tree)->field_width = f->value.width;
+ if (f->flags & TREE_FLAG_SHOW_NAME) {
+ if (tree->field_width < f->value.width) {
+ tree->field_width = f->value.width;
+ }
+ }
}
- (*tree)->field_width += tree_g.step_width;
+ tree->field_width += tree_g.step_width;
- (*tree)->callbacks = callbacks;
- (*tree)->n_fields = n_fields - 1;
+ tree->callbacks = callbacks;
+ tree->n_fields = n_fields - 1;
- (*tree)->drag.type = TV_DRAG_NONE;
- (*tree)->drag.start_node = NULL;
- (*tree)->drag.start.x = 0;
- (*tree)->drag.start.y = 0;
- (*tree)->drag.start.node_y = 0;
- (*tree)->drag.start.node_h = 0;
- (*tree)->drag.prev.x = 0;
- (*tree)->drag.prev.y = 0;
- (*tree)->drag.prev.node_y = 0;
- (*tree)->drag.prev.node_h = 0;
+ tree->drag.type = TV_DRAG_NONE;
+ tree->drag.start_node = NULL;
+ tree->drag.start.x = 0;
+ tree->drag.start.y = 0;
+ tree->drag.start.node_y = 0;
+ tree->drag.start.node_h = 0;
+ tree->drag.prev.x = 0;
+ tree->drag.prev.y = 0;
+ tree->drag.prev.node_y = 0;
+ tree->drag.prev.node_h = 0;
- (*tree)->move.root = NULL;
- (*tree)->move.target = NULL;
- (*tree)->move.target_pos = TV_TARGET_NONE;
+ tree->move.root = NULL;
+ tree->move.target = NULL;
+ tree->move.target_pos = TV_TARGET_NONE;
- (*tree)->edit.textarea = NULL;
- (*tree)->edit.node = NULL;
+ tree->edit.textarea = NULL;
+ tree->edit.node = NULL;
if (flags & TREEVIEW_SEARCHABLE) {
- (*tree)->search.textarea = treeview__create_textarea(
- *tree, 600, tree_g.line_height,
+ tree->search.textarea = treeview__create_textarea(
+ tree, 600, tree_g.line_height,
nscolours[NSCOLOUR_TEXT_INPUT_BG],
nscolours[NSCOLOUR_TEXT_INPUT_BG],
nscolours[NSCOLOUR_TEXT_INPUT_FG],
plot_style_odd.text,
treeview_textarea_search_callback);
- if ((*tree)->search.textarea == NULL) {
- treeview_destroy(*tree);
+ if (tree->search.textarea == NULL) {
+ treeview_destroy(tree);
return NSERROR_NOMEM;
}
} else {
- (*tree)->search.textarea = NULL;
+ tree->search.textarea = NULL;
}
- (*tree)->search.active = false;
- (*tree)->search.search = false;
+ tree->search.active = false;
+ tree->search.search = false;
- (*tree)->flags = flags;
+ tree->flags = flags;
+
+ tree->cw_h = cw;
- (*tree)->cw_h = cw;
+ *treeout = tree;
return NSERROR_OK;
}