* editwidget.c (edit_file): Move menu initialization ...
* editmenu.c (edit_init_menu): ... here. Allocate menu dynamically. (edit_done_menu): Take Wmenu argument rather than Menu. Free menu. (edit_reload_menu): New function, reload the menu. (edit_options_dialog): Reload the menu if key emulation has changed.
Этот коммит содержится в:
родитель
9260860bbf
Коммит
cd702593f6
@ -1,5 +1,14 @@
|
|||||||
2005-05-20 Pavel Roskin <proski@gnu.org>
|
2005-05-20 Pavel Roskin <proski@gnu.org>
|
||||||
|
|
||||||
|
* editwidget.c (edit_file): Move menu initialization ...
|
||||||
|
* editmenu.c (edit_init_menu): ... here. Allocate menu
|
||||||
|
dynamically.
|
||||||
|
(edit_done_menu): Take Wmenu argument rather than Menu. Free
|
||||||
|
menu.
|
||||||
|
(edit_reload_menu): New function, reload the menu.
|
||||||
|
(edit_options_dialog): Reload the menu if key emulation has
|
||||||
|
changed.
|
||||||
|
|
||||||
* edit.h: Eliminate global EditMenuBar. Fix all dependencies.
|
* edit.h: Eliminate global EditMenuBar. Fix all dependencies.
|
||||||
|
|
||||||
* edit.h: Eliminate edit_message_dialog macro - it's used
|
* edit.h: Eliminate edit_message_dialog macro - it's used
|
||||||
|
@ -111,9 +111,9 @@ struct Menu;
|
|||||||
|
|
||||||
int edit_drop_hotkey_menu (WEdit *e, int key);
|
int edit_drop_hotkey_menu (WEdit *e, int key);
|
||||||
void edit_menu_cmd (WEdit *e);
|
void edit_menu_cmd (WEdit *e);
|
||||||
void edit_init_menu_emacs (struct Menu *EditMenuBar[]);
|
struct WMenu *edit_init_menu (void);
|
||||||
void edit_init_menu_normal (struct Menu *EditMenuBar[]);
|
void edit_done_menu (struct WMenu *wmenu);
|
||||||
void edit_done_menu (struct Menu *EditMenuBar[]);
|
void edit_reload_menu (void);
|
||||||
void menu_save_mode_cmd (void);
|
void menu_save_mode_cmd (void);
|
||||||
int edit_raw_key_query (const char *heading, const char *query, int cancel);
|
int edit_raw_key_query (const char *heading, const char *query, int cancel);
|
||||||
int edit_file (const char *_file, int line);
|
int edit_file (const char *_file, int line);
|
||||||
|
@ -437,11 +437,42 @@ void edit_init_menu_emacs (struct Menu *EditMenuBar[])
|
|||||||
"[Internal File Editor]");
|
"[Internal File Editor]");
|
||||||
}
|
}
|
||||||
|
|
||||||
void edit_done_menu (struct Menu *EditMenuBar[])
|
struct WMenu *
|
||||||
|
edit_init_menu (void)
|
||||||
|
{
|
||||||
|
struct Menu **EditMenuBar = g_new(struct Menu *, N_menus);
|
||||||
|
|
||||||
|
switch (edit_key_emulation) {
|
||||||
|
case EDIT_KEY_EMULATION_NORMAL:
|
||||||
|
edit_init_menu_normal (EditMenuBar);
|
||||||
|
break;
|
||||||
|
case EDIT_KEY_EMULATION_EMACS:
|
||||||
|
edit_init_menu_emacs (EditMenuBar);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return menubar_new (0, 0, COLS, EditMenuBar, N_menus);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
edit_done_menu (struct WMenu *wmenu)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < N_menus; i++)
|
for (i = 0; i < N_menus; i++)
|
||||||
destroy_menu (EditMenuBar[i]);
|
destroy_menu (wmenu->menu[i]);
|
||||||
|
|
||||||
|
g_free(wmenu->menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
edit_reload_menu (void)
|
||||||
|
{
|
||||||
|
struct WMenu *new_edit_menubar;
|
||||||
|
|
||||||
|
new_edit_menubar = edit_init_menu ();
|
||||||
|
dlg_replace_widget (&edit_menubar->widget, &new_edit_menubar->widget);
|
||||||
|
edit_done_menu (edit_menubar);
|
||||||
|
edit_menubar = new_edit_menubar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -212,7 +212,11 @@ edit_options_dialog (void)
|
|||||||
option_typewriter_wrap = 0;
|
option_typewriter_wrap = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reload menu if key emulation has changed */
|
||||||
|
if (edit_key_emulation != tedit_key_emulation) {
|
||||||
edit_key_emulation = tedit_key_emulation;
|
edit_key_emulation = tedit_key_emulation;
|
||||||
|
edit_reload_menu ();
|
||||||
|
}
|
||||||
|
|
||||||
/* Load or unload syntax rules if the option has changed */
|
/* Load or unload syntax rules if the option has changed */
|
||||||
if (option_syntax_highlighting != old_syntax_hl)
|
if (option_syntax_highlighting != old_syntax_hl)
|
||||||
|
@ -47,7 +47,6 @@
|
|||||||
|
|
||||||
WEdit *wedit;
|
WEdit *wedit;
|
||||||
struct WMenu *edit_menubar;
|
struct WMenu *edit_menubar;
|
||||||
struct Menu *EditMenuBar[N_menus];
|
|
||||||
|
|
||||||
int column_highlighting = 0;
|
int column_highlighting = 0;
|
||||||
|
|
||||||
@ -215,15 +214,7 @@ edit_file (const char *_file, int line)
|
|||||||
|
|
||||||
edit_bar = buttonbar_new (1);
|
edit_bar = buttonbar_new (1);
|
||||||
|
|
||||||
switch (edit_key_emulation) {
|
edit_menubar = edit_init_menu ();
|
||||||
case EDIT_KEY_EMULATION_NORMAL:
|
|
||||||
edit_init_menu_normal (EditMenuBar); /* editmenu.c */
|
|
||||||
break;
|
|
||||||
case EDIT_KEY_EMULATION_EMACS:
|
|
||||||
edit_init_menu_emacs (EditMenuBar); /* editmenu.c */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
edit_menubar = menubar_new (0, 0, COLS, EditMenuBar, N_menus);
|
|
||||||
|
|
||||||
add_widget (edit_dlg, edit_bar);
|
add_widget (edit_dlg, edit_bar);
|
||||||
add_widget (edit_dlg, wedit);
|
add_widget (edit_dlg, wedit);
|
||||||
@ -231,7 +222,7 @@ edit_file (const char *_file, int line)
|
|||||||
|
|
||||||
run_dlg (edit_dlg);
|
run_dlg (edit_dlg);
|
||||||
|
|
||||||
edit_done_menu (EditMenuBar); /* editmenu.c */
|
edit_done_menu (edit_menubar); /* editmenu.c */
|
||||||
|
|
||||||
destroy_dlg (edit_dlg);
|
destroy_dlg (edit_dlg);
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user