summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2023-06-04 14:36:14 +0200
committerDave Davenport <qball@gmpclient.org>2023-06-04 14:36:14 +0200
commit722f07a803c28a406d8a610f31a24b3f7247b9ba (patch)
tree5c89f3c2a39fab0bc9e4e2834d56a766749894e1
parent7972420c30275514751802d1ed517a45bbd83da1 (diff)
Add methods for completer to modes.
-rw-r--r--include/mode-private.h4
-rw-r--r--source/modes/filebrowser.c2
-rw-r--r--source/modes/recursivebrowser.c41
3 files changed, 8 insertions, 39 deletions
diff --git a/include/mode-private.h b/include/mode-private.h
index 08c6043b..6ccdee37 100644
--- a/include/mode-private.h
+++ b/include/mode-private.h
@@ -232,12 +232,12 @@ struct rofi_mode {
/**
* Create mode.
*/
- _mode_create create;
+ _mode_create _create;
/**
* If this mode is used as completer.
*/
- _mode_completer_result completer_result;
+ _mode_completer_result _completer_result;
/** Extra fields for script */
void *ed;
diff --git a/source/modes/filebrowser.c b/source/modes/filebrowser.c
index bed84927..b32d83f0 100644
--- a/source/modes/filebrowser.c
+++ b/source/modes/filebrowser.c
@@ -727,6 +727,8 @@ Mode file_browser_mode = {
._get_message = _get_message,
._get_completion = _get_completion,
._preprocess_input = NULL,
+ ._create = create_new_file_browser,
+ ._completer_result = file_browser_mode_completer,
.private_data = NULL,
.free = NULL,
.type = MODE_TYPE_SWITCHER|MODE_TYPE_COMPLETER
diff --git a/source/modes/recursivebrowser.c b/source/modes/recursivebrowser.c
index 8293e8a4..e88d3362 100644
--- a/source/modes/recursivebrowser.c
+++ b/source/modes/recursivebrowser.c
@@ -487,7 +487,7 @@ Mode *create_new_recursive_browser(void) {
return sw;
}
-#if 0
+#if 1
ModeMode recursive_browser_mode_completer(Mode *sw, int mretv, char **input,
unsigned int selected_line,
char **path) {
@@ -502,49 +502,15 @@ ModeMode recursive_browser_mode_completer(Mode *sw, int mretv, char **input,
retv = (mretv & MENU_LOWER_MASK);
} else if ((mretv & MENU_OK)) {
if (selected_line < pd->array_length) {
- if (pd->array[selected_line].type == UP) {
- GFile *new = g_file_get_parent(pd->current_dir);
- if (new) {
- g_object_unref(pd->current_dir);
- pd->current_dir = new;
- free_list(pd);
- get_recursive_browser(sw, pd->current_dir);
- return RESET_DIALOG;
- }
- } else if (pd->array[selected_line].type == DIRECTORY) {
- GFile *new = g_file_new_for_path(pd->array[selected_line].path);
- g_object_unref(pd->current_dir);
- pd->current_dir = new;
- free_list(pd);
- get_recursive_browser(sw, pd->current_dir);
- return RESET_DIALOG;
- } else if (pd->array[selected_line].type == RFILE) {
+ if (pd->array[selected_line].type == RFILE) {
*path = g_strescape(pd->array[selected_line].path, NULL);
return MODE_EXIT;
}
}
retv = RELOAD_DIALOG;
} else if ((mretv & MENU_CUSTOM_INPUT) && *input) {
- char *p = rofi_expand_path(*input);
- char *dir = g_filename_from_utf8(p, -1, NULL, NULL, NULL);
- g_free(p);
- if (g_file_test(dir, G_FILE_TEST_EXISTS)) {
- if (g_file_test(dir, G_FILE_TEST_IS_DIR)) {
- g_object_unref(pd->current_dir);
- pd->current_dir = g_file_new_for_path(dir);
- g_free(dir);
- free_list(pd);
- get_recursive_browser(sw, pd->current_dir);
- return RESET_DIALOG;
- }
- }
- g_free(dir);
retv = RELOAD_DIALOG;
} else if ((mretv & MENU_ENTRY_DELETE) == MENU_ENTRY_DELETE) {
- recursive_browser_config.show_hidden =
- !recursive_browser_config.show_hidden;
- free_list(pd);
- get_recursive_browser(sw, pd->current_dir);
retv = RELOAD_DIALOG;
}
return retv;
@@ -566,8 +532,9 @@ Mode recursive_browser_mode = {
._get_message = _get_message,
._get_completion = _get_completion,
._preprocess_input = NULL,
+ ._create = create_new_recursive_browser,
+ ._completer_result = recursive_browser_mode_completer,
.private_data = NULL,
.free = NULL,
- .create = create_new_recursive_browser,
.type = MODE_TYPE_SWITCHER|MODE_TYPE_COMPLETER
};