#ifdef __WXGTK__
#include <gtk/gtk.h>
#endif
+#ifdef __WXX11__
+#include "wx/x11/private.h"
+#endif
IMPLEMENT_DYNAMIC_CLASS(wxPopupWindow, wxWindow)
IMPLEMENT_DYNAMIC_CLASS(wxPopupTransientWindow, wxPopupWindow)
if (!show)
{
gdk_pointer_ungrab( (guint32)GDK_CURRENT_TIME );
-
+
gtk_grab_remove( m_widget );
}
#endif
+#ifdef __WXX11__
+ if (!show)
+ {
+ XUngrabPointer( wxGlobalDisplay(), CurrentTime );
+ }
+#endif
+
bool ret = wxPopupWindow::Show( show );
-
+
#ifdef __WXGTK__
if (show)
{
gtk_grab_add( m_widget );
-
+
gdk_pointer_grab( m_widget->window, TRUE,
(GdkEventMask)
(GDK_BUTTON_PRESS_MASK |
}
#endif
+#ifdef __WXX11__
+ if (show)
+ {
+ Window xwindow = (Window) m_clientWindow;
+
+ /* int res =*/ XGrabPointer(wxGlobalDisplay(), xwindow,
+ True,
+ ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask,
+ GrabModeAsync,
+ GrabModeAsync,
+ None,
+ None,
+ CurrentTime );
+ }
+#endif
return ret;
}
void wxPopupComboWindow::PositionNearCombo()
{
// the origin point must be in screen coords
- wxPoint ptOrigin = m_combo->ClientToScreen(wxPoint(0, 0));
+ wxPoint ptOrigin = m_combo->ClientToScreen(wxPoint(0,0));
#if 0 //def __WXUNIVERSAL__
// account for the fact that (0, 0) is not the top left corner of the