summaryrefslogtreecommitdiff
path: root/src/gui_w32.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui_w32.c')
-rw-r--r--src/gui_w32.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 711fe825e..cf1f6fcdb 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -1599,6 +1599,7 @@ gui_mch_set_shellsize(int width, int height,
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
@@ -1632,11 +1633,21 @@ gui_mch_set_shellsize(int width, int height,
#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_rect.left + win_xpos + win_width > workarea_rect.right)
- win_xpos = workarea_rect.right - win_width - workarea_rect.left;
+ && 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;