changeset 2078:d7ce3adb8dda v7.2.362

updated for version 7.2.362 Problem: Win64: Vim doesn't work when cross-compiled with MingW libraries. Solution: Instead of handling WM_NCCREATE, create wide text area window class if the parent window iw side. (Sergey Khorev)
author Bram Moolenaar <bram@zimbu.org>
date Wed, 17 Feb 2010 16:31:32 +0100
parents d8983769c9dd
children 5abd3e3c0085
files src/gui_w32.c src/gui_w48.c src/version.c
diffstat 3 files changed, 25 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -1329,6 +1329,7 @@ gui_mch_init(void)
     WNDCLASS wndclass;
 #ifdef FEAT_MBYTE
     const WCHAR szVimWndClassW[] = VIM_CLASSW;
+    const WCHAR szTextAreaClassW[] = L"VimTextArea";
     WNDCLASSW wndclassw;
 #endif
 #ifdef GLOBAL_IME
@@ -1479,6 +1480,28 @@ gui_mch_init(void)
 #endif
 
     /* Create the text area window */
+#ifdef FEAT_MBYTE
+    if (wide_WindowProc)
+    {
+	if (GetClassInfoW(s_hinst, szTextAreaClassW, &wndclassw) == 0)
+	{
+	    wndclassw.style = CS_OWNDC;
+	    wndclassw.lpfnWndProc = _TextAreaWndProc;
+	    wndclassw.cbClsExtra = 0;
+	    wndclassw.cbWndExtra = 0;
+	    wndclassw.hInstance = s_hinst;
+	    wndclassw.hIcon = NULL;
+	    wndclassw.hCursor = LoadCursor(NULL, IDC_ARROW);
+	    wndclassw.hbrBackground = NULL;
+	    wndclassw.lpszMenuName = NULL;
+	    wndclassw.lpszClassName = szTextAreaClassW;
+
+	    if (RegisterClassW(&wndclassw) == 0)
+		return FAIL;
+	}
+    }
+    else
+#endif
     if (GetClassInfo(s_hinst, szTextAreaClass, &wndclass) == 0)
     {
 	wndclass.style = CS_OWNDC;
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -1084,13 +1084,6 @@ HandleMouseHide(UINT uMsg, LPARAM lParam
 	case WM_NOTIFY: Handle_WM_Notify(hwnd, (LPNMHDR)lParam);
 	    return TRUE;
 #endif
-	/* Workaround for the problem that MyWindowProc() returns FALSE on 64
-	 * bit windows when cross-compiled using Mingw libraries. (Andy
-	 * Kittner) */
-	case WM_NCCREATE:
-	    MyWindowProc(hwnd, uMsg, wParam, lParam);
-	    return TRUE;
-
 	default:
 	    return MyWindowProc(hwnd, uMsg, wParam, lParam);
     }
--- a/src/version.c
+++ b/src/version.c
@@ -682,6 +682,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    362,
+/**/
     361,
 /**/
     360,