Gitweb links:
...log
http://git.netsurf-browser.org/netsurf.git/shortlog/26befde81c6d0c40ce5eb...
...commit
http://git.netsurf-browser.org/netsurf.git/commit/26befde81c6d0c40ce5ebf9...
...tree
http://git.netsurf-browser.org/netsurf.git/tree/26befde81c6d0c40ce5ebf924...
The branch, master has been updated
via 26befde81c6d0c40ce5ebf9244b0f963587b7646 (commit)
via c010535fbe85841f096c90128ea29016e770fc56 (commit)
from 4313d4c4ec8bc45886f0ace9bdfea3f529ba433d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff
http://git.netsurf-browser.org/netsurf.git/commit/?id=26befde81c6d0c40ce5...
commit 26befde81c6d0c40ce5ebf9244b0f963587b7646
Author: Michael Drake <tlsa(a)netsurf-browser.org>
Commit: Michael Drake <tlsa(a)netsurf-browser.org>
Make READ_ONLY flag a combinator for NO_MOVES and NO_DELETES. Implement NO_DELETES.
diff --git a/desktop/treeview.c b/desktop/treeview.c
index 5d8a72f..062ef9b 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -469,16 +469,30 @@ nserror treeview_create_node_entry(struct treeview *tree,
}
-/* Exported interface, documented in treeview.h */
-nserror treeview_delete_node(struct treeview *tree, struct treeview_node *n)
+/**
+ * Delete a treeview node
+ *
+ * \param tree Treeview object to delete node from
+ * \param n Node to delete
+ * \param interaction Delete is result of user interaction with treeview
+ * \return NSERROR_OK on success, appropriate error otherwise
+ *
+ * Will emit folder or entry deletion msg callback.
+ */
+static nserror treeview_delete_node_internal(struct treeview *tree,
+ struct treeview_node *n, bool interaction)
{
struct treeview_node_msg msg;
msg.msg = TREE_MSG_NODE_DELETE;
struct treeview_node *p;
+ if (interaction && (tree->flags & TREEVIEW_NO_DELETES)) {
+ return NSERROR_OK;
+ }
+
/* Destroy children first */
while (n->children != NULL) {
- treeview_delete_node(tree, n->children);
+ treeview_delete_node_internal(tree, n->children, interaction);
}
/* Unlink node from tree */
@@ -528,6 +542,13 @@ nserror treeview_delete_node(struct treeview *tree, struct
treeview_node *n)
/* Exported interface, documented in treeview.h */
+nserror treeview_delete_node(struct treeview *tree, struct treeview_node *n)
+{
+ return treeview_delete_node_internal(tree, n, false);
+}
+
+
+/* Exported interface, documented in treeview.h */
nserror treeview_create(struct treeview **tree,
const struct treeview_callback_table *callbacks,
int n_fields, struct treeview_field_desc fields[],
@@ -614,7 +635,7 @@ nserror treeview_destroy(struct treeview *tree)
assert(tree != NULL);
/* Destroy nodes */
- treeview_delete_node(tree, tree->root);
+ treeview_delete_node_internal(tree, tree->root, false);
/* Destroy feilds */
for (f = 0; f <= tree->n_fields; f++) {
@@ -1086,7 +1107,7 @@ static bool treeview_node_selection_walk_cb(struct treeview_node
*node,
case TREEVIEW_WALK_DELETE_SELECTION:
if (node->flags & TREE_NODE_SELECTED) {
- treeview_delete_node(sw->tree, node);
+ treeview_delete_node_internal(sw->tree, node, true);
changed = true;
}
break;
diff --git a/desktop/treeview.h b/desktop/treeview.h
index 5704014..475b90e 100644
--- a/desktop/treeview.h
+++ b/desktop/treeview.h
@@ -44,10 +44,11 @@ typedef enum {
} 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_NO_FLAGS = (0), /**< No flags set */
+ TREEVIEW_NO_MOVES = (1 << 0), /**< No node drags */
+ TREEVIEW_NO_DELETES = (1 << 1), /**< No node deletes */
+ TREEVIEW_READ_ONLY = TREEVIEW_NO_MOVES | TREEVIEW_NO_DELETES,
+ TREEVIEW_DEL_EMPTY_DIRS = (1 << 2) /**< Delete dirs on empty */
} treeview_flags;
enum treeview_msg {
commitdiff
http://git.netsurf-browser.org/netsurf.git/commit/?id=c010535fbe85841f096...
commit c010535fbe85841f096c90128ea29016e770fc56
Author: Michael Drake <tlsa(a)netsurf-browser.org>
Commit: Michael Drake <tlsa(a)netsurf-browser.org>
Add treeview behaviour flags.
diff --git a/desktop/global_history.c b/desktop/global_history.c
index 5196c16..e5326c6 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 de57c49..5d8a72f 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 ad6aafc..5704014 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
-----------------------------------------------------------------------
Summary of changes:
desktop/global_history.c | 3 ++-
desktop/treeview.c | 37 +++++++++++++++++++++++++++++++------
desktop/treeview.h | 13 +++++++++++--
3 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/desktop/global_history.c b/desktop/global_history.c
index 5196c16..e5326c6 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 de57c49..062ef9b 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 */
@@ -467,16 +469,30 @@ nserror treeview_create_node_entry(struct treeview *tree,
}
-/* Exported interface, documented in treeview.h */
-nserror treeview_delete_node(struct treeview *tree, struct treeview_node *n)
+/**
+ * Delete a treeview node
+ *
+ * \param tree Treeview object to delete node from
+ * \param n Node to delete
+ * \param interaction Delete is result of user interaction with treeview
+ * \return NSERROR_OK on success, appropriate error otherwise
+ *
+ * Will emit folder or entry deletion msg callback.
+ */
+static nserror treeview_delete_node_internal(struct treeview *tree,
+ struct treeview_node *n, bool interaction)
{
struct treeview_node_msg msg;
msg.msg = TREE_MSG_NODE_DELETE;
struct treeview_node *p;
+ if (interaction && (tree->flags & TREEVIEW_NO_DELETES)) {
+ return NSERROR_OK;
+ }
+
/* Destroy children first */
while (n->children != NULL) {
- treeview_delete_node(tree, n->children);
+ treeview_delete_node_internal(tree, n->children, interaction);
}
/* Unlink node from tree */
@@ -526,11 +542,18 @@ nserror treeview_delete_node(struct treeview *tree, struct
treeview_node *n)
/* Exported interface, documented in treeview.h */
+nserror treeview_delete_node(struct treeview *tree, struct treeview_node *n)
+{
+ return treeview_delete_node_internal(tree, n, false);
+}
+
+
+/* Exported interface, documented in treeview.h */
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 +618,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;
@@ -610,7 +635,7 @@ nserror treeview_destroy(struct treeview *tree)
assert(tree != NULL);
/* Destroy nodes */
- treeview_delete_node(tree, tree->root);
+ treeview_delete_node_internal(tree, tree->root, false);
/* Destroy feilds */
for (f = 0; f <= tree->n_fields; f++) {
@@ -1082,7 +1107,7 @@ static bool treeview_node_selection_walk_cb(struct treeview_node
*node,
case TREEVIEW_WALK_DELETE_SELECTION:
if (node->flags & TREE_NODE_SELECTED) {
- treeview_delete_node(sw->tree, node);
+ treeview_delete_node_internal(sw->tree, node, true);
changed = true;
}
break;
diff --git a/desktop/treeview.h b/desktop/treeview.h
index ad6aafc..475b90e 100644
--- a/desktop/treeview.h
+++ b/desktop/treeview.h
@@ -41,7 +41,15 @@ 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_NO_MOVES = (1 << 0), /**< No node drags */
+ TREEVIEW_NO_DELETES = (1 << 1), /**< No node deletes */
+ TREEVIEW_READ_ONLY = TREEVIEW_NO_MOVES | TREEVIEW_NO_DELETES,
+ TREEVIEW_DEL_EMPTY_DIRS = (1 << 2) /**< Delete dirs on empty */
+} treeview_flags;
enum treeview_msg {
TREE_MSG_NODE_DELETE, /**< Node to be deleted */
@@ -108,6 +116,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 +131,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
--
NetSurf Browser