diff --git a/src/editor/edit.c b/src/editor/edit.c index 293181291..e9395ebba 100644 --- a/src/editor/edit.c +++ b/src/editor/edit.c @@ -1785,7 +1785,7 @@ user_menu (WEdit * edit, const char *menu_file, int selected_entry) edit_save_block (edit, block_file, start_mark, end_mark); /* run shell scripts from menu */ - if (user_menu_cmd (edit, menu_file, selected_entry) + if (user_menu_cmd (CONST_WIDGET (edit), menu_file, selected_entry) && (mc_stat (block_file_vpath, &status) == 0) && (status.st_size != 0)) { int rc = 0; diff --git a/src/usermenu.c b/src/usermenu.c index 04c6b6aad..cd6be5b7b 100644 --- a/src/usermenu.c +++ b/src/usermenu.c @@ -44,9 +44,10 @@ #include "lib/vfs/vfs.h" #include "lib/strutil.h" #include "lib/util.h" -#include "lib/widget.h" -#include "src/editor/edit.h" /* WEdit, BLOCK_FILE */ +#ifdef USE_INTERNAL_EDIT +#include "src/editor/edit.h" /* WEdit */ +#endif #include "src/viewer/mcviewer.h" /* for default_* externs */ #include "src/args.h" /* mc_run_param0 */ @@ -219,10 +220,13 @@ test_type (WPanel * panel, char *arg) p. Returns the point after condition. */ static char * -test_condition (const WEdit * edit_widget, char *p, gboolean * condition) +test_condition (const Widget * edit_widget, char *p, gboolean * condition) { char arg[256]; const mc_search_type_t search_type = easy_patterns ? MC_SEARCH_T_GLOB : MC_SEARCH_T_REGEX; +#ifdef USE_INTERNAL_EDIT + const WEdit *e = (const WEdit *) edit_widget; +#endif /* Handle one condition */ for (; *p != '\n' && *p != '&' && *p != '|'; p++) @@ -249,11 +253,11 @@ test_condition (const WEdit * edit_widget, char *p, gboolean * condition) case 'f': /* file name pattern */ p = extract_arg (p, arg, sizeof (arg)); #ifdef USE_INTERNAL_EDIT - if (edit_widget != NULL) + if (e != NULL) { const char *edit_filename; - edit_filename = edit_get_file_name (edit_widget); + edit_filename = edit_get_file_name (e); *condition = mc_search (arg, DEFAULT_CHARSET, edit_filename, search_type); } else @@ -264,11 +268,11 @@ test_condition (const WEdit * edit_widget, char *p, gboolean * condition) break; case 'y': /* syntax pattern */ #ifdef USE_INTERNAL_EDIT - if (edit_widget != NULL) + if (e != NULL) { const char *syntax_type; - syntax_type = edit_get_syntax_type (edit_widget); + syntax_type = edit_get_syntax_type (e); if (syntax_type != NULL) { p = extract_arg (p, arg, sizeof (arg)); @@ -360,7 +364,7 @@ debug_out (char *start, char *end, gboolean condition) the point just before the end of line. */ static char * -test_line (const WEdit * edit_widget, char *p, gboolean * result) +test_line (const Widget * edit_widget, char *p, gboolean * result) { char operator; @@ -426,7 +430,7 @@ test_line (const WEdit * edit_widget, char *p, gboolean * result) /** FIXME: recode this routine on version 3.0, it could be cleaner */ static void -execute_menu_command (const WEdit * edit_widget, const char *commands, gboolean show_prompt) +execute_menu_command (const Widget * edit_widget, const char *commands, gboolean show_prompt) { FILE *cmd_file; int cmd_file_fd; @@ -742,7 +746,7 @@ check_format_var (const char *p, char **v) /* --------------------------------------------------------------------------------------------- */ char * -expand_format (const WEdit * edit_widget, char c, gboolean do_quote) +expand_format (const Widget * edit_widget, char c, gboolean do_quote) { WPanel *panel = NULL; char *(*quote_func) (const char *, gboolean); @@ -750,7 +754,9 @@ expand_format (const WEdit * edit_widget, char c, gboolean do_quote) char *result; char c_lc; -#ifndef USE_INTERNAL_EDIT +#ifdef USE_INTERNAL_EDIT + const WEdit *e = (const WEdit *) edit_widget; +#else (void) edit_widget; #endif @@ -761,8 +767,8 @@ expand_format (const WEdit * edit_widget, char c, gboolean do_quote) { case MC_RUN_FULL: #ifdef USE_INTERNAL_EDIT - if (edit_widget != NULL) - fname = edit_get_file_name (edit_widget); + if (e != NULL) + fname = edit_get_file_name (e); else #endif { @@ -781,7 +787,7 @@ expand_format (const WEdit * edit_widget, char c, gboolean do_quote) #ifdef USE_INTERNAL_EDIT case MC_RUN_EDITOR: - fname = edit_get_file_name (edit_widget); + fname = edit_get_file_name (e); break; #endif @@ -828,29 +834,29 @@ expand_format (const WEdit * edit_widget, char c, gboolean do_quote) } case 'c': #ifdef USE_INTERNAL_EDIT - if (edit_widget != NULL) + if (e != NULL) { - result = g_strdup_printf ("%u", (unsigned int) edit_get_cursor_offset (edit_widget)); + result = g_strdup_printf ("%u", (unsigned int) edit_get_cursor_offset (e)); goto ret; } #endif break; case 'i': /* indent equal number cursor position in line */ #ifdef USE_INTERNAL_EDIT - if (edit_widget != NULL) + if (e != NULL) { - result = g_strnfill (edit_get_curs_col (edit_widget), ' '); + result = g_strnfill (edit_get_curs_col (e), ' '); goto ret; } #endif break; case 'y': /* syntax type */ #ifdef USE_INTERNAL_EDIT - if (edit_widget != NULL) + if (e != NULL) { const char *syntax_type; - syntax_type = edit_get_syntax_type (edit_widget); + syntax_type = edit_get_syntax_type (e); if (syntax_type != NULL) { result = g_strdup (syntax_type); @@ -862,7 +868,7 @@ expand_format (const WEdit * edit_widget, char c, gboolean do_quote) case 'k': /* block file name */ case 'b': /* block file name / strip extension */ #ifdef USE_INTERNAL_EDIT - if (edit_widget != NULL) + if (e != NULL) { char *file; @@ -880,7 +886,7 @@ expand_format (const WEdit * edit_widget, char c, gboolean do_quote) break; case 'n': /* strip extension in editor */ #ifdef USE_INTERNAL_EDIT - if (edit_widget != NULL) + if (e != NULL) { result = strip_ext (quote_func (fname, FALSE)); goto ret; @@ -950,7 +956,7 @@ expand_format (const WEdit * edit_widget, char c, gboolean do_quote) */ gboolean -user_menu_cmd (const WEdit * edit_widget, const char *menu_file, int selected_entry) +user_menu_cmd (const Widget * edit_widget, const char *menu_file, int selected_entry) { char *p; char *data, **entries; diff --git a/src/usermenu.h b/src/usermenu.h index 028cd8866..7a997fe5a 100644 --- a/src/usermenu.h +++ b/src/usermenu.h @@ -6,8 +6,7 @@ #define MC__USERMENU_H #include "lib/global.h" - -#include "src/editor/edit.h" /* WEdit */ +#include "lib/widget.h" /*** typedefs(not structures) and defined constants **********************************************/ @@ -19,8 +18,8 @@ /*** declarations of public functions ************************************************************/ -gboolean user_menu_cmd (const WEdit * edit_widget, const char *menu_file, int selected_entry); -char *expand_format (const WEdit * edit_widget, char c, gboolean do_quote); +gboolean user_menu_cmd (const Widget * edit_widget, const char *menu_file, int selected_entry); +char *expand_format (const Widget * edit_widget, char c, gboolean do_quote); int check_format_view (const char *p); int check_format_var (const char *p, char **v); int check_format_cd (const char *p);