END_EVENT_TABLE()
BEGIN_EVENT_TABLE(wxPopupTransientWindow, wxPopupWindow)
-#ifdef __WXMSW__
+#if defined( __WXMSW__ ) || defined( __WXMAC__)
EVT_IDLE(wxPopupTransientWindow::OnIdle)
#endif
END_EVENT_TABLE()
}
// now check left/right too
- wxCoord x = ptOrigin.x + size.x;
+ wxCoord x = ptOrigin.x;
+
+ if ( wxTheApp->GetLayoutDirection() == wxLayout_RightToLeft )
+ {
+ // shift the window to the left instead of the right.
+ x -= size.x;
+ x -= sizeSelf.x; // also shift it by window width.
+ }
+ else
+ x += size.x;
+
+
if ( x + sizeSelf.x > sizeScreen.x )
{
// check if there is enough space to the left
m_focus = winFocus ? winFocus : this;
m_focus->SetFocus();
-#ifdef __WXMSW__
+#if defined( __WXMSW__ ) || defined( __WXMAC__)
// MSW doesn't allow to set focus to the popup window, but we need to
// subclass the window which has the focus, and not winFocus passed in or
// otherwise everything else breaks down
}
#endif
-#ifdef __WXMSW__
+#if defined( __WXMSW__ ) || defined( __WXMAC__)
if (!show && m_child && m_child->HasCapture())
{
m_child->ReleaseMouse();
}
#endif
-#ifdef __WXMSW__
+#if defined( __WXMSW__ ) || defined( __WXMAC__)
if (show && m_child)
{
// Assume that the mouse is outside the popup to begin with
return false;
}
-#ifdef __WXMSW__
+#if defined( __WXMSW__ ) || defined( __WXMAC__)
void wxPopupTransientWindow::OnIdle(wxIdleEvent& event)
{
event.Skip();