From 11b7619a71d9bfc51ae41fcd22fab4fdfa3d96f1 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Thu, 16 Aug 2018 02:50:19 +0900 Subject: [PATCH] [WIN32SS] Fix DrawText wrt DT_CALCRECT | DT_VCENTER (#745) The test program: https://jira.reactos.org/secure/attachment/47925/TnB3.zip CORE-14896 --- win32ss/user/rtl/text.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/win32ss/user/rtl/text.c b/win32ss/user/rtl/text.c index 9ab726c80a1..d723c55f57f 100644 --- a/win32ss/user/rtl/text.c +++ b/win32ss/user/rtl/text.c @@ -1148,26 +1148,27 @@ INT WINAPI DrawTextExWorker( HDC hdc, if (flags & DT_SINGLELINE) { - if (flags & DT_VCENTER) #ifdef __REACTOS__ + if (flags & DT_VCENTER) + { + if (flags & DT_CALCRECT) { - if (((rect->bottom - rect->top) < (invert_y ? -size.cy : size.cy)) && (flags & DT_CALCRECT)) - { - y = rect->top + (invert_y ? -size.cy : size.cy); - } - else - { - y = rect->top + (rect->bottom - rect->top + (invert_y ? size.cy : -size.cy)) / 2; -#else - y = rect->top + (rect->bottom - rect->top) / 2 + (invert_y ? (size.cy / 2) : (-size.cy / 2)); -#endif -#ifdef __REACTOS__ - } + if (rect->bottom - rect->top < size.cy / 2) + y = rect->top + (invert_y ? size.cy : -size.cy) / 2; + } + else + { + y = rect->top + (rect->bottom - rect->top + (invert_y ? size.cy : -size.cy)) / 2; } -#endif - else if (flags & DT_BOTTOM) - y = rect->bottom + (invert_y ? 0 : -size.cy); } + else if (flags & DT_BOTTOM) + y = rect->bottom + (invert_y ? 0 : -size.cy); +#else + if (flags & DT_VCENTER) y = rect->top + + (rect->bottom - rect->top) / 2 - size.cy / 2; + else if (flags & DT_BOTTOM) y = rect->bottom - size.cy; +#endif + } if (!(flags & DT_CALCRECT)) { -- 2.17.1