From 32d7126aa595d63db85f42e62672dd3b645c6f8e Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 12 Sep 2012 18:17:10 +0000 Subject: [PATCH] [GDI32] Fix SetTextAlign: - return GDI_ERROR (-1) not 0 on error - properly handle LAYOUT_RTL svn path=/trunk/; revision=57286 --- reactos/win32ss/gdi/gdi32/objects/text.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/reactos/win32ss/gdi/gdi32/objects/text.c b/reactos/win32ss/gdi/gdi32/objects/text.c index d1bb5d5b4d5..2e6269dbf2e 100644 --- a/reactos/win32ss/gdi/gdi32/objects/text.c +++ b/reactos/win32ss/gdi/gdi32/objects/text.c @@ -572,7 +572,7 @@ SetTextAlign(HDC hdc, UINT fMode) { PDC_ATTR Dc_Attr; - INT OldMode = 0; + INT OldMode; #if 0 if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC) { @@ -593,17 +593,16 @@ SetTextAlign(HDC hdc, } } #endif - if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return OldMode; + if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return GDI_ERROR; OldMode = Dc_Attr->lTextAlign; Dc_Attr->lTextAlign = fMode; // Raw if (Dc_Attr->dwLayout & LAYOUT_RTL) { - if(!(fMode & TA_CENTER)) fMode |= TA_RIGHT; + if ((fMode & TA_CENTER) != TA_CENTER) fMode ^= TA_RIGHT; } - Dc_Attr->flTextAlign = fMode & (TA_BASELINE|TA_UPDATECP|TA_CENTER); + Dc_Attr->flTextAlign = fMode & TA_MASK; return OldMode; - }