Applied Namsh's patch for i18n hotkey support in the menu code -mig
Этот коммит содержится в:
родитель
a533715938
Коммит
b2b9c116f7
14
src/main.c
14
src/main.c
@ -1335,19 +1335,19 @@ init_menu (void)
|
||||
int i;
|
||||
|
||||
#ifdef HAVE_X
|
||||
MenuBar [0] = create_menu (_(" Left "), PanelMenu, menu_entries (PanelMenu));
|
||||
MenuBar [0] = create_menu (_(" &Left "), PanelMenu, menu_entries (PanelMenu));
|
||||
#else
|
||||
MenuBar [0] = create_menu ( horizontal_split ? _(" Above ") : _(" Left "),
|
||||
MenuBar [0] = create_menu ( horizontal_split ? _(" &Above ") : _(" &Left "),
|
||||
PanelMenu, menu_entries (PanelMenu));
|
||||
#endif
|
||||
MenuBar [1] = create_menu (_(" File "), FileMenu, menu_entries (FileMenu));
|
||||
MenuBar [2] = create_menu (_(" Command "), CmdMenu, menu_entries (CmdMenu));
|
||||
MenuBar [3] = create_menu (_(" Options "), OptMenu, menu_entries (OptMenu));
|
||||
MenuBar [1] = create_menu (_(" &File "), FileMenu, menu_entries (FileMenu));
|
||||
MenuBar [2] = create_menu (_(" &Command "), CmdMenu, menu_entries (CmdMenu));
|
||||
MenuBar [3] = create_menu (_(" &Options "), OptMenu, menu_entries (OptMenu));
|
||||
#ifndef HAVE_XVIEW
|
||||
#ifdef HAVE_X
|
||||
MenuBar [4] = create_menu (_(" Right "), RightMenu, menu_entries (PanelMenu));
|
||||
MenuBar [4] = create_menu (_(" &Right "), RightMenu, menu_entries (PanelMenu));
|
||||
#else
|
||||
MenuBar [4] = create_menu (horizontal_split ? _(" Below ") : _(" Right "),
|
||||
MenuBar [4] = create_menu (horizontal_split ? _(" &Below ") : _(" &Right "),
|
||||
RightMenu, menu_entries (PanelMenu));
|
||||
for (i = 0; i < 5; i++)
|
||||
MenuBarEmpty [i] = create_menu (MenuBar [i]->name, 0, 0);
|
||||
|
21
src/menu.c
21
src/menu.c
@ -38,6 +38,18 @@
|
||||
extern int is_right;
|
||||
int menubar_visible = 1; /* This is the new default */
|
||||
|
||||
static void menu_scan_hotkey(Menu menu)
|
||||
{
|
||||
char* cp = strchr (menu->name, '&');
|
||||
|
||||
if (cp != NULL && cp[1] != '\0'){
|
||||
strcpy (cp, cp+1);
|
||||
menu->hotkey = tolower(*cp);
|
||||
}
|
||||
else
|
||||
menu->hotkey = 0;
|
||||
}
|
||||
|
||||
Menu create_menu (char *name, menu_entry *entries, int count)
|
||||
{
|
||||
Menu menu;
|
||||
@ -61,8 +73,9 @@ Menu create_menu (char *name, menu_entry *entries, int count)
|
||||
}
|
||||
#endif /* ENABLE_NLS */
|
||||
|
||||
menu->name = _(name);
|
||||
menu->start_x = 0;
|
||||
menu->name = strdup( _(name) );
|
||||
menu_scan_hotkey(menu);
|
||||
menu->start_x = 0;
|
||||
return menu;
|
||||
}
|
||||
|
||||
@ -272,8 +285,7 @@ static int menubar_handle_key (WMenu *menubar, int key)
|
||||
for (i = 0; i < items; i++){
|
||||
const Menu menu = menubar->menu [i];
|
||||
|
||||
/* Hack, we should check for the upper case letter */
|
||||
if (tolower (menu->name [1]) == key){
|
||||
if (menu->hotkey == key){
|
||||
menubar_drop (menubar, i);
|
||||
return 1;
|
||||
}
|
||||
@ -505,6 +517,7 @@ menubar_arrange(WMenu* menubar)
|
||||
void
|
||||
destroy_menu (Menu menu)
|
||||
{
|
||||
free (menu->name);
|
||||
free (menu);
|
||||
}
|
||||
|
||||
|
@ -31,6 +31,7 @@ typedef struct {
|
||||
int count;
|
||||
int max_entry_len;
|
||||
int selected;
|
||||
int hotkey;
|
||||
menu_entry *entries;
|
||||
int start_x; /* position relative to menubar start */
|
||||
} sMenu;
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user