* 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>
|
||||
|
||||
* 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 edit_message_dialog macro - it's used
|
||||
|
@ -111,9 +111,9 @@ struct Menu;
|
||||
|
||||
int edit_drop_hotkey_menu (WEdit *e, int key);
|
||||
void edit_menu_cmd (WEdit *e);
|
||||
void edit_init_menu_emacs (struct Menu *EditMenuBar[]);
|
||||
void edit_init_menu_normal (struct Menu *EditMenuBar[]);
|
||||
void edit_done_menu (struct Menu *EditMenuBar[]);
|
||||
struct WMenu *edit_init_menu (void);
|
||||
void edit_done_menu (struct WMenu *wmenu);
|
||||
void edit_reload_menu (void);
|
||||
void menu_save_mode_cmd (void);
|
||||
int edit_raw_key_query (const char *heading, const char *query, int cancel);
|
||||
int edit_file (const char *_file, int line);
|
||||
|
@ -437,11 +437,42 @@ void edit_init_menu_emacs (struct Menu *EditMenuBar[])
|
||||
"[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;
|
||||
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;
|
||||
}
|
||||
|
||||
edit_key_emulation = tedit_key_emulation;
|
||||
/* Reload menu if key emulation has changed */
|
||||
if (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 */
|
||||
if (option_syntax_highlighting != old_syntax_hl)
|
||||
|
@ -47,7 +47,6 @@
|
||||
|
||||
WEdit *wedit;
|
||||
struct WMenu *edit_menubar;
|
||||
struct Menu *EditMenuBar[N_menus];
|
||||
|
||||
int column_highlighting = 0;
|
||||
|
||||
@ -215,15 +214,7 @@ edit_file (const char *_file, int line)
|
||||
|
||||
edit_bar = buttonbar_new (1);
|
||||
|
||||
switch (edit_key_emulation) {
|
||||
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);
|
||||
edit_menubar = edit_init_menu ();
|
||||
|
||||
add_widget (edit_dlg, edit_bar);
|
||||
add_widget (edit_dlg, wedit);
|
||||
@ -231,7 +222,7 @@ edit_file (const char *_file, int line)
|
||||
|
||||
run_dlg (edit_dlg);
|
||||
|
||||
edit_done_menu (EditMenuBar); /* editmenu.c */
|
||||
edit_done_menu (edit_menubar); /* editmenu.c */
|
||||
|
||||
destroy_dlg (edit_dlg);
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user