mirror of
https://github.com/TTimo/GtkRadiant.git
synced 2025-04-24 03:11:05 +00:00
GTK3 mouse/device grab
This commit is contained in:
parent
939d0b4288
commit
5c9c2d44d5
2 changed files with 21 additions and 5 deletions
|
@ -560,7 +560,7 @@ void CamWnd::ToggleFreeMove(){
|
|||
SetFocus();
|
||||
SetCapture();
|
||||
|
||||
display = gdk_display_get_default();
|
||||
display = gdk_window_get_display( window );
|
||||
cursor = gdk_cursor_new_for_display( display, GDK_BLANK_CURSOR );
|
||||
gdk_window_set_cursor( window, cursor );
|
||||
|
||||
|
@ -579,7 +579,13 @@ void CamWnd::ToggleFreeMove(){
|
|||
| GDK_BUTTON_PRESS_MASK
|
||||
| GDK_BUTTON_RELEASE_MASK );
|
||||
|
||||
gdk_pointer_grab( gtk_widget_get_window( widget ), TRUE, mask, gtk_widget_get_window( widget ), NULL, GDK_CURRENT_TIME );
|
||||
// gdk_pointer_grab( gtk_widget_get_window( widget ), TRUE, mask, gtk_widget_get_window( widget ), NULL, GDK_CURRENT_TIME );
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkDevice *pointer;
|
||||
|
||||
device_manager = gdk_display_get_device_manager( display );
|
||||
pointer = gdk_device_manager_get_client_pointer( device_manager );
|
||||
gdk_device_grab( pointer, window, GDK_OWNERSHIP_APPLICATION, TRUE, mask, cursor, GDK_CURRENT_TIME );
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -76,10 +76,20 @@ static gboolean expose( GtkWidget *widget, cairo_t *cr, gpointer data ){
|
|||
static void button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
|
||||
GLWindow *wnd = (GLWindow*)data;
|
||||
guint32 flags = 0;
|
||||
GdkWindow *window;
|
||||
GdkDisplay *display;
|
||||
GdkDeviceManager *device_manager;
|
||||
GdkDevice *pointer;
|
||||
GdkCursor *cursor;
|
||||
GdkEventMask mask = (GdkEventMask)( GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK );
|
||||
|
||||
gdk_pointer_grab( gtk_widget_get_window( widget ), FALSE,
|
||||
(GdkEventMask)( GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK ),
|
||||
NULL, NULL, GDK_CURRENT_TIME );
|
||||
window = gtk_widget_get_window( widget );
|
||||
display = gdk_window_get_display( window );
|
||||
device_manager = gdk_display_get_device_manager( display );
|
||||
pointer = gdk_device_manager_get_client_pointer( device_manager );
|
||||
cursor = NULL;
|
||||
|
||||
gdk_device_grab( pointer, window, GDK_OWNERSHIP_APPLICATION, FALSE, mask, cursor, GDK_CURRENT_TIME );
|
||||
|
||||
gtk_window_set_focus( GTK_WINDOW( g_pParentWnd->m_pWidget ), widget );
|
||||
|
||||
|
|
Loading…
Reference in a new issue