1
1

Applied Namsh's patch for i18n hotkey support in the menu code -mig

Этот коммит содержится в:
Miguel de Icaza 1998-06-08 00:33:31 +00:00
родитель a533715938
Коммит b2b9c116f7
3 изменённых файлов: 25 добавлений и 11 удалений

Просмотреть файл

@ -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);

Просмотреть файл

@ -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;