summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/treeview.c23
-rw-r--r--desktop/treeview.h11
2 files changed, 34 insertions, 0 deletions
diff --git a/desktop/treeview.c b/desktop/treeview.c
index 3e23fbe55..3dcc2c304 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -4839,6 +4839,29 @@ int treeview_get_height(treeview *tree)
return height + search_height;
}
+/* Exported interface, documented in treeview.h */
+nserror treeview_set_search_string(
+ treeview *tree,
+ const char *string)
+{
+ if (!(tree->flags & TREEVIEW_SEARCHABLE)) {
+ return NSERROR_BAD_PARAMETER;
+ }
+
+ if (string == NULL || strlen(string) == 0) {
+ tree->search.active = false;
+ tree->search.search = false;
+ return treeview__search(tree, "", 0);
+ }
+
+ tree->search.active = true;
+ tree->search.search = true;
+ if (!textarea_set_text(tree->search.textarea, string)) {
+ return NSERROR_UNKNOWN;
+ }
+
+ return NSERROR_OK;
+}
/**
* Initialise the plot styles from CSS system colour values.
diff --git a/desktop/treeview.h b/desktop/treeview.h
index a8cf29ac5..df9b4fb26 100644
--- a/desktop/treeview.h
+++ b/desktop/treeview.h
@@ -495,4 +495,15 @@ void treeview_edit_selection(treeview *tree);
*/
int treeview_get_height(treeview *tree);
+
+/**
+ * Set the search string for a treeview with \ref TREEVIEW_SEARCHABLE
+ *
+ * \param tree Tree to set the search string for.
+ * \return NSERROR_OK on success, appropriate error otherwise
+ */
+nserror treeview_set_search_string(
+ treeview *tree,
+ const char *string);
+
#endif