diff options
Diffstat (limited to 'data/vim/patches/8.1.0647')
-rw-r--r-- | data/vim/patches/8.1.0647 | 326 |
1 files changed, 0 insertions, 326 deletions
diff --git a/data/vim/patches/8.1.0647 b/data/vim/patches/8.1.0647 deleted file mode 100644 index 5427d8dc7..000000000 --- a/data/vim/patches/8.1.0647 +++ /dev/null @@ -1,326 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.0647 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 8.1.0647 -Problem: MS-Windows: balloon_show() does not handle wide characters. -Solution: Use CreateWindowExW(). (Yasuhiro Matsumoto, closes #3708) -Files: src/gui_w32.c - - -*** ../vim-8.1.0646/src/gui_w32.c 2018-11-16 16:21:01.641310033 +0100 ---- src/gui_w32.c 2018-12-27 22:36:34.745105652 +0100 -*************** -*** 4367,4380 **** - - typedef struct tagTOOLINFOA_NEW - { -! UINT cbSize; -! UINT uFlags; -! HWND hwnd; -! UINT_PTR uId; -! RECT rect; -! HINSTANCE hinst; -! LPSTR lpszText; -! LPARAM lParam; - } TOOLINFO_NEW; - - typedef struct tagNMTTDISPINFO_NEW ---- 4367,4380 ---- - - typedef struct tagTOOLINFOA_NEW - { -! UINT cbSize; -! UINT uFlags; -! HWND hwnd; -! UINT_PTR uId; -! RECT rect; -! HINSTANCE hinst; -! LPSTR lpszText; -! LPARAM lParam; - } TOOLINFO_NEW; - - typedef struct tagNMTTDISPINFO_NEW -*************** -*** 4387,4392 **** ---- 4387,4418 ---- - LPARAM lParam; - } NMTTDISPINFO_NEW; - -+ #ifdef FEAT_MBYTE -+ typedef struct tagTOOLINFOW_NEW -+ { -+ UINT cbSize; -+ UINT uFlags; -+ HWND hwnd; -+ UINT_PTR uId; -+ RECT rect; -+ HINSTANCE hinst; -+ LPWSTR lpszText; -+ LPARAM lParam; -+ void *lpReserved; -+ } TOOLINFOW_NEW; -+ -+ typedef struct tagNMTTDISPINFOW_NEW -+ { -+ NMHDR hdr; -+ LPWSTR lpszText; -+ WCHAR szText[80]; -+ HINSTANCE hinst; -+ UINT uFlags; -+ LPARAM lParam; -+ } NMTTDISPINFOW_NEW; -+ -+ #endif -+ - typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *); - #ifndef TTM_SETMAXTIPWIDTH - # define TTM_SETMAXTIPWIDTH (WM_USER+24) -*************** -*** 5502,5507 **** ---- 5528,5542 ---- - if (RegisterClassW(&wndclassw) == 0) - return FAIL; - } -+ -+ s_textArea = CreateWindowExW( -+ 0, -+ szTextAreaClassW, L"Vim text area", -+ WS_CHILD | WS_VISIBLE, 0, 0, -+ 100, // Any value will do for now -+ 100, // Any value will do for now -+ s_hwnd, NULL, -+ s_hinst, NULL); - } - else - #endif -*************** -*** 5520,5534 **** - - if (RegisterClass(&wndclass) == 0) - return FAIL; - } -- s_textArea = CreateWindowEx( -- 0, -- szTextAreaClass, "Vim text area", -- WS_CHILD | WS_VISIBLE, 0, 0, -- 100, /* Any value will do for now */ -- 100, /* Any value will do for now */ -- s_hwnd, NULL, -- s_hinst, NULL); - - if (s_textArea == NULL) - return FAIL; ---- 5555,5570 ---- - - if (RegisterClass(&wndclass) == 0) - return FAIL; -+ -+ s_textArea = CreateWindowEx( -+ 0, -+ szTextAreaClass, "Vim text area", -+ WS_CHILD | WS_VISIBLE, 0, 0, -+ 100, // Any value will do for now -+ 100, // Any value will do for now -+ s_hwnd, NULL, -+ s_hinst, NULL); - } - - if (s_textArea == NULL) - return FAIL; -*************** -*** 6218,6226 **** - static void - draw_line( - int x1, -! int y1, -! int x2, -! int y2, - COLORREF color) - { - #if defined(FEAT_DIRECTX) ---- 6254,6262 ---- - static void - draw_line( - int x1, -! int y1, -! int x2, -! int y2, - COLORREF color) - { - #if defined(FEAT_DIRECTX) -*************** -*** 6241,6247 **** - static void - set_pixel( - int x, -! int y, - COLORREF color) - { - #if defined(FEAT_DIRECTX) ---- 6277,6283 ---- - static void - set_pixel( - int x, -! int y, - COLORREF color) - { - #if defined(FEAT_DIRECTX) -*************** -*** 6255,6261 **** - static void - fill_rect( - const RECT *rcp, -! HBRUSH hbr, - COLORREF color) - { - #if defined(FEAT_DIRECTX) ---- 6291,6297 ---- - static void - fill_rect( - const RECT *rcp, -! HBRUSH hbr, - COLORREF color) - { - #if defined(FEAT_DIRECTX) -*************** -*** 8745,8756 **** ---- 8781,8875 ---- - return multiline_tip; - } - -+ #ifdef FEAT_MBYTE -+ static void -+ make_tooltipw(BalloonEval *beval, char *text, POINT pt) -+ { -+ TOOLINFOW *pti; -+ int ToolInfoSize; -+ WCHAR *tofree = NULL; -+ -+ if (multiline_balloon_available() == TRUE) -+ ToolInfoSize = sizeof(TOOLINFOW_NEW); -+ else -+ ToolInfoSize = sizeof(TOOLINFOW); -+ -+ pti = (TOOLINFOW *)alloc(ToolInfoSize); -+ if (pti == NULL) -+ return; -+ -+ beval->balloon = CreateWindowExW(WS_EX_TOPMOST, TOOLTIPS_CLASSW, -+ NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, -+ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, -+ beval->target, NULL, s_hinst, NULL); -+ -+ SetWindowPos(beval->balloon, HWND_TOPMOST, 0, 0, 0, 0, -+ SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); -+ -+ pti->cbSize = ToolInfoSize; -+ pti->uFlags = TTF_SUBCLASS; -+ pti->hwnd = beval->target; -+ pti->hinst = 0; // Don't use string resources -+ pti->uId = ID_BEVAL_TOOLTIP; -+ -+ if (multiline_balloon_available() == TRUE) -+ { -+ RECT rect; -+ TOOLINFOW_NEW *ptin = (TOOLINFOW_NEW *)pti; -+ pti->lpszText = LPSTR_TEXTCALLBACKW; -+ tofree = enc_to_utf16((char_u*)text, NULL); -+ ptin->lParam = (LPARAM)tofree; -+ // switch multiline tooltips on -+ if (GetClientRect(s_textArea, &rect)) -+ SendMessageW(beval->balloon, TTM_SETMAXTIPWIDTH, 0, -+ (LPARAM)rect.right); -+ } -+ else -+ { -+ // do this old way -+ tofree = enc_to_utf16((char_u*)text, NULL); -+ pti->lpszText = tofree; -+ } -+ -+ // Limit ballooneval bounding rect to CursorPos neighbourhood. -+ pti->rect.left = pt.x - 3; -+ pti->rect.top = pt.y - 3; -+ pti->rect.right = pt.x + 3; -+ pti->rect.bottom = pt.y + 3; -+ -+ SendMessageW(beval->balloon, TTM_ADDTOOLW, 0, (LPARAM)pti); -+ // Make tooltip appear sooner. -+ SendMessageW(beval->balloon, TTM_SETDELAYTIME, TTDT_INITIAL, 10); -+ // I've performed some tests and it seems the longest possible life time -+ // of tooltip is 30 seconds. -+ SendMessageW(beval->balloon, TTM_SETDELAYTIME, TTDT_AUTOPOP, 30000); -+ /* -+ * HACK: force tooltip to appear, because it'll not appear until -+ * first mouse move. D*mn M$ -+ * Amazingly moving (2, 2) and then (-1, -1) the mouse doesn't move. -+ */ -+ mouse_event(MOUSEEVENTF_MOVE, 2, 2, 0, 0); -+ mouse_event(MOUSEEVENTF_MOVE, (DWORD)-1, (DWORD)-1, 0, 0); -+ vim_free(pti); -+ if (tofree != NULL) -+ vim_free(tofree); -+ } -+ #endif -+ - static void - make_tooltip(BalloonEval *beval, char *text, POINT pt) - { - TOOLINFO *pti; - int ToolInfoSize; - -+ #ifdef FEAT_MBYTE -+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) -+ { -+ make_tooltipw(beval, text, pt); -+ return; -+ } -+ #endif -+ - if (multiline_balloon_available() == TRUE) - ToolInfoSize = sizeof(TOOLINFO_NEW); - else -*************** -*** 8961,8966 **** ---- 9080,9095 ---- - info->uFlags |= TTF_DI_SETITEM; - } - break; -+ #ifdef FEAT_MBYTE -+ case TTN_GETDISPINFOW: -+ { -+ // if we get here then we have new common controls -+ NMTTDISPINFOW_NEW *info = (NMTTDISPINFOW_NEW *)pnmh; -+ info->lpszText = (LPWSTR)info->lParam; -+ info->uFlags |= TTF_DI_SETITEM; -+ } -+ break; -+ #endif - } - } - } -*** ../vim-8.1.0646/src/version.c 2018-12-27 22:10:57.797337989 +0100 ---- src/version.c 2018-12-27 22:42:39.585979851 +0100 -*************** -*** 801,802 **** ---- 801,804 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 647, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -60. As your car crashes through the guardrail on a mountain road, your first - instinct is to search for the "back" button. - - /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ -/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |