Signed-off-by: Alex Henrie alexhenrie24@gmail.com --- Fixes failures on Arabic and Hebrew Windows.
v2: Use LOCALE_IREADINGLAYOUT, a Windows 7 feature, to detect RTL locales because it looks like Hebrew and Arabic propsheet resources didn't exist until Windows 7 anyway. --- 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..ec53e6bc7c 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(void) +{ + DWORD reading_layout; + rtl = GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_IREADINGLAYOUT | LOCALE_RETURN_NUMBER, + (void *)&reading_layout, sizeof(reading_layout)) && reading_layout == 1; +} + /* 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();