# HG changeset patch # User Bram Moolenaar # Date 1374422038 -7200 # Node ID 8f983df0299fb4f1c7359eb3b844ee93e8f7e8fb # Parent 64ff75f97b419ae4dd49f95f619c103f3c467db1 updated for version 7.4a.038 Problem: When using MSVC 2012 there are various issues, including GUI size computations. Solution: Use SM_CXPADDEDBORDER. (Mike Williams) diff --git a/src/gui_w32.c b/src/gui_w32.c --- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -1694,8 +1694,10 @@ gui_mch_set_shellsize(int width, int hei } /* compute the size of the outside of the window */ - win_width = width + GetSystemMetrics(SM_CXFRAME) * 2; - win_height = height + GetSystemMetrics(SM_CYFRAME) * 2 + win_width = width + (GetSystemMetrics(SM_CXFRAME) + + GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; + win_height = height + (GetSystemMetrics(SM_CYFRAME) + + GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 + GetSystemMetrics(SM_CYCAPTION) #ifdef FEAT_MENU + gui_mswin_get_menu_height(FALSE) @@ -2546,13 +2548,15 @@ gui_mch_get_screen_dimensions(int *scree get_work_area(&workarea_rect); *screen_w = workarea_rect.right - workarea_rect.left - - GetSystemMetrics(SM_CXFRAME) * 2; + - (GetSystemMetrics(SM_CXFRAME) + + GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; /* FIXME: dirty trick: Because the gui_get_base_height() doesn't include * the menubar for MSwin, we subtract it from the screen height, so that * the window size can be made to fit on the screen. */ *screen_h = workarea_rect.bottom - workarea_rect.top - - GetSystemMetrics(SM_CYFRAME) * 2 + - (GetSystemMetrics(SM_CYFRAME) + + GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 - GetSystemMetrics(SM_CYCAPTION) #ifdef FEAT_MENU - gui_mswin_get_menu_height(FALSE) @@ -3182,12 +3186,14 @@ gui_mch_dialog( /* Use our own window for the size, unless it's very small. */ GetWindowRect(s_hwnd, &rect); maxDialogWidth = rect.right - rect.left - - GetSystemMetrics(SM_CXFRAME) * 2; + - (GetSystemMetrics(SM_CXFRAME) + + GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; if (maxDialogWidth < DLG_MIN_MAX_WIDTH) maxDialogWidth = DLG_MIN_MAX_WIDTH; maxDialogHeight = rect.bottom - rect.top - - GetSystemMetrics(SM_CXFRAME) * 2; + - (GetSystemMetrics(SM_CXFRAME) + + GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; if (maxDialogHeight < DLG_MIN_MAX_HEIGHT) maxDialogHeight = DLG_MIN_MAX_HEIGHT; } diff --git a/src/gui_w48.c b/src/gui_w48.c --- a/src/gui_w48.c +++ b/src/gui_w48.c @@ -2909,9 +2909,11 @@ gui_mswin_get_valid_dimensions( int base_width, base_height; base_width = gui_get_base_width() - + GetSystemMetrics(SM_CXFRAME) * 2; + + (GetSystemMetrics(SM_CXFRAME) + + GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; base_height = gui_get_base_height() - + GetSystemMetrics(SM_CYFRAME) * 2 + + (GetSystemMetrics(SM_CYFRAME) + + GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 + GetSystemMetrics(SM_CYCAPTION) #ifdef FEAT_MENU + gui_mswin_get_menu_height(FALSE) @@ -3274,9 +3276,11 @@ gui_mch_newfont() GetWindowRect(s_hwnd, &rect); gui_resize_shell(rect.right - rect.left - - GetSystemMetrics(SM_CXFRAME) * 2, + - (GetSystemMetrics(SM_CXFRAME) + + GetSystemMetrics(SM_CXPADDEDBORDER)) * 2, rect.bottom - rect.top - - GetSystemMetrics(SM_CYFRAME) * 2 + - (GetSystemMetrics(SM_CYFRAME) + + GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 - GetSystemMetrics(SM_CYCAPTION) #ifdef FEAT_MENU - gui_mswin_get_menu_height(FALSE) diff --git a/src/os_win32.h b/src/os_win32.h --- a/src/os_win32.h +++ b/src/os_win32.h @@ -102,6 +102,9 @@ #endif #ifndef PROTO # include +# ifndef SM_CXPADDEDBORDER +# define SM_CXPADDEDBORDER 92 +# endif #endif /* diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -728,6 +728,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 38, +/**/ 37, /**/ 36,