Avoid GdkDeviceManager with GTK+4
This commit is contained in:
@@ -332,9 +332,15 @@ bool wxPopupTransientWindow::Show( bool show )
|
|||||||
{
|
{
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
GdkDisplay* display = gtk_widget_get_display(m_widget);
|
GdkDisplay* display = gtk_widget_get_display(m_widget);
|
||||||
|
#ifdef __WXGTK4__
|
||||||
|
gdk_seat_ungrab(gdk_display_get_default_seat(display));
|
||||||
|
#else
|
||||||
|
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
|
||||||
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
||||||
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
||||||
gdk_device_ungrab(device, unsigned(GDK_CURRENT_TIME));
|
gdk_device_ungrab(device, unsigned(GDK_CURRENT_TIME));
|
||||||
|
wxGCC_WARNING_RESTORE()
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
gdk_pointer_ungrab( (guint32)GDK_CURRENT_TIME );
|
gdk_pointer_ungrab( (guint32)GDK_CURRENT_TIME );
|
||||||
#endif
|
#endif
|
||||||
@@ -364,18 +370,25 @@ bool wxPopupTransientWindow::Show( bool show )
|
|||||||
{
|
{
|
||||||
gtk_grab_add( m_widget );
|
gtk_grab_add( m_widget );
|
||||||
|
|
||||||
|
GdkWindow* window = gtk_widget_get_window(m_widget);
|
||||||
|
#ifdef __WXGTK4__
|
||||||
|
GdkDisplay* display = gdk_window_get_display(window);
|
||||||
|
GdkSeat* seat = gdk_display_get_default_seat(display);
|
||||||
|
gdk_seat_grab(seat, window, GDK_SEAT_CAPABILITY_POINTER, false, NULL, NULL, NULL, 0);
|
||||||
|
#else
|
||||||
const GdkEventMask mask = GdkEventMask(
|
const GdkEventMask mask = GdkEventMask(
|
||||||
GDK_BUTTON_PRESS_MASK |
|
GDK_BUTTON_PRESS_MASK |
|
||||||
GDK_BUTTON_RELEASE_MASK |
|
GDK_BUTTON_RELEASE_MASK |
|
||||||
GDK_POINTER_MOTION_HINT_MASK |
|
GDK_POINTER_MOTION_HINT_MASK |
|
||||||
GDK_POINTER_MOTION_MASK);
|
GDK_POINTER_MOTION_MASK);
|
||||||
GdkWindow* window = gtk_widget_get_window(m_widget);
|
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
GdkDisplay* display = gdk_window_get_display(window);
|
GdkDisplay* display = gdk_window_get_display(window);
|
||||||
|
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
|
||||||
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
||||||
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
||||||
gdk_device_grab(device, window,
|
gdk_device_grab(device, window,
|
||||||
GDK_OWNERSHIP_NONE, true, mask, NULL, unsigned(GDK_CURRENT_TIME));
|
GDK_OWNERSHIP_NONE, true, mask, NULL, unsigned(GDK_CURRENT_TIME));
|
||||||
|
wxGCC_WARNING_RESTORE()
|
||||||
#else
|
#else
|
||||||
gdk_pointer_grab( window, true,
|
gdk_pointer_grab( window, true,
|
||||||
mask,
|
mask,
|
||||||
@@ -383,6 +396,7 @@ bool wxPopupTransientWindow::Show( bool show )
|
|||||||
NULL,
|
NULL,
|
||||||
(guint32)GDK_CURRENT_TIME );
|
(guint32)GDK_CURRENT_TIME );
|
||||||
#endif
|
#endif
|
||||||
|
#endif // !__WXGTK4__
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -2427,13 +2427,19 @@ wxMouseState wxGetMouseState()
|
|||||||
gint y;
|
gint y;
|
||||||
GdkModifierType mask;
|
GdkModifierType mask;
|
||||||
|
|
||||||
GdkDisplay* display = gdk_window_get_display(wxGetTopLevelGDK());
|
GdkWindow* window = wxGetTopLevelGDK();
|
||||||
|
GdkDisplay* display = gdk_window_get_display(window);
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
|
#ifdef __WXGTK4__
|
||||||
|
GdkSeat* seat = gdk_display_get_default_seat(display);
|
||||||
|
GdkDevice* device = gdk_seat_get_pointer(seat);
|
||||||
|
#else
|
||||||
|
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
|
||||||
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
||||||
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
||||||
GdkScreen* screen;
|
wxGCC_WARNING_RESTORE()
|
||||||
gdk_device_get_position(device, &screen, &x, &y);
|
#endif
|
||||||
GdkWindow* window = gdk_screen_get_root_window(screen);
|
gdk_device_get_position(device, NULL, &x, &y);
|
||||||
gdk_device_get_state(device, window, NULL, &mask);
|
gdk_device_get_state(device, window, NULL, &mask);
|
||||||
#else
|
#else
|
||||||
gdk_display_get_pointer(display, NULL, &x, &y, &mask);
|
gdk_display_get_pointer(display, NULL, &x, &y, &mask);
|
||||||
@@ -4831,8 +4837,16 @@ void wxWindowGTK::WarpPointer( int x, int y )
|
|||||||
GdkDisplay* display = gtk_widget_get_display(m_widget);
|
GdkDisplay* display = gtk_widget_get_display(m_widget);
|
||||||
GdkScreen* screen = gtk_widget_get_screen(m_widget);
|
GdkScreen* screen = gtk_widget_get_screen(m_widget);
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
|
#ifdef __WXGTK4__
|
||||||
|
GdkSeat* seat = gdk_display_get_default_seat(display);
|
||||||
|
GdkDevice* device = gdk_seat_get_pointer(seat);
|
||||||
|
#else
|
||||||
|
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
|
||||||
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
||||||
gdk_device_warp(gdk_device_manager_get_client_pointer(manager), screen, x, y);
|
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
||||||
|
wxGCC_WARNING_RESTORE()
|
||||||
|
#endif
|
||||||
|
gdk_device_warp(device, screen, x, y);
|
||||||
#else
|
#else
|
||||||
#ifdef GDK_WINDOWING_X11
|
#ifdef GDK_WINDOWING_X11
|
||||||
XWarpPointer(GDK_DISPLAY_XDISPLAY(display),
|
XWarpPointer(GDK_DISPLAY_XDISPLAY(display),
|
||||||
@@ -5768,6 +5782,11 @@ void wxWindowGTK::DoCaptureMouse()
|
|||||||
|
|
||||||
wxCHECK_RET( window, wxT("CaptureMouse() failed") );
|
wxCHECK_RET( window, wxT("CaptureMouse() failed") );
|
||||||
|
|
||||||
|
#ifdef __WXGTK4__
|
||||||
|
GdkDisplay* display = gdk_window_get_display(window);
|
||||||
|
GdkSeat* seat = gdk_display_get_default_seat(display);
|
||||||
|
gdk_seat_grab(seat, window, GDK_SEAT_CAPABILITY_POINTER, false, NULL, NULL, NULL, 0);
|
||||||
|
#else
|
||||||
const GdkEventMask mask = GdkEventMask(
|
const GdkEventMask mask = GdkEventMask(
|
||||||
GDK_BUTTON_PRESS_MASK |
|
GDK_BUTTON_PRESS_MASK |
|
||||||
GDK_BUTTON_RELEASE_MASK |
|
GDK_BUTTON_RELEASE_MASK |
|
||||||
@@ -5775,11 +5794,13 @@ void wxWindowGTK::DoCaptureMouse()
|
|||||||
GDK_POINTER_MOTION_MASK);
|
GDK_POINTER_MOTION_MASK);
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
GdkDisplay* display = gdk_window_get_display(window);
|
GdkDisplay* display = gdk_window_get_display(window);
|
||||||
|
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
|
||||||
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
||||||
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
||||||
gdk_device_grab(
|
gdk_device_grab(
|
||||||
device, window, GDK_OWNERSHIP_NONE, false, mask,
|
device, window, GDK_OWNERSHIP_NONE, false, mask,
|
||||||
NULL, unsigned(GDK_CURRENT_TIME));
|
NULL, unsigned(GDK_CURRENT_TIME));
|
||||||
|
wxGCC_WARNING_RESTORE()
|
||||||
#else
|
#else
|
||||||
gdk_pointer_grab( window, FALSE,
|
gdk_pointer_grab( window, FALSE,
|
||||||
mask,
|
mask,
|
||||||
@@ -5787,6 +5808,7 @@ void wxWindowGTK::DoCaptureMouse()
|
|||||||
NULL,
|
NULL,
|
||||||
(guint32)GDK_CURRENT_TIME );
|
(guint32)GDK_CURRENT_TIME );
|
||||||
#endif
|
#endif
|
||||||
|
#endif // !__WXGTK4__
|
||||||
g_captureWindow = this;
|
g_captureWindow = this;
|
||||||
g_captureWindowHasMouse = true;
|
g_captureWindowHasMouse = true;
|
||||||
}
|
}
|
||||||
@@ -5810,9 +5832,15 @@ void wxWindowGTK::DoReleaseMouse()
|
|||||||
|
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
GdkDisplay* display = gdk_window_get_display(window);
|
GdkDisplay* display = gdk_window_get_display(window);
|
||||||
|
#ifdef __WXGTK4__
|
||||||
|
gdk_seat_ungrab(gdk_display_get_default_seat(display));
|
||||||
|
#else
|
||||||
|
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
|
||||||
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
||||||
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
||||||
gdk_device_ungrab(device, unsigned(GDK_CURRENT_TIME));
|
gdk_device_ungrab(device, unsigned(GDK_CURRENT_TIME));
|
||||||
|
wxGCC_WARNING_RESTORE()
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
gdk_pointer_ungrab ( (guint32)GDK_CURRENT_TIME );
|
gdk_pointer_ungrab ( (guint32)GDK_CURRENT_TIME );
|
||||||
#endif
|
#endif
|
||||||
@@ -5822,9 +5850,15 @@ void wxWindowGTK::GTKReleaseMouseAndNotify()
|
|||||||
{
|
{
|
||||||
GdkDisplay* display = gtk_widget_get_display(m_widget);
|
GdkDisplay* display = gtk_widget_get_display(m_widget);
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
|
#ifdef __WXGTK4__
|
||||||
|
gdk_seat_ungrab(gdk_display_get_default_seat(display));
|
||||||
|
#else
|
||||||
|
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
|
||||||
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
||||||
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
||||||
gdk_device_ungrab(device, unsigned(GDK_CURRENT_TIME));
|
gdk_device_ungrab(device, unsigned(GDK_CURRENT_TIME));
|
||||||
|
wxGCC_WARNING_RESTORE()
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
gdk_display_pointer_ungrab(display, unsigned(GDK_CURRENT_TIME));
|
gdk_display_pointer_ungrab(display, unsigned(GDK_CURRENT_TIME));
|
||||||
#endif
|
#endif
|
||||||
@@ -6067,8 +6101,15 @@ void wxGetMousePosition(int* x, int* y)
|
|||||||
{
|
{
|
||||||
GdkDisplay* display = gdk_window_get_display(wxGetTopLevelGDK());
|
GdkDisplay* display = gdk_window_get_display(wxGetTopLevelGDK());
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
|
#ifdef __WXGTK4__
|
||||||
|
GdkSeat* seat = gdk_display_get_default_seat(display);
|
||||||
|
GdkDevice* device = gdk_seat_get_pointer(seat);
|
||||||
|
#else
|
||||||
|
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
|
||||||
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
||||||
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
GdkDevice* device = gdk_device_manager_get_client_pointer(manager);
|
||||||
|
wxGCC_WARNING_RESTORE()
|
||||||
|
#endif
|
||||||
gdk_device_get_position(device, NULL, x, y);
|
gdk_device_get_position(device, NULL, x, y);
|
||||||
#else
|
#else
|
||||||
gdk_display_get_pointer(display, NULL, x, y, NULL);
|
gdk_display_get_pointer(display, NULL, x, y, NULL);
|
||||||
|
Reference in New Issue
Block a user