summaryrefslogtreecommitdiffstats
path: root/source/dialogs
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2016-03-20 10:20:40 +0100
committerDave Davenport <qball@gmpclient.org>2016-03-20 10:20:40 +0100
commitc7bc850bb8936944311e4a391ae2ade100e8948d (patch)
tree6a8241386829f1a55b5fd3baec63a610860376fa /source/dialogs
parentd36ae81408385bb4278ab3af2aad127d815f2421 (diff)
Fix reloading after deleting entry
Diffstat (limited to 'source/dialogs')
-rw-r--r--source/dialogs/run.c23
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 )
{