From a01b8edd7aac448c3916ed9b5374be589d5fc493 Mon Sep 17 00:00:00 2001 From: Slava Zanko Date: Fri, 18 Feb 2011 14:13:44 +0200 Subject: [PATCH] Use events for suspend mc (by pressing on CTRL+Z) Signed-off-by: Slava Zanko --- lib/widget/dialog.c | 3 +-- src/events_init.c | 2 ++ src/execute.c | 13 +++++++++++-- src/execute.h | 3 ++- src/filemanager/midnight.c | 9 +++------ 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lib/widget/dialog.c b/lib/widget/dialog.c index b18001f48..2d280dba7 100644 --- a/lib/widget/dialog.c +++ b/lib/widget/dialog.c @@ -42,7 +42,6 @@ /* TODO: these includes should be removed! */ #include "src/help.h" /* interactive_display() */ #include "src/filemanager/layout.h" -#include "src/execute.h" /* suspend_cmd() */ /*** global variables ****************************************************************************/ @@ -275,7 +274,7 @@ dlg_execute_cmd (Dlg_head * h, unsigned long command) break; case CK_Suspend: - suspend_cmd (); + mc_event_raise (MCEVENT_GROUP_CORE, "suspend", NULL); refresh_cmd (); break; case CK_Refresh: diff --git a/src/events_init.c b/src/events_init.c index 7724640a3..6b767cca8 100644 --- a/src/events_init.c +++ b/src/events_init.c @@ -29,6 +29,7 @@ #include "clipboard.h" /* clipboard events */ #include "help.h" /* help_interactive_display() */ +#include "execute.h" /* execute_suspend() */ #include "events_init.h" @@ -60,6 +61,7 @@ events_init (GError ** error) {MCEVENT_GROUP_CORE, "clipboard_text_from_file", clipboard_text_from_file, NULL}, {MCEVENT_GROUP_CORE, "help", help_interactive_display, NULL}, + {MCEVENT_GROUP_CORE, "suspend", execute_suspend, NULL}, {NULL, NULL, NULL, NULL} }; diff --git a/src/execute.c b/src/execute.c index bbda6de39..5a11e5f8e 100644 --- a/src/execute.c +++ b/src/execute.c @@ -399,15 +399,24 @@ toggle_panels (void) /* --------------------------------------------------------------------------------------------- */ -void -suspend_cmd (void) +/* event callback */ +gboolean +execute_suspend (const gchar * event_group_name, const gchar * event_name, + gpointer init_data, gpointer data) { + (void) event_group_name; + (void) event_name; + (void) init_data; + (void) data; + if (mc_global.mc_run_mode == MC_RUN_FULL) save_cwds_stat (); do_suspend_cmd (); if (mc_global.mc_run_mode == MC_RUN_FULL) update_panels (UP_OPTIMIZE, UP_KEEPSEL); do_refresh (); + + return TRUE; } /* --------------------------------------------------------------------------------------------- */ diff --git a/src/execute.h b/src/execute.h index 7730b7b91..a626c4403 100644 --- a/src/execute.h +++ b/src/execute.h @@ -40,7 +40,8 @@ void exec_shell (void); void toggle_panels (void); /* Handle toggling panels by Ctrl-Z */ -void suspend_cmd (void); +gboolean execute_suspend (const gchar * event_group_name, const gchar * event_name, + gpointer init_data, gpointer data); /* Execute command on a filename that can be on VFS */ void execute_with_vfs_arg (const char *command, const char *filename); diff --git a/src/filemanager/midnight.c b/src/filemanager/midnight.c index 4e01d7354..bba1107a4 100644 --- a/src/filemanager/midnight.c +++ b/src/filemanager/midnight.c @@ -55,7 +55,6 @@ #include "src/subshell.h" #include "src/setup.h" /* variables */ #include "src/learn.h" /* learn_keys() */ -#include "src/execute.h" /* suspend_cmd() */ #include "src/keybind-defaults.h" #include "lib/keybind.h" #include "lib/event.h" @@ -645,10 +644,8 @@ create_panels (void) current_panel = left_panel; #if ENABLE_VFS - mc_event_add (MCEVENT_GROUP_CORE, "vfs_timestamp", check_other_panel_timestamp, NULL, - NULL); - mc_event_add (MCEVENT_GROUP_CORE, "vfs_timestamp", check_current_panel_timestamp, NULL, - NULL); + mc_event_add (MCEVENT_GROUP_CORE, "vfs_timestamp", check_other_panel_timestamp, NULL, NULL); + mc_event_add (MCEVENT_GROUP_CORE, "vfs_timestamp", check_current_panel_timestamp, NULL, NULL); #endif /* ENABLE_VFS */ mc_event_add (MCEVENT_GROUP_CORE, "vfs_print_message", print_vfs_message, NULL, NULL); @@ -1356,7 +1353,7 @@ midnight_execute_cmd (Widget * sender, unsigned long command) ctl_x_cmd (); break; case CK_Suspend: - suspend_cmd (); + mc_event_raise (MCEVENT_GROUP_CORE, "suspend", NULL); break; case CK_Swap: swap_cmd ();