diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/w32menu.c | 80 |
1 files changed, 48 insertions, 32 deletions
diff --git a/src/w32menu.c b/src/w32menu.c index a30328e7ea9..74d4f2754b4 100644 --- a/src/w32menu.c +++ b/src/w32menu.c | |||
| @@ -1168,11 +1168,16 @@ single_submenu (item_key, item_name, maps) | |||
| 1168 | /* Create a new pane. */ | 1168 | /* Create a new pane. */ |
| 1169 | Lisp_Object pane_name, prefix; | 1169 | Lisp_Object pane_name, prefix; |
| 1170 | char *pane_string; | 1170 | char *pane_string; |
| 1171 | |||
| 1171 | pane_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_NAME]; | 1172 | pane_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_NAME]; |
| 1172 | prefix = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_PREFIX]; | 1173 | prefix = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_PREFIX]; |
| 1174 | |||
| 1173 | #ifndef HAVE_MULTILINGUAL_MENU | 1175 | #ifndef HAVE_MULTILINGUAL_MENU |
| 1174 | if (STRINGP (pane_name) && STRING_MULTIBYTE (pane_name)) | 1176 | if (STRINGP (pane_name) && STRING_MULTIBYTE (pane_name)) |
| 1175 | pane_name = ENCODE_SYSTEM (pane_name); | 1177 | { |
| 1178 | pane_name = ENCODE_SYSTEM (pane_name); | ||
| 1179 | AREF (menu_items, i + MENU_ITEMS_PANE_NAME) = pane_name; | ||
| 1180 | } | ||
| 1176 | #endif | 1181 | #endif |
| 1177 | pane_string = (NILP (pane_name) | 1182 | pane_string = (NILP (pane_name) |
| 1178 | ? "" : (char *) XSTRING (pane_name)->data); | 1183 | ? "" : (char *) XSTRING (pane_name)->data); |
| @@ -1210,21 +1215,27 @@ single_submenu (item_key, item_name, maps) | |||
| 1210 | Lisp_Object item_name, enable, descrip, def, type, selected; | 1215 | Lisp_Object item_name, enable, descrip, def, type, selected; |
| 1211 | Lisp_Object help; | 1216 | Lisp_Object help; |
| 1212 | 1217 | ||
| 1213 | item_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_NAME]; | 1218 | item_name = AREF (menu_items, i + MENU_ITEMS_ITEM_NAME); |
| 1214 | enable = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_ENABLE]; | 1219 | enable = AREF (menu_items, i + MENU_ITEMS_ITEM_ENABLE); |
| 1215 | descrip | 1220 | descrip = AREF (menu_items, i + MENU_ITEMS_ITEM_EQUIV_KEY); |
| 1216 | = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_EQUIV_KEY]; | 1221 | def = AREF (menu_items, i + MENU_ITEMS_ITEM_DEFINITION); |
| 1217 | def = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_DEFINITION]; | 1222 | type = AREF (menu_items, i + MENU_ITEMS_ITEM_TYPE); |
| 1218 | type = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_TYPE]; | 1223 | selected = AREF (menu_items, i + MENU_ITEMS_ITEM_SELECTED); |
| 1219 | selected = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_SELECTED]; | 1224 | help = AREF (menu_items, i + MENU_ITEMS_ITEM_HELP); |
| 1220 | help = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_HELP]; | ||
| 1221 | 1225 | ||
| 1222 | #ifndef HAVE_MULTILINGUAL_MENU | 1226 | #ifndef HAVE_MULTILINGUAL_MENU |
| 1223 | if (STRING_MULTIBYTE (item_name)) | 1227 | if (STRING_MULTIBYTE (item_name)) |
| 1224 | item_name = ENCODE_SYSTEM (item_name); | 1228 | { |
| 1229 | item_name = ENCODE_SYSTEM (item_name); | ||
| 1230 | AREF (menu_items, i + MENU_ITEMS_ITEM_NAME) = item_name; | ||
| 1231 | } | ||
| 1232 | |||
| 1225 | if (STRINGP (descrip) && STRING_MULTIBYTE (descrip)) | 1233 | if (STRINGP (descrip) && STRING_MULTIBYTE (descrip)) |
| 1226 | descrip = ENCODE_SYSTEM (descrip); | 1234 | { |
| 1227 | #endif | 1235 | descrip = ENCODE_SYSTEM (descrip); |
| 1236 | AREF (menu_items, i + MENU_ITEMS_ITEM_EQUIV_KEY) = descrip; | ||
| 1237 | } | ||
| 1238 | #endif /* not HAVE_MULTILINGUAL_MENU */ | ||
| 1228 | 1239 | ||
| 1229 | wv = xmalloc_widget_value (); | 1240 | wv = xmalloc_widget_value (); |
| 1230 | if (prev_wv) | 1241 | if (prev_wv) |
| @@ -1522,7 +1533,7 @@ free_frame_menubar (f) | |||
| 1522 | f->output_data.w32->menubar_widget = NULL; | 1533 | f->output_data.w32->menubar_widget = NULL; |
| 1523 | DestroyMenu (old); | 1534 | DestroyMenu (old); |
| 1524 | } | 1535 | } |
| 1525 | 1536 | ||
| 1526 | UNBLOCK_INPUT; | 1537 | UNBLOCK_INPUT; |
| 1527 | } | 1538 | } |
| 1528 | 1539 | ||
| @@ -1613,11 +1624,14 @@ w32_menu_show (f, x, y, for_click, keymaps, title, error) | |||
| 1613 | /* Create a new pane. */ | 1624 | /* Create a new pane. */ |
| 1614 | Lisp_Object pane_name, prefix; | 1625 | Lisp_Object pane_name, prefix; |
| 1615 | char *pane_string; | 1626 | char *pane_string; |
| 1616 | pane_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_NAME]; | 1627 | pane_name = AREF (menu_items, i + MENU_ITEMS_PANE_NAME); |
| 1617 | prefix = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_PREFIX]; | 1628 | prefix = AREF (menu_items, i + MENU_ITEMS_PANE_PREFIX); |
| 1618 | #ifndef HAVE_MULTILINGUAL_MENU | 1629 | #ifndef HAVE_MULTILINGUAL_MENU |
| 1619 | if (!NILP (pane_name) && STRING_MULTIBYTE (pane_name)) | 1630 | if (STRINGP (pane_name) && STRING_MULTIBYTE (pane_name)) |
| 1620 | pane_name = ENCODE_SYSTEM (pane_name); | 1631 | { |
| 1632 | pane_name = ENCODE_SYSTEM (pane_name); | ||
| 1633 | AREF (menu_items, i + MENU_ITEMS_PANE_NAME) = pane_name; | ||
| 1634 | } | ||
| 1621 | #endif | 1635 | #endif |
| 1622 | pane_string = (NILP (pane_name) | 1636 | pane_string = (NILP (pane_name) |
| 1623 | ? "" : (char *) XSTRING (pane_name)->data); | 1637 | ? "" : (char *) XSTRING (pane_name)->data); |
| @@ -1658,21 +1672,26 @@ w32_menu_show (f, x, y, for_click, keymaps, title, error) | |||
| 1658 | /* Create a new item within current pane. */ | 1672 | /* Create a new item within current pane. */ |
| 1659 | Lisp_Object item_name, enable, descrip, def, type, selected, help; | 1673 | Lisp_Object item_name, enable, descrip, def, type, selected, help; |
| 1660 | 1674 | ||
| 1661 | item_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_NAME]; | 1675 | item_name = AREF (menu_items, i + MENU_ITEMS_ITEM_NAME); |
| 1662 | enable = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_ENABLE]; | 1676 | enable = AREF (menu_items, i + MENU_ITEMS_ITEM_ENABLE); |
| 1663 | descrip | 1677 | descrip = AREF (menu_items, i + MENU_ITEMS_ITEM_EQUIV_KEY); |
| 1664 | = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_EQUIV_KEY]; | 1678 | def = AREF (menu_items, i + MENU_ITEMS_ITEM_DEFINITION); |
| 1665 | def = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_DEFINITION]; | 1679 | type = AREF (menu_items, i + MENU_ITEMS_ITEM_TYPE); |
| 1666 | type = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_TYPE]; | 1680 | selected = AREF (menu_items, i + MENU_ITEMS_ITEM_SELECTED); |
| 1667 | selected = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_SELECTED]; | 1681 | help = AREF (menu_items, i + MENU_ITEMS_ITEM_HELP); |
| 1668 | help = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_HELP]; | ||
| 1669 | 1682 | ||
| 1670 | #ifndef HAVE_MULTILINGUAL_MENU | 1683 | #ifndef HAVE_MULTILINGUAL_MENU |
| 1671 | if (STRINGP (item_name) && STRING_MULTIBYTE (item_name)) | 1684 | if (STRINGP (item_name) && STRING_MULTIBYTE (item_name)) |
| 1672 | item_name = ENCODE_SYSTEM (item_name); | 1685 | { |
| 1686 | item_name = ENCODE_SYSTEM (item_name); | ||
| 1687 | AREF (menu_items, i + MENU_ITEMS_ITEM_NAME) = item_name; | ||
| 1688 | } | ||
| 1673 | if (STRINGP (descrip) && STRING_MULTIBYTE (descrip)) | 1689 | if (STRINGP (descrip) && STRING_MULTIBYTE (descrip)) |
| 1674 | descrip = ENCODE_SYSTEM (descrip); | 1690 | { |
| 1675 | #endif | 1691 | descrip = ENCODE_SYSTEM (descrip); |
| 1692 | AREF (menu_items, i + MENU_ITEMS_ITEM_EQUIV_KEY) = descrip; | ||
| 1693 | } | ||
| 1694 | #endif /* not HAVE_MULTILINGUAL_MENU */ | ||
| 1676 | 1695 | ||
| 1677 | wv = xmalloc_widget_value (); | 1696 | wv = xmalloc_widget_value (); |
| 1678 | if (prev_wv) | 1697 | if (prev_wv) |
| @@ -1698,11 +1717,8 @@ w32_menu_show (f, x, y, for_click, keymaps, title, error) | |||
| 1698 | abort (); | 1717 | abort (); |
| 1699 | 1718 | ||
| 1700 | wv->selected = !NILP (selected); | 1719 | wv->selected = !NILP (selected); |
| 1701 | |||
| 1702 | if (STRINGP (help)) | 1720 | if (STRINGP (help)) |
| 1703 | wv->help = (char *) XSTRING (help)->data; | 1721 | wv->help = XSTRING (help)->data; |
| 1704 | else | ||
| 1705 | wv->help = NULL; | ||
| 1706 | 1722 | ||
| 1707 | prev_wv = wv; | 1723 | prev_wv = wv; |
| 1708 | 1724 | ||