diff --git a/7.3.393 b/7.3.393 new file mode 100644 index 0000000..ca6cbc9 --- /dev/null +++ b/7.3.393 @@ -0,0 +1,130 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.393 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.393 +Problem: Win32: When resizing Vim it is always moved to the primary monitor + if the secondary monitor is on the left. +Solution: Use the nearest monitor. (Yukihiro Nakadaira) +Files: src/gui_w32.c + + +*** ../vim-7.3.392/src/gui_w32.c 2011-12-15 21:51:32.000000000 +0100 +--- src/gui_w32.c 2012-01-04 20:25:58.000000000 +0100 +*************** +*** 1661,1669 **** + { + RECT workarea_rect; + int win_width, win_height; +- int win_xpos, win_ypos; + WINDOWPLACEMENT wndpl; +- int workarea_left; + + /* Try to keep window completely on screen. */ + /* Get position of the screen work area. This is the part that is not +--- 1661,1667 ---- +*************** +*** 1685,1693 **** + GetWindowPlacement(s_hwnd, &wndpl); + } + +- win_xpos = wndpl.rcNormalPosition.left; +- win_ypos = wndpl.rcNormalPosition.top; +- + /* compute the size of the outside of the window */ + win_width = width + GetSystemMetrics(SM_CXFRAME) * 2; + win_height = height + GetSystemMetrics(SM_CYFRAME) * 2 +--- 1683,1688 ---- +*************** +*** 1697,1732 **** + #endif + ; + +! /* There is an inconsistency when using two monitors and Vim is on the +! * second (right) one: win_xpos will be the offset from the workarea of +! * the left monitor. While with one monitor it's the offset from the +! * workarea (including a possible taskbar on the left). Detect the second +! * monitor by checking for the left offset to be quite big. */ +! if (workarea_rect.left > 300) +! workarea_left = 0; +! else +! workarea_left = workarea_rect.left; + +! /* If the window is going off the screen, move it on to the screen. +! * win_xpos and win_ypos are relative to the workarea. */ + if ((direction & RESIZE_HOR) +! && workarea_left + win_xpos + win_width > workarea_rect.right) +! win_xpos = workarea_rect.right - win_width - workarea_left; + +! if ((direction & RESIZE_HOR) && win_xpos < 0) +! win_xpos = 0; + + if ((direction & RESIZE_VERT) +! && workarea_rect.top + win_ypos + win_height > workarea_rect.bottom) +! win_ypos = workarea_rect.bottom - win_height - workarea_rect.top; + +! if ((direction & RESIZE_VERT) && win_ypos < 0) +! win_ypos = 0; +! +! wndpl.rcNormalPosition.left = win_xpos; +! wndpl.rcNormalPosition.right = win_xpos + win_width; +! wndpl.rcNormalPosition.top = win_ypos; +! wndpl.rcNormalPosition.bottom = win_ypos + win_height; + + /* set window position - we should use SetWindowPlacement rather than + * SetWindowPos as the MSDN docs say the coord systems returned by +--- 1692,1723 ---- + #endif + ; + +! /* The following should take care of keeping Vim on the same monitor, no +! * matter if the secondary monitor is left or right of the primary +! * monitor. */ +! wndpl.rcNormalPosition.right = wndpl.rcNormalPosition.left + win_width; +! wndpl.rcNormalPosition.bottom = wndpl.rcNormalPosition.top + win_height; + +! /* If the window is going off the screen, move it on to the screen. */ + if ((direction & RESIZE_HOR) +! && wndpl.rcNormalPosition.right > workarea_rect.right) +! OffsetRect(&wndpl.rcNormalPosition, +! workarea_rect.right - wndpl.rcNormalPosition.right, 0); + +! if ((direction & RESIZE_HOR) +! && wndpl.rcNormalPosition.left < workarea_rect.left) +! OffsetRect(&wndpl.rcNormalPosition, +! workarea_rect.left - wndpl.rcNormalPosition.left, 0); + + if ((direction & RESIZE_VERT) +! && wndpl.rcNormalPosition.bottom > workarea_rect.bottom) +! OffsetRect(&wndpl.rcNormalPosition, +! 0, workarea_rect.bottom - wndpl.rcNormalPosition.bottom); + +! if ((direction & RESIZE_VERT) +! && wndpl.rcNormalPosition.top < workarea_rect.top) +! OffsetRect(&wndpl.rcNormalPosition, +! 0, workarea_rect.top - wndpl.rcNormalPosition.top); + + /* set window position - we should use SetWindowPlacement rather than + * SetWindowPos as the MSDN docs say the coord systems returned by +*** ../vim-7.3.392/src/version.c 2012-01-04 19:34:32.000000000 +0100 +--- src/version.c 2012-01-04 20:28:57.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 393, + /**/ + +-- +I wonder, do vegetarians eat fruit bats? + + /// 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 ///