From b7f501c736b4f45b4dee1d4d54a6f710c52f2530 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 13 Aug 2012 21:34:37 +0300 Subject: Backport: Don't disable Unicode menus on Windows NT and later. src/w32menu.c: Include w32heap.h. (add_menu_item): If the call to AppendMenuW (via unicode_append_menu) fails, disable Unicode menus only if we are running on Windows 9X/Me. src/makefile.w32-in ($(BLD)/w32menu.$(O)): Depend on w32heap.h. --- src/ChangeLog | 7 +++++++ src/makefile.w32-in | 1 + src/w32menu.c | 9 +++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 96c6d244bd1..fbe4f06da58 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,12 @@ 2012-08-13 Eli Zaretskii + * w32menu.c: Include w32heap.h. + (add_menu_item): If the call to AppendMenuW (via + unicode_append_menu) fails, disable Unicode menus only if we are + running on Windows 9X/Me. + + * makefile.w32-in ($(BLD)/w32menu.$(O)): Depend on w32heap.h. + * window.c (Fdelete_other_windows_internal) (Fdelete_window_internal): Don't access frame's mouse highlight info of the initial frame. (Bug#11677) diff --git a/src/makefile.w32-in b/src/makefile.w32-in index d7ca325e223..06e633c1443 100644 --- a/src/makefile.w32-in +++ b/src/makefile.w32-in @@ -1506,6 +1506,7 @@ $(BLD)/w32menu.$(O) : \ $(SRC)/w32menu.c \ $(SRC)/buffer.h \ $(SRC)/keymap.h \ + $(SRC)/w32heap.h \ $(BLOCKINPUT_H) \ $(CHARSET_H) \ $(CODING_H) \ diff --git a/src/w32menu.c b/src/w32menu.c index 9091cb81627..0f45532ed53 100644 --- a/src/w32menu.c +++ b/src/w32menu.c @@ -40,6 +40,8 @@ along with GNU Emacs. If not, see . */ if this is not done before the other system files. */ #include "w32term.h" +#include "w32heap.h" + /* Load sys/types.h if not already loaded. In some systems loading it twice is suicidal. */ #ifndef makedev @@ -1498,8 +1500,11 @@ add_menu_item (HMENU menu, widget_value *wv, HMENU item) AppendMenu (menu, fuFlags, item != NULL ? (UINT) item: (UINT) wv->call_data, out_string); - /* Don't use Unicode menus in future. */ - unicode_append_menu = NULL; + /* Don't use Unicode menus in future, unless this is Windows + NT or later, where a failure of AppendMenuW does NOT mean + Unicode menus are unsupported. */ + if (osinfo_cache.dwPlatformId != VER_PLATFORM_WIN32_NT) + unicode_append_menu = NULL; } if (unicode_append_menu && (fuFlags & MF_OWNERDRAW)) -- cgit v1.2.1