Archive: Dialog elements not mirrored on RTL system


Dialog elements not mirrored on RTL system
Hi,

my installer has support for several languages. Among them Hebrew and Arabic (U.A.E.).
And it's using MUI.

We found that everything is neatly adjusted right to left except for the dialog elements in the dialog header (Mini-Icon, Close icon...) in all dialogs (Welcome, Start, etc). This became apparent, when we pressed the Cancel button: The popup Abort-dialog is correctly aligned with the application mini-icon on the left and the window close icon on the right.
I suppose, that the latter is a System MessageBox whereas all other dialogs are from NSIS.

I've searched the forum but all topics concerning RTL (Hebrew, Arab) I found was at least 2 years old.

Here are my MUI defines:


!define MUI_ABORTWARNING

; The text in the next two defines would have to be translated / taken from InstallShield
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_RIGHT
!define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_ICON "${MYICON}"
!define MUI_UNICON "${MYICON}"
!define MUI_HEADERIMAGE_BITMAP "${PROJECTDIR}Graphics\MYCOMPANY\company_logo.bmp" ; optional
!define MUI_HEADERIMAGE_UNBITMAP "${PROJECTDIR}Graphics\MYCOMPANY\company_logo.bmp"
!define MUI_HEADERIMAGE_BITMAP_RTL "${PROJECTDIR}Graphics\MYCOMPANY\company_logo.bmp" ; optional
!define MUI_HEADERIMAGE_UNBITMAP_RTL "${PROJECTDIR}Graphics\MYCOMPANY\company_logo.bmp"
!define MUI_CUSTOMFUNCTION_ABORT "myUserAbort"
!define MUI_WELCOMEFINISHPAGE_BITMAP "${PROJECTDIR}Graphics\MYCOMPANY\product.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${PROJECTDIR}Graphics\MYCOMPANY\product.bmp"
!define MUI_NO_INNERTEXT_LICENSE_BOTTOM_CHECKBOX
!define MUI_NO_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS
!define MUI_LICENSEPAGE_RADIOBUTTONS



I've already altered (commented) !define MUI_HEADERIMAGE_RIGHT but that doesn't help.

Any hints how to get the dialogs fully mirrored?

Regards,
Axel

The problem with the style that moves the window controls to the right is that it also moves everything to the right. That'd be nice if it worked on every platform. However, it doesn't work on non-localized versions of 9x and if I recall correctly, only works on XP and above. The style is WS_EX_LAYOUTRTL.

To make RTL work on every version of Windows and look reasonable, I chose to skip WS_EX_LAYOUTRTL and layout the dialog manually.


Hi Kichik,

thanks for the fast answer.
I've looked up WS_EX_LAYOUTRTL in msdn Library and did NOT find it. So this really seems special to some Windows Editions.

You say, that you chose to layout the dialog manually.
Does this mean that when using a non WS_EX_LAYOUTRTL system, the default/standard dialogs that are produced/defined by NSIS have NON-mirrored title elements and one had to modify the dialogs using that weird custom dialog scheme?


You can find its description under CreateWindowEx.

By manually I mean that our dialog editor moves everything to the right instead of letting Windows doing it with WS_EX_LAYOUTRTL. It calculates the proper coordinates and sets the proper styles. However, it can't touch the title bar. This way, when no special styles are used, it works on both RTL and non-RTL versions of Windows.


Originally posted by kichik
By manually I mean that our dialog editor moves everything to the right instead of letting Windows doing it with WS_EX_LAYOUTRTL.
Hi kichik,

returning to the same issue, now that nsDialogs is available,
would it possible to adjust the dialog title bar by adding the WS_EX_LAYOUTRTL property vi nsDialogs??

If yes, how?

Thanx,
Axel

nsDialogs doesn't create the main dialog, but only the inner dialog. So you can't use it to set the main dialog's style.