X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e5b507581053d7a11b5c1419dc3ac5c31904236b..659863d8a73d02626f4060bb1099fe7bfd80d22a:/src/msw/msgdlg.cpp diff --git a/src/msw/msgdlg.cpp b/src/msw/msgdlg.cpp index db900f66db..5312a8ec06 100644 --- a/src/msw/msgdlg.cpp +++ b/src/msw/msgdlg.cpp @@ -9,23 +9,19 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "msgdlg.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif +#include "wx/msgdlg.h" + #ifndef WX_PRECOMP #include "wx/app.h" - #include "wx/defs.h" #include "wx/utils.h" #include "wx/dialog.h" - #include "wx/msgdlg.h" #endif #include "wx/msw/private.h" @@ -101,13 +97,31 @@ int wxMessageDialog::ShowModal() if ( wxStyle & wxSTAY_ON_TOP ) msStyle |= MB_TOPMOST; +#ifndef __WXWINCE__ + if ( wxTheApp->GetLayoutDirection() == wxLayout_RightToLeft ) + msStyle |= MB_RTLREADING | MB_RIGHT; +#endif + if (hWnd) msStyle |= MB_APPLMODAL; else msStyle |= MB_TASKMODAL; + // per MSDN documentation for MessageBox() we can prefix the message with 2 + // right-to-left mark characters to tell the function to use RTL layout + // (unfortunately this only works in Unicode builds) + wxString message = m_message; +#if wxUSE_UNICODE + if ( wxTheApp->GetLayoutDirection() == wxLayout_RightToLeft ) + { + // NB: not all compilers support \u escapes + static const wchar_t wchRLM = 0x200f; + message.Prepend(wxString(wchRLM, 2)); + } +#endif // wxUSE_UNICODE + // do show the dialog - int msAns = MessageBox(hWnd, m_message.c_str(), m_caption.c_str(), msStyle); + int msAns = MessageBox(hWnd, message, m_caption, msStyle); int ans; switch (msAns) { @@ -130,4 +144,3 @@ int wxMessageDialog::ShowModal() } return ans; } -