To: vim_dev@googlegroups.com Subject: Patch 7.4a.038 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4a.038 Problem: When using MSVC 2012 there are various issues, including GUI size computations. Solution: Use SM_CXPADDEDBORDER. (Mike Williams) Files: src/gui_w32.c, src/gui_w48.c, src/os_win32.h *** ../vim-7.4a.037/src/gui_w32.c 2013-07-21 17:46:38.000000000 +0200 --- src/gui_w32.c 2013-07-21 17:51:37.000000000 +0200 *************** *** 1694,1701 **** } /* compute the size of the outside of the window */ ! win_width = width + GetSystemMetrics(SM_CXFRAME) * 2; ! win_height = height + GetSystemMetrics(SM_CYFRAME) * 2 + GetSystemMetrics(SM_CYCAPTION) #ifdef FEAT_MENU + gui_mswin_get_menu_height(FALSE) --- 1694,1703 ---- } /* compute the size of the outside of the window */ ! 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,2558 **** get_work_area(&workarea_rect); *screen_w = workarea_rect.right - workarea_rect.left ! - GetSystemMetrics(SM_CXFRAME) * 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_CYCAPTION) #ifdef FEAT_MENU - gui_mswin_get_menu_height(FALSE) --- 2548,2562 ---- get_work_area(&workarea_rect); *screen_w = workarea_rect.right - workarea_rect.left ! - (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) + ! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 - GetSystemMetrics(SM_CYCAPTION) #ifdef FEAT_MENU - gui_mswin_get_menu_height(FALSE) *************** *** 3182,3193 **** /* 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; if (maxDialogWidth < DLG_MIN_MAX_WIDTH) maxDialogWidth = DLG_MIN_MAX_WIDTH; maxDialogHeight = rect.bottom - rect.top ! - GetSystemMetrics(SM_CXFRAME) * 2; if (maxDialogHeight < DLG_MIN_MAX_HEIGHT) maxDialogHeight = DLG_MIN_MAX_HEIGHT; } --- 3186,3199 ---- /* Use our own window for the size, unless it's very small. */ GetWindowRect(s_hwnd, &rect); maxDialogWidth = rect.right - rect.left ! - (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) + ! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; if (maxDialogHeight < DLG_MIN_MAX_HEIGHT) maxDialogHeight = DLG_MIN_MAX_HEIGHT; } *** ../vim-7.4a.037/src/gui_w48.c 2013-07-21 17:46:38.000000000 +0200 --- src/gui_w48.c 2013-07-21 17:51:37.000000000 +0200 *************** *** 2909,2917 **** int base_width, base_height; base_width = gui_get_base_width() ! + GetSystemMetrics(SM_CXFRAME) * 2; base_height = gui_get_base_height() ! + GetSystemMetrics(SM_CYFRAME) * 2 + GetSystemMetrics(SM_CYCAPTION) #ifdef FEAT_MENU + gui_mswin_get_menu_height(FALSE) --- 2909,2919 ---- int base_width, base_height; base_width = gui_get_base_width() ! + (GetSystemMetrics(SM_CXFRAME) + ! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; base_height = gui_get_base_height() ! + (GetSystemMetrics(SM_CYFRAME) + ! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 + GetSystemMetrics(SM_CYCAPTION) #ifdef FEAT_MENU + gui_mswin_get_menu_height(FALSE) *************** *** 3274,3282 **** GetWindowRect(s_hwnd, &rect); gui_resize_shell(rect.right - rect.left ! - GetSystemMetrics(SM_CXFRAME) * 2, rect.bottom - rect.top ! - GetSystemMetrics(SM_CYFRAME) * 2 - GetSystemMetrics(SM_CYCAPTION) #ifdef FEAT_MENU - gui_mswin_get_menu_height(FALSE) --- 3276,3286 ---- GetWindowRect(s_hwnd, &rect); gui_resize_shell(rect.right - rect.left ! - (GetSystemMetrics(SM_CXFRAME) + ! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2, rect.bottom - rect.top ! - (GetSystemMetrics(SM_CYFRAME) + ! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 - GetSystemMetrics(SM_CYCAPTION) #ifdef FEAT_MENU - gui_mswin_get_menu_height(FALSE) *** ../vim-7.4a.037/src/os_win32.h 2013-06-29 15:38:50.000000000 +0200 --- src/os_win32.h 2013-07-21 17:53:13.000000000 +0200 *************** *** 102,107 **** --- 102,110 ---- #endif #ifndef PROTO # include + # ifndef SM_CXPADDEDBORDER + # define SM_CXPADDEDBORDER 92 + # endif #endif /* *** ../vim-7.4a.037/src/version.c 2013-07-21 17:46:38.000000000 +0200 --- src/version.c 2013-07-21 17:52:14.000000000 +0200 *************** *** 729,730 **** --- 729,732 ---- { /* Add new patch number below this line */ + /**/ + 38, /**/ -- hundred-and-one symptoms of being an internet addict: 5. You find yourself brainstorming for new subjects to search. /// 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 ///