[PATCH] comctl32/tests: Detect and handle an RTL locale.
Alex Henrie
alexhenrie24 at gmail.com
Mon Nov 20 22:45:45 CST 2017
Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
---
Fixes failures on Arabic and Hebrew Windows.
I decided to check LOCALE_FONTSIGNATURE instead of LOCALE_IREADINGLAYOUT
because LOCALE_FONTSIGNATURE is available on Windows XP.
---
dlls/comctl32/tests/propsheet.c | 32 +++++++++++++++++++++++++++++---
1 file changed, 29 insertions(+), 3 deletions(-)
diff --git a/dlls/comctl32/tests/propsheet.c b/dlls/comctl32/tests/propsheet.c
index a3f910d2d5..15ea083b63 100644
--- a/dlls/comctl32/tests/propsheet.c
+++ b/dlls/comctl32/tests/propsheet.c
@@ -29,11 +29,19 @@
static HWND parenthwnd;
static HWND sheethwnd;
+static BOOL rtl;
static LONG active_page = -1;
#define IDC_APPLY_BUTTON 12321
+static void detect_locale()
+{
+ LOCALESIGNATURE locale_sig;
+ GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_FONTSIGNATURE, (void *)&locale_sig, sizeof(locale_sig)/sizeof(WCHAR));
+ rtl = !!(locale_sig.lsUsb[3] & 0x08000000);
+}
+
/* try to make sure pending X events have been processed before continuing */
static void flush_events(void)
{
@@ -496,19 +504,28 @@ static void test_buttons(void)
button = GetDlgItem(hdlg, IDCANCEL);
GetWindowRect(button, &rc);
ok(rc.top == top, "Cancel button should have same top as OK button\n");
- ok(rc.left > prevRight, "Cancel button should be to the right of OK button\n");
+ if (rtl)
+ ok(rc.left < prevRight, "Cancel button should be to the left of OK button\n");
+ else
+ ok(rc.left > prevRight, "Cancel button should be to the right of OK button\n");
prevRight = rc.right;
button = GetDlgItem(hdlg, IDC_APPLY_BUTTON);
GetWindowRect(button, &rc);
ok(rc.top == top, "Apply button should have same top as OK button\n");
- ok(rc.left > prevRight, "Apply button should be to the right of Cancel button\n");
+ if (rtl)
+ ok(rc.left < prevRight, "Apply button should be to the left of Cancel button\n");
+ else
+ ok(rc.left > prevRight, "Apply button should be to the right of Cancel button\n");
prevRight = rc.right;
button = GetDlgItem(hdlg, IDHELP);
GetWindowRect(button, &rc);
ok(rc.top == top, "Help button should have same top as OK button\n");
- ok(rc.left > prevRight, "Help button should be to the right of Apply button\n");
+ if (rtl)
+ ok(rc.left < prevRight, "Help button should be to the left of Apply button\n");
+ else
+ ok(rc.left > prevRight, "Help button should be to the right of Apply button\n");
DestroyWindow(hdlg);
}
@@ -1124,6 +1141,15 @@ static void test_CreatePropertySheetPage(void)
START_TEST(propsheet)
{
+ detect_locale();
+ if (rtl)
+ {
+ /* use locale-specific RTL resources when on an RTL locale */
+ /* without this, propsheets on RTL locales use English LTR resources */
+ trace("RTL locale detected\n");
+ SetProcessDefaultLayout(LAYOUT_RTL);
+ }
+
test_title();
test_nopage();
test_disableowner();
--
2.15.0
More information about the wine-devel
mailing list