From c010535fbe85841f096c90128ea29016e770fc56 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Wed, 3 Jul 2013 11:19:16 +0100 Subject: Add treeview behaviour flags. --- desktop/global_history.c | 3 ++- desktop/treeview.c | 6 +++++- desktop/treeview.h | 12 ++++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) (limited to 'desktop') diff --git a/desktop/global_history.c b/desktop/global_history.c index 5196c1692..e5326c60f 100644 --- a/desktop/global_history.c +++ b/desktop/global_history.c @@ -711,7 +711,8 @@ nserror global_history_init(struct core_window_callback_table *cw_t, /* Create the global history treeview */ err = treeview_create(&gh_ctx.tree, &tree_cb_t, N_FIELDS, gh_ctx.fields, - cw_t, core_window_handle); + cw_t, core_window_handle, + TREEVIEW_NO_MOVES); if (err != NSERROR_OK) { gh_ctx.tree = NULL; return err; diff --git a/desktop/treeview.c b/desktop/treeview.c index de57c490c..5d8a72f31 100644 --- a/desktop/treeview.c +++ b/desktop/treeview.c @@ -117,6 +117,8 @@ struct treeview_drag { struct treeview { uint32_t view_width; /** Viewport size */ + treeview_flags flags; /** Treeview behaviour settings */ + struct treeview_node *root; /**< Root node */ struct treeview_field *fields; /**< Array of fields */ @@ -530,7 +532,7 @@ nserror treeview_create(struct treeview **tree, const struct treeview_callback_table *callbacks, int n_fields, struct treeview_field_desc fields[], const struct core_window_callback_table *cw_t, - struct core_window *cw) + struct core_window *cw, treeview_flags flags) { nserror error; int i; @@ -595,6 +597,8 @@ nserror treeview_create(struct treeview **tree, (*tree)->drag.prev.node_y = 0; (*tree)->drag.prev.node_h = 0; + (*tree)->flags = flags; + (*tree)->cw_t = cw_t; (*tree)->cw_h = cw; diff --git a/desktop/treeview.h b/desktop/treeview.h index ad6aafca6..5704014c5 100644 --- a/desktop/treeview.h +++ b/desktop/treeview.h @@ -41,7 +41,14 @@ enum treeview_relationship { typedef enum { TREE_CREATE_NONE = (0), /* No flags set */ TREE_CREATE_SUPPRESS_RESIZE = (1 << 0) /* Suppress callback */ -} treeview_node_create_flags; +} treeview_node_create_flags; /**< Relationship between nodes */ + +typedef enum { + TREEVIEW_NO_FLAGS = (0), /* No flags set */ + TREEVIEW_READ_ONLY = (1 << 0), /* No edits */ + TREEVIEW_NO_MOVES = (1 << 1), /* No node drags */ + TREEVIEW_DELETE_EMPTY_DIRS = (1 << 2) /* Del. dirs on empty */ +} treeview_flags; enum treeview_msg { TREE_MSG_NODE_DELETE, /**< Node to be deleted */ @@ -108,6 +115,7 @@ nserror treeview_fini(void); * \param fields Array of treeview fields * \param cw_t Callback table for core_window containing the treeview * \param cw The core_window in which the treeview is shown + * \param flags Treeview behaviour flags * \return NSERROR_OK on success, appropriate error otherwise * * The fields array order is as follows (N = n_fields): @@ -122,7 +130,7 @@ nserror treeview_create(struct treeview **tree, const struct treeview_callback_table *callbacks, int n_fields, struct treeview_field_desc fields[], const struct core_window_callback_table *cw_t, - struct core_window *cw); + struct core_window *cw, treeview_flags flags); /** * Destroy a treeview object -- cgit v1.2.3