diff options
Diffstat (limited to 'source/dialogs/script.c')
-rw-r--r-- | source/dialogs/script.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/source/dialogs/script.c b/source/dialogs/script.c index 653a5726..c7cc6d70 100644 --- a/source/dialogs/script.c +++ b/source/dialogs/script.c @@ -69,6 +69,8 @@ typedef struct char *prompt; gboolean do_markup; char delim; + /** no custom */ + gboolean no_custom; } ScriptModePrivateData; /** @@ -131,6 +133,8 @@ static void parse_header_entry ( Mode *sw, char *line, ssize_t length ) } else if ( strcasecmp ( line, "delim" ) == 0 ) { pd->delim = helper_parse_char ( value ); + } else if ( strcasecmp ( line, "no-custom" ) == 0 ) { + pd->no_custom = ( strcasecmp ( value, "true") == 0 ); } } } @@ -272,7 +276,11 @@ static ModeMode script_mode_result ( Mode *sw, int mretv, char **input, unsigned if ( selected_line != UINT32_MAX ) { new_list = execute_executor ( sw, rmpd->cmd_list[selected_line].entry, &new_length,10+( mretv & MENU_LOWER_MASK ) ); } else { - new_list = execute_executor ( sw, *input, &new_length,10+( mretv & MENU_LOWER_MASK ) ); + if ( rmpd->no_custom == FALSE ) { + new_list = execute_executor ( sw, *input, &new_length,10+( mretv & MENU_LOWER_MASK ) ); + } else { + return RELOAD_DIALOG; + } } } else if ( ( mretv & MENU_OK ) && rmpd->cmd_list[selected_line].entry != NULL ) { @@ -283,8 +291,12 @@ static ModeMode script_mode_result ( Mode *sw, int mretv, char **input, unsigned new_list = execute_executor ( sw, rmpd->cmd_list[selected_line].entry, &new_length, 1 ); } else if ( ( mretv & MENU_CUSTOM_INPUT ) && *input != NULL && *input[0] != '\0' ) { - script_mode_reset_highlight ( sw ); - new_list = execute_executor ( sw, *input, &new_length, 2 ); + if ( rmpd->no_custom == FALSE ) { + script_mode_reset_highlight ( sw ); + new_list = execute_executor ( sw, *input, &new_length, 2 ); + } else { + return RELOAD_DIALOG; + } } // If a new list was generated, use that an loop around. |