diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index b6222674..69a15ad3 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -319,6 +319,7 @@ patch_enable_all () enable_taskmgr_Memory_Usage="$1" enable_user_exe16_CONTAINING_RECORD="$1" enable_user_exe16_DlgDirList="$1" + enable_user32_Combobox_WM_SIZE="$1" enable_user32_DM_SETDEFID="$1" enable_user32_DeferWindowPos="$1" enable_user32_DialogBoxParam="$1" @@ -1135,6 +1136,9 @@ patch_enable () user.exe16-DlgDirList) enable_user_exe16_DlgDirList="$2" ;; + user32-Combobox_WM_SIZE) + enable_user32_Combobox_WM_SIZE="$2" + ;; user32-DM_SETDEFID) enable_user32_DM_SETDEFID="$2" ;; @@ -6712,6 +6716,21 @@ if test "$enable_user_exe16_DlgDirList" -eq 1; then ) >> "$patchlist" fi +# Patchset user32-Combobox_WM_SIZE +# | +# | This patchset fixes the following Wine bugs: +# | * [#41404] Don't force a combobox repaint on WM_SIZE +# | +# | Modified files: +# | * dlls/user32/combo.c +# | +if test "$enable_user32_Combobox_WM_SIZE" -eq 1; then + patch_apply user32-Combobox_WM_SIZE/0001-user32-Don-t-force-a-combobox-repaint-on-WM_SIZE.patch + ( + echo '+ { "Dmitry Timoshkov", "user32: Don'\''t force a combobox repaint on WM_SIZE.", 1 },'; + ) >> "$patchlist" +fi + # Patchset user32-DM_SETDEFID # | # | This patchset fixes the following Wine bugs: diff --git a/patches/user32-Combobox_WM_SIZE/0001-user32-Don-t-force-a-combobox-repaint-on-WM_SIZE.patch b/patches/user32-Combobox_WM_SIZE/0001-user32-Don-t-force-a-combobox-repaint-on-WM_SIZE.patch new file mode 100644 index 00000000..2d3d4060 --- /dev/null +++ b/patches/user32-Combobox_WM_SIZE/0001-user32-Don-t-force-a-combobox-repaint-on-WM_SIZE.patch @@ -0,0 +1,28 @@ +From e680be170761fdbfb3c9bc5ee51a5f6002e586ca Mon Sep 17 00:00:00 2001 +From: Dmitry Timoshkov +Date: Wed, 7 Dec 2016 16:10:31 +0800 +Subject: user32: Don't force a combobox repaint on WM_SIZE. + +This breaks z-order based painting and causes side effects for +applications that during the WM_PAINT processing reference internal +data associated with a not fully initialized window. +--- + dlls/user32/combo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/user32/combo.c b/dlls/user32/combo.c +index a2e8b3c..501bfe8 100644 +--- a/dlls/user32/combo.c ++++ b/dlls/user32/combo.c +@@ -1558,7 +1558,7 @@ static void COMBO_Size( LPHEADCOMBO lphc ) + &lphc->buttonRect, + &lphc->droppedRect); + +- CBResetPos( lphc, &lphc->textRect, &lphc->droppedRect, TRUE ); ++ CBResetPos( lphc, &lphc->textRect, &lphc->droppedRect, FALSE ); + } + + +-- +2.9.0 + diff --git a/patches/user32-Combobox_WM_SIZE/definition b/patches/user32-Combobox_WM_SIZE/definition new file mode 100644 index 00000000..8589de0c --- /dev/null +++ b/patches/user32-Combobox_WM_SIZE/definition @@ -0,0 +1 @@ +Fixes: [41404] Don't force a combobox repaint on WM_SIZE