To: vim_dev@googlegroups.com Subject: Patch 7.4b.018 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4b.018 (after 7.4b.001) Problem: Win32: Dialog can still be too big. Solution: Move the check for height further down. (Andrei Olsen) Files: src/gui_w32.c *** ../vim-7.4b.017/src/gui_w32.c 2013-08-01 13:20:23.000000000 +0200 --- src/gui_w32.c 2013-08-04 16:15:37.000000000 +0200 *************** *** 3184,3192 **** } else { ! /* Use our own window's client area for the size, unless it's very ! * small. */ ! GetClientRect(s_hwnd, &rect); maxDialogWidth = rect.right - rect.left - (GetSystemMetrics(SM_CXFRAME) + GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; --- 3184,3191 ---- } else { ! /* 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; *************** *** 3195,3201 **** maxDialogHeight = rect.bottom - rect.top - (GetSystemMetrics(SM_CYFRAME) + ! GetSystemMetrics(SM_CXPADDEDBORDER)) * 4; if (maxDialogHeight < DLG_MIN_MAX_HEIGHT) maxDialogHeight = DLG_MIN_MAX_HEIGHT; } --- 3194,3201 ---- maxDialogHeight = rect.bottom - rect.top - (GetSystemMetrics(SM_CYFRAME) + ! GetSystemMetrics(SM_CXPADDEDBORDER)) * 4 ! - GetSystemMetrics(SM_CYCAPTION); if (maxDialogHeight < DLG_MIN_MAX_HEIGHT) maxDialogHeight = DLG_MIN_MAX_HEIGHT; } *************** *** 3262,3277 **** messageWidth += 10; /* roundoff space */ - /* Restrict the size to a maximum. Causes a scrollbar to show up. */ - if (msgheight > maxDialogHeight) - { - msgheight = maxDialogHeight; - scroll_flag = WS_VSCROLL; - messageWidth += GetSystemMetrics(SM_CXVSCROLL); - } - /* Add width of icon to dlgwidth, and some space */ ! dlgwidth = messageWidth + DLG_ICON_WIDTH + 3 * dlgPaddingX; if (msgheight < DLG_ICON_HEIGHT) msgheight = DLG_ICON_HEIGHT; --- 3262,3270 ---- messageWidth += 10; /* roundoff space */ /* Add width of icon to dlgwidth, and some space */ ! dlgwidth = messageWidth + DLG_ICON_WIDTH + 3 * dlgPaddingX ! + GetSystemMetrics(SM_CXVSCROLL); if (msgheight < DLG_ICON_HEIGHT) msgheight = DLG_ICON_HEIGHT; *************** *** 3345,3352 **** // Dialog height. if (vertical) ! dlgheight = msgheight + 2 * dlgPaddingY + ! DLG_VERT_PADDING_Y + 2 * fontHeight * numButtons; else dlgheight = msgheight + 3 * dlgPaddingY + 2 * fontHeight; --- 3338,3345 ---- // Dialog height. if (vertical) ! dlgheight = msgheight + 2 * dlgPaddingY ! + DLG_VERT_PADDING_Y + 2 * fontHeight * numButtons; else dlgheight = msgheight + 3 * dlgPaddingY + 2 * fontHeight; *************** *** 3355,3360 **** --- 3348,3363 ---- if (textfield != NULL) dlgheight += editboxheight; + /* Restrict the size to a maximum. Causes a scrollbar to show up. */ + if (dlgheight > maxDialogHeight) + { + msgheight = msgheight - (dlgheight - maxDialogHeight); + dlgheight = maxDialogHeight; + scroll_flag = WS_VSCROLL; + /* Make sure scrollbar doesn't appear in the middle of the dialog */ + messageWidth = dlgwidth - DLG_ICON_WIDTH - 3 * dlgPaddingX; + } + add_word(PixelToDialogY(dlgheight)); add_word(0); // Menu *** ../vim-7.4b.017/src/version.c 2013-08-07 15:24:36.000000000 +0200 --- src/version.c 2013-08-07 15:25:41.000000000 +0200 *************** *** 729,730 **** --- 729,732 ---- { /* Add new patch number below this line */ + /**/ + 18, /**/ -- Over the years, I've developed my sense of deja vu so acutely that now I can remember things that *have* happened before ... /// 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 ///