diff options
author | Dave Davenport <qball@gmpclient.org> | 2016-03-20 10:20:40 +0100 |
---|---|---|
committer | Dave Davenport <qball@gmpclient.org> | 2016-03-20 10:20:40 +0100 |
commit | c7bc850bb8936944311e4a391ae2ade100e8948d (patch) | |
tree | 6a8241386829f1a55b5fd3baec63a610860376fa /source/dialogs | |
parent | d36ae81408385bb4278ab3af2aad127d815f2421 (diff) |
Fix reloading after deleting entry
Diffstat (limited to 'source/dialogs')
-rw-r--r-- | source/dialogs/run.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/source/dialogs/run.c b/source/dialogs/run.c index fc8afa89..f8efb5e4 100644 --- a/source/dialogs/run.c +++ b/source/dialogs/run.c @@ -359,6 +359,15 @@ static int run_mode_init ( Mode *sw ) return TRUE; } +static void run_mode_destroy ( Mode *sw ) +{ + RunModePrivateData *rmpd = (RunModePrivateData *) sw->private_data; + if ( rmpd != NULL ) { + g_strfreev ( rmpd->cmd_list ); + g_free ( rmpd ); + sw->private_data = NULL; + } +} static unsigned int run_mode_get_num_entries ( const Mode *sw ) { @@ -391,24 +400,14 @@ static ModeMode run_mode_result ( Mode *sw, int mretv, char **input, unsigned in else if ( ( mretv & MENU_ENTRY_DELETE ) && rmpd->cmd_list[selected_line] ) { delete_entry ( rmpd->cmd_list[selected_line] ); - g_free ( rmpd->cmd_list ); // Clear the list. - rmpd->cmd_list = NULL; - rmpd->cmd_list_length = 0; retv = RELOAD_DIALOG; + run_mode_destroy ( sw ); + run_mode_init ( sw ); } return retv; } -static void run_mode_destroy ( Mode *sw ) -{ - RunModePrivateData *rmpd = (RunModePrivateData *) sw->private_data; - if ( rmpd != NULL ) { - g_strfreev ( rmpd->cmd_list ); - g_free ( rmpd ); - sw->private_data = NULL; - } -} static char *_get_display_value ( const Mode *sw, unsigned int selected_line, G_GNUC_UNUSED int *state, int get_entry ) { |