summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-07-03 11:19:16 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-07-03 11:19:16 +0100
commitc010535fbe85841f096c90128ea29016e770fc56 (patch)
treea444cfcaac06f8c1f537b4c048d5d1bd653bb2a0 /desktop
parent4313d4c4ec8bc45886f0ace9bdfea3f529ba433d (diff)
downloadnetsurf-c010535fbe85841f096c90128ea29016e770fc56.tar.gz
netsurf-c010535fbe85841f096c90128ea29016e770fc56.tar.bz2
Add treeview behaviour flags.
Diffstat (limited to 'desktop')
-rw-r--r--desktop/global_history.c3
-rw-r--r--desktop/treeview.c6
-rw-r--r--desktop/treeview.h12
3 files changed, 17 insertions, 4 deletions
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