Backport: Don't disable Unicode menus on Windows NT and later.
authorEli Zaretskii <eliz@gnu.org>
Mon, 13 Aug 2012 18:34:37 +0000 (21:34 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 13 Aug 2012 18:34:37 +0000 (21:34 +0300)
 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
src/makefile.w32-in
src/w32menu.c

index 96c6d24..fbe4f06 100644 (file)
@@ -1,5 +1,12 @@
 2012-08-13  Eli Zaretskii  <eliz@gnu.org>
 
+       * 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)
index d7ca325..06e633c 100644 (file)
@@ -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) \
index 9091cb8..0f45532 100644 (file)
@@ -40,6 +40,8 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
    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))