From 4ca0a933242b8fa4597380de4d27396eb4d207f4 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 24 Feb 2020 07:39:20 -0500 Subject: [PATCH 1/5] Add a getter for GdkAppLaunchContext::display --- docs/reference/gdk/gdk4-sections.txt | 1 + gdk/gdkapplaunchcontext.c | 30 +++++++++++++++++++++------- gdk/gdkapplaunchcontext.h | 4 ++++ 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index 7a065041db..e2943f152d 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -994,6 +994,7 @@ gdk_wayland_surface_get_type Application launching gdkapplaunchcontext GdkAppLaunchContext +gdk_app_launch_context_get_display gdk_app_launch_context_set_desktop gdk_app_launch_context_set_timestamp gdk_app_launch_context_set_icon diff --git a/gdk/gdkapplaunchcontext.c b/gdk/gdkapplaunchcontext.c index 97c72aad4f..7a7e3956ae 100644 --- a/gdk/gdkapplaunchcontext.c +++ b/gdk/gdkapplaunchcontext.c @@ -60,9 +60,9 @@ */ static void gdk_app_launch_context_finalize (GObject *object); -static gchar * gdk_app_launch_context_get_display (GAppLaunchContext *context, - GAppInfo *info, - GList *files); +static gchar * gdk_app_launch_context_get_display_name (GAppLaunchContext *context, + GAppInfo *info, + GList *files); static gchar * gdk_app_launch_context_get_startup_notify_id (GAppLaunchContext *context, GAppInfo *info, GList *files); @@ -125,7 +125,7 @@ gdk_app_launch_context_class_init (GdkAppLaunchContextClass *klass) gobject_class->finalize = gdk_app_launch_context_finalize; - context_class->get_display = gdk_app_launch_context_get_display; + context_class->get_display = gdk_app_launch_context_get_display_name; context_class->get_startup_notify_id = gdk_app_launch_context_get_startup_notify_id; context_class->launch_failed = gdk_app_launch_context_launch_failed; @@ -158,9 +158,9 @@ gdk_app_launch_context_finalize (GObject *object) } static gchar * -gdk_app_launch_context_get_display (GAppLaunchContext *context, - GAppInfo *info, - GList *files) +gdk_app_launch_context_get_display_name (GAppLaunchContext *context, + GAppInfo *info, + GList *files) { GdkAppLaunchContext *ctx = GDK_APP_LAUNCH_CONTEXT (context); GdkDisplay *display; @@ -173,6 +173,22 @@ gdk_app_launch_context_get_display (GAppLaunchContext *context, return g_strdup (gdk_display_get_name (display)); } +/** + * gdk_app_launch_context_get_display: + * @context: a #GdkAppLaunchContext + * + * Gets the #GdkDispolat that @context is for. + * + * Returns: the display of @context + */ +GdkDisplay * +gdk_app_launch_context_get_display (GdkAppLaunchContext *context) +{ + g_return_val_if_fail (GDK_IS_APP_LAUNCH_CONTEXT (context), NULL); + + return context->display; +} + /** * gdk_app_launch_context_set_desktop: * @context: a #GdkAppLaunchContext diff --git a/gdk/gdkapplaunchcontext.h b/gdk/gdkapplaunchcontext.h index 6109480ed0..575a867501 100644 --- a/gdk/gdkapplaunchcontext.h +++ b/gdk/gdkapplaunchcontext.h @@ -38,6 +38,9 @@ G_BEGIN_DECLS GDK_AVAILABLE_IN_ALL GType gdk_app_launch_context_get_type (void); +GDK_AVAILABLE_IN_ALL +GdkDisplay * gdk_app_launch_context_get_display (GdkAppLaunchContext *context); + GDK_AVAILABLE_IN_ALL void gdk_app_launch_context_set_desktop (GdkAppLaunchContext *context, gint desktop); @@ -51,6 +54,7 @@ GDK_AVAILABLE_IN_ALL void gdk_app_launch_context_set_icon_name (GdkAppLaunchContext *context, const char *icon_name); + G_END_DECLS #endif /* __GDK_APP_LAUNCH_CONTEXT_H__ */ From 9ce6e98487712fa7c5760a4501f80582415015ab Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 24 Feb 2020 08:00:11 -0500 Subject: [PATCH 2/5] device: Add missing getters This adds getters for a few properties that were missing them, and renames the input-mode and input-source properties to match their existing getters. --- docs/reference/gdk/gdk4-sections.txt | 2 ++ gdk/gdkdevice.c | 50 +++++++++++++++++----------- gdk/gdkdevice.h | 7 ++++ gdk/gdkdeviceprivate.h | 2 -- gdk/gdksurface.c | 2 +- 5 files changed, 40 insertions(+), 23 deletions(-) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index e2943f152d..5aa4e0deed 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -463,6 +463,8 @@ gdk_device_get_n_axes gdk_device_get_n_keys gdk_device_get_axes gdk_device_get_seat +gdk_device_get_num_touches +gdk_device_get_device_tool gdk_device_get_state diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c index b9d0e47bfe..725366f0e2 100644 --- a/gdk/gdkdevice.c +++ b/gdk/gdkdevice.c @@ -92,8 +92,8 @@ enum { PROP_NAME, PROP_ASSOCIATED_DEVICE, PROP_TYPE, - PROP_INPUT_SOURCE, - PROP_INPUT_MODE, + PROP_SOURCE, + PROP_MODE, PROP_HAS_CURSOR, PROP_N_AXES, PROP_VENDOR_ID, @@ -169,12 +169,12 @@ gdk_device_class_init (GdkDeviceClass *klass) G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** - * GdkDevice:input-source: + * GdkDevice:source: * * Source type for the device. */ - device_props[PROP_INPUT_SOURCE] = - g_param_spec_enum ("input-source", + device_props[PROP_SOURCE] = + g_param_spec_enum ("source", P_("Input source"), P_("Source type for the device"), GDK_TYPE_INPUT_SOURCE, @@ -183,12 +183,12 @@ gdk_device_class_init (GdkDeviceClass *klass) G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); /* - * GdkDevice:input-mode: + * GdkDevice:mode: * * Input mode for the device. */ - device_props[PROP_INPUT_MODE] = - g_param_spec_enum ("input-mode", + device_props[PROP_MODE] = + g_param_spec_enum ("mode", P_("Input mode for the device"), P_("Input mode for the device"), GDK_TYPE_INPUT_MODE, @@ -414,10 +414,10 @@ gdk_device_set_property (GObject *object, case PROP_TYPE: device->type = g_value_get_enum (value); break; - case PROP_INPUT_SOURCE: + case PROP_SOURCE: device->source = g_value_get_enum (value); break; - case PROP_INPUT_MODE: + case PROP_MODE: gdk_device_set_mode (device, g_value_get_enum (value)); break; case PROP_HAS_CURSOR: @@ -463,10 +463,10 @@ gdk_device_get_property (GObject *object, case PROP_TYPE: g_value_set_enum (value, device->type); break; - case PROP_INPUT_SOURCE: + case PROP_SOURCE: g_value_set_enum (value, device->source); break; - case PROP_INPUT_MODE: + case PROP_MODE: g_value_set_enum (value, device->mode); break; case PROP_HAS_CURSOR: @@ -519,7 +519,7 @@ gdk_device_get_state (GdkDevice *device, GdkModifierType *mask) { g_return_if_fail (GDK_IS_DEVICE (device)); - g_return_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD); + g_return_if_fail (device->source != GDK_SOURCE_KEYBOARD); g_return_if_fail (GDK_IS_SURFACE (surface)); g_return_if_fail (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_SLAVE || gdk_display_device_is_grabbed (gdk_device_get_display (device), device)); @@ -542,7 +542,7 @@ gdk_device_get_position (GdkDevice *device, double *y) { g_return_if_fail (GDK_IS_DEVICE (device)); - g_return_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD); + g_return_if_fail (device->source != GDK_SOURCE_KEYBOARD); g_return_if_fail (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_SLAVE || gdk_display_device_is_grabbed (gdk_device_get_display (device), device)); @@ -577,7 +577,7 @@ gdk_device_get_surface_at_position (GdkDevice *device, GdkSurface *surface; g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); - g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, NULL); + g_return_val_if_fail (device->source != GDK_SOURCE_KEYBOARD, NULL); g_return_val_if_fail (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_SLAVE || gdk_display_device_is_grabbed (gdk_device_get_display (device), device), NULL); @@ -626,7 +626,7 @@ gdk_device_get_history (GdkDevice *device, gint *n_events) { g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE); - g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, FALSE); + g_return_val_if_fail (device->source != GDK_SOURCE_KEYBOARD, FALSE); g_return_val_if_fail (GDK_IS_SURFACE (surface), FALSE); if (n_events) @@ -772,7 +772,7 @@ gdk_device_set_mode (GdkDevice *device, return FALSE; device->mode = mode; - g_object_notify_by_pspec (G_OBJECT (device), device_props[PROP_INPUT_MODE]); + g_object_notify_by_pspec (G_OBJECT (device), device_props[PROP_MODE]); return TRUE; } @@ -1754,8 +1754,18 @@ gdk_device_update_tool (GdkDevice *device, } } -GdkInputMode -gdk_device_get_input_mode (GdkDevice *device) +guint +gdk_device_get_num_touches (GdkDevice *device) { - return device->mode; + g_return_val_if_fail (GDK_IS_DEVICE (device), 0); + + return device->num_touches; +} + +GdkDeviceTool * +gdk_device_get_device_tool (GdkDevice *device) +{ + g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); + + return device->last_tool; } diff --git a/gdk/gdkdevice.h b/gdk/gdkdevice.h index 9a2cc758bf..d69e18ca21 100644 --- a/gdk/gdkdevice.h +++ b/gdk/gdkdevice.h @@ -24,6 +24,7 @@ #include #include +#include G_BEGIN_DECLS @@ -221,6 +222,12 @@ GdkSeat *gdk_device_get_seat (GdkDevice *device); GDK_AVAILABLE_IN_ALL GdkAxisFlags gdk_device_get_axes (GdkDevice *device); +GDK_AVAILABLE_IN_ALL +guint gdk_device_get_num_touches (GdkDevice *device); + +GDK_AVAILABLE_IN_ALL +GdkDeviceTool * gdk_device_get_device_tool (GdkDevice *device); + G_END_DECLS #endif /* __GDK_DEVICE_H__ */ diff --git a/gdk/gdkdeviceprivate.h b/gdk/gdkdeviceprivate.h index 29a9dc6de5..aab3166d2b 100644 --- a/gdk/gdkdeviceprivate.h +++ b/gdk/gdkdeviceprivate.h @@ -180,8 +180,6 @@ void gdk_device_set_seat (GdkDevice *device, void gdk_device_update_tool (GdkDevice *device, GdkDeviceTool *tool); -GdkInputMode gdk_device_get_input_mode (GdkDevice *device); - G_END_DECLS #endif /* __GDK_DEVICE_PRIVATE_H__ */ diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index 0717106aee..dfdc9c0cb1 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -2695,7 +2695,7 @@ _gdk_windowing_got_event (GdkDisplay *display, _gdk_display_device_grab_update (display, device, source_device, serial); - if (gdk_device_get_input_mode (device) == GDK_MODE_DISABLED || + if (gdk_device_get_mode (device) == GDK_MODE_DISABLED || !_gdk_display_check_grab_ownership (display, device, serial)) { /* Device events are blocked by another From 6be9e44786700da647b2f5e2a94bb4ba3b3218d6 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 24 Feb 2020 13:35:27 -0500 Subject: [PATCH 3/5] gdk: Drop GdkDevice::input-mode and rename ::input-source Drop the input-mode, since it only makes sense for floating devices, which we don't have anymore. And renamt ::input-source to ::source, to match the getter. Update all users. --- gdk/broadway/gdkdisplay-broadway.c | 9 ++-- gdk/gdkdevice.c | 87 +++--------------------------- gdk/gdkdevice.h | 27 +--------- gdk/gdkdeviceprivate.h | 1 - gdk/gdksurface.c | 7 +-- gdk/wayland/gdkdevice-wayland.c | 39 +++++--------- gdk/win32/gdkdevice-wintab.c | 5 -- gdk/win32/gdkdevicemanager-win32.c | 19 +++---- gdk/x11/gdkdevice-xi2.c | 3 -- gdk/x11/gdkdevicemanager-xi2.c | 67 ++++------------------- 10 files changed, 43 insertions(+), 221 deletions(-) diff --git a/gdk/broadway/gdkdisplay-broadway.c b/gdk/broadway/gdkdisplay-broadway.c index f5b3d4145b..3beefc4636 100644 --- a/gdk/broadway/gdkdisplay-broadway.c +++ b/gdk/broadway/gdkdisplay-broadway.c @@ -110,8 +110,7 @@ create_core_pointer (GdkDisplay *display) return g_object_new (GDK_TYPE_BROADWAY_DEVICE, "name", "Core Pointer", "type", GDK_DEVICE_TYPE_MASTER, - "input-source", GDK_SOURCE_MOUSE, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_MOUSE, "has-cursor", TRUE, "display", display, NULL); @@ -123,8 +122,7 @@ create_core_keyboard (GdkDisplay *display) return g_object_new (GDK_TYPE_BROADWAY_DEVICE, "name", "Core Keyboard", "type", GDK_DEVICE_TYPE_MASTER, - "input-source", GDK_SOURCE_KEYBOARD, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_KEYBOARD, "has-cursor", FALSE, "display", display, NULL); @@ -136,8 +134,7 @@ create_touchscreen (GdkDisplay *display) return g_object_new (GDK_TYPE_BROADWAY_DEVICE, "name", "Touchscreen", "type", GDK_DEVICE_TYPE_SLAVE, - "input-source", GDK_SOURCE_TOUCHSCREEN, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_TOUCHSCREEN, "has-cursor", FALSE, "display", display, NULL); diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c index 725366f0e2..9665ca469f 100644 --- a/gdk/gdkdevice.c +++ b/gdk/gdkdevice.c @@ -93,7 +93,6 @@ enum { PROP_ASSOCIATED_DEVICE, PROP_TYPE, PROP_SOURCE, - PROP_MODE, PROP_HAS_CURSOR, PROP_N_AXES, PROP_VENDOR_ID, @@ -182,19 +181,6 @@ gdk_device_class_init (GdkDeviceClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); - /* - * GdkDevice:mode: - * - * Input mode for the device. - */ - device_props[PROP_MODE] = - g_param_spec_enum ("mode", - P_("Input mode for the device"), - P_("Input mode for the device"), - GDK_TYPE_INPUT_MODE, - GDK_MODE_DISABLED, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); - /** * GdkDevice:has-cursor: * @@ -417,9 +403,6 @@ gdk_device_set_property (GObject *object, case PROP_SOURCE: device->source = g_value_get_enum (value); break; - case PROP_MODE: - gdk_device_set_mode (device, g_value_get_enum (value)); - break; case PROP_HAS_CURSOR: device->has_cursor = g_value_get_boolean (value); break; @@ -466,9 +449,6 @@ gdk_device_get_property (GObject *object, case PROP_SOURCE: g_value_set_enum (value, device->source); break; - case PROP_MODE: - g_value_set_enum (value, device->mode); - break; case PROP_HAS_CURSOR: g_value_set_boolean (value, device->has_cursor); break; @@ -727,56 +707,6 @@ gdk_device_get_source (GdkDevice *device) return device->source; } -/** - * gdk_device_get_mode: - * @device: a #GdkDevice - * - * Determines the mode of the device. - * - * Returns: a #GdkInputMode - **/ -GdkInputMode -gdk_device_get_mode (GdkDevice *device) -{ - g_return_val_if_fail (GDK_IS_DEVICE (device), 0); - - return device->mode; -} - -/** - * gdk_device_set_mode: - * @device: a #GdkDevice. - * @mode: the input mode. - * - * Sets a the mode of an input device. The mode controls if the - * device is active and whether the device’s range is mapped to the - * entire screen or to a single surface. - * - * Note: This is only meaningful for floating devices, master devices (and - * slaves connected to these) drive the pointer cursor, which is not limited - * by the input mode. - * - * Returns: %TRUE if the mode was successfully changed. - **/ -gboolean -gdk_device_set_mode (GdkDevice *device, - GdkInputMode mode) -{ - g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE); - - if (device->mode == mode) - return TRUE; - - if (mode == GDK_MODE_DISABLED && - gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_MASTER) - return FALSE; - - device->mode = mode; - g_object_notify_by_pspec (G_OBJECT (device), device_props[PROP_MODE]); - - return TRUE; -} - /** * gdk_device_get_n_keys: * @device: a #GdkDevice @@ -866,7 +796,7 @@ gdk_device_get_axis_use (GdkDevice *device, GdkAxisInfo *info; g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_AXIS_IGNORE); - g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, GDK_AXIS_IGNORE); + g_return_val_if_fail (device->source != GDK_SOURCE_KEYBOARD, GDK_AXIS_IGNORE); g_return_val_if_fail (index_ < device->axes->len, GDK_AXIS_IGNORE); info = &g_array_index (device->axes, GdkAxisInfo, index_); @@ -890,7 +820,7 @@ gdk_device_set_axis_use (GdkDevice *device, GdkAxisInfo *info; g_return_if_fail (GDK_IS_DEVICE (device)); - g_return_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD); + g_return_if_fail (device->source != GDK_SOURCE_KEYBOARD); g_return_if_fail (index_ < device->axes->len); info = &g_array_index (device->axes, GdkAxisInfo, index_); @@ -1075,7 +1005,7 @@ gint gdk_device_get_n_axes (GdkDevice *device) { g_return_val_if_fail (GDK_IS_DEVICE (device), 0); - g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, 0); + g_return_val_if_fail (device->source != GDK_SOURCE_KEYBOARD, 0); return device->axes->len; } @@ -1098,7 +1028,7 @@ gdk_device_get_axis_names (GdkDevice *device) gint i; g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); - g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, NULL); + g_return_val_if_fail (device->source != GDK_SOURCE_KEYBOARD, NULL); if (device->axes->len == 0) return NULL; @@ -1140,7 +1070,7 @@ gdk_device_get_axis_value (GdkDevice *device, gint i; g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE); - g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, FALSE); + g_return_val_if_fail (device->source != GDK_SOURCE_KEYBOARD, FALSE); if (axes == NULL) return FALSE; @@ -1184,7 +1114,7 @@ gdk_device_get_axis (GdkDevice *device, gint i; g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE); - g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, FALSE); + g_return_val_if_fail (device->source != GDK_SOURCE_KEYBOARD, FALSE); if (axes == NULL) return FALSE; @@ -1506,9 +1436,6 @@ _gdk_device_translate_screen_coord (GdkDevice *device, GdkAxisInfo axis_info; gdouble axis_width, scale, offset; - if (device->mode != GDK_MODE_SCREEN) - return FALSE; - if (index_ >= device->axes->len) return FALSE; @@ -1626,7 +1553,7 @@ gdk_device_get_last_event_surface (GdkDevice *device) GdkPointerSurfaceInfo *info; g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); - g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, NULL); + g_return_val_if_fail (device->source != GDK_SOURCE_KEYBOARD, NULL); display = gdk_device_get_display (device); info = _gdk_display_get_pointer_info (display, device); diff --git a/gdk/gdkdevice.h b/gdk/gdkdevice.h index d69e18ca21..3229a0b5af 100644 --- a/gdk/gdkdevice.h +++ b/gdk/gdkdevice.h @@ -69,25 +69,6 @@ typedef enum GDK_SOURCE_TABLET_PAD } GdkInputSource; -/** - * GdkInputMode: - * @GDK_MODE_DISABLED: the device is disabled and will not report any events. - * @GDK_MODE_SCREEN: the device is enabled. The device’s coordinate space - * maps to the entire screen. - * @GDK_MODE_SURFACE: the device is enabled. The device’s coordinate space - * is mapped to a single surface. The manner in which this surface - * is chosen is undefined, but it will typically be the same - * way in which the focus surface for key events is determined. - * - * An enumeration that describes the mode of an input device. - */ -typedef enum -{ - GDK_MODE_DISABLED, - GDK_MODE_SCREEN, - GDK_MODE_SURFACE -} GdkInputMode; - /** * GdkDeviceType: * @GDK_DEVICE_TYPE_MASTER: Device is a master (or virtual) device. There will @@ -132,13 +113,7 @@ gboolean gdk_device_get_has_cursor (GdkDevice *device); /* Functions to configure a device */ GDK_AVAILABLE_IN_ALL -GdkInputSource gdk_device_get_source (GdkDevice *device); - -GDK_AVAILABLE_IN_ALL -GdkInputMode gdk_device_get_mode (GdkDevice *device); -GDK_AVAILABLE_IN_ALL -gboolean gdk_device_set_mode (GdkDevice *device, - GdkInputMode mode); +GdkInputSource gdk_device_get_source (GdkDevice *device); GDK_AVAILABLE_IN_ALL gint gdk_device_get_n_keys (GdkDevice *device); diff --git a/gdk/gdkdeviceprivate.h b/gdk/gdkdeviceprivate.h index aab3166d2b..9135edaac2 100644 --- a/gdk/gdkdeviceprivate.h +++ b/gdk/gdkdeviceprivate.h @@ -44,7 +44,6 @@ struct _GdkDevice gchar *name; GdkInputSource source; - GdkInputMode mode; gboolean has_cursor; gint num_keys; GdkAxisFlags axis_flags; diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index dfdc9c0cb1..a9ea5bcffa 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -2695,12 +2695,9 @@ _gdk_windowing_got_event (GdkDisplay *display, _gdk_display_device_grab_update (display, device, source_device, serial); - if (gdk_device_get_mode (device) == GDK_MODE_DISABLED || - !_gdk_display_check_grab_ownership (display, device, serial)) + if (!_gdk_display_check_grab_ownership (display, device, serial)) { - /* Device events are blocked by another - * device grab, or the device is disabled - */ + /* Device events are blocked by another device grab */ unlink_event = TRUE; goto out; } diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index 26f9b142c5..c18b0e1eaf 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -2780,8 +2780,7 @@ tablet_handle_done (void *data, master = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", master_name, "type", GDK_DEVICE_TYPE_MASTER, - "input-source", GDK_SOURCE_MOUSE, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_MOUSE, "has-cursor", TRUE, "display", display, "seat", seat, @@ -2793,8 +2792,7 @@ tablet_handle_done (void *data, stylus_device = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", tablet->name, "type", GDK_DEVICE_TYPE_SLAVE, - "input-source", GDK_SOURCE_PEN, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_PEN, "has-cursor", FALSE, "display", display, "seat", seat, @@ -2805,8 +2803,7 @@ tablet_handle_done (void *data, eraser_device = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", eraser_name, "type", GDK_DEVICE_TYPE_SLAVE, - "input-source", GDK_SOURCE_ERASER, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_ERASER, "has-cursor", FALSE, "display", display, "seat", seat, @@ -2915,8 +2912,7 @@ seat_handle_capabilities (void *data, seat->pointer = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Wayland Pointer", "type", GDK_DEVICE_TYPE_SLAVE, - "input-source", GDK_SOURCE_MOUSE, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_MOUSE, "has-cursor", TRUE, "display", seat->display, "seat", seat, @@ -2986,8 +2982,7 @@ seat_handle_capabilities (void *data, seat->keyboard = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Wayland Keyboard", "type", GDK_DEVICE_TYPE_SLAVE, - "input-source", GDK_SOURCE_KEYBOARD, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_KEYBOARD, "has-cursor", FALSE, "display", seat->display, "seat", seat, @@ -3015,8 +3010,7 @@ seat_handle_capabilities (void *data, seat->touch_master = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Wayland Touch Master Pointer", "type", GDK_DEVICE_TYPE_MASTER, - "input-source", GDK_SOURCE_MOUSE, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_MOUSE, "has-cursor", TRUE, "display", seat->display, "seat", seat, @@ -3028,8 +3022,7 @@ seat_handle_capabilities (void *data, seat->touch = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Wayland Touch", "type", GDK_DEVICE_TYPE_SLAVE, - "input-source", GDK_SOURCE_TOUCHSCREEN, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_TOUCHSCREEN, "has-cursor", FALSE, "display", seat->display, "seat", seat, @@ -3066,8 +3059,7 @@ get_scroll_device (GdkWaylandSeat *seat, seat->wheel_scrolling = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Wayland Wheel Scrolling", "type", GDK_DEVICE_TYPE_SLAVE, - "input-source", GDK_SOURCE_MOUSE, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_MOUSE, "has-cursor", TRUE, "display", seat->display, "seat", seat, @@ -3083,8 +3075,7 @@ get_scroll_device (GdkWaylandSeat *seat, seat->finger_scrolling = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Wayland Finger Scrolling", "type", GDK_DEVICE_TYPE_SLAVE, - "input-source", GDK_SOURCE_TOUCHPAD, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_TOUCHPAD, "has-cursor", TRUE, "display", seat->display, "seat", seat, @@ -3100,8 +3091,7 @@ get_scroll_device (GdkWaylandSeat *seat, seat->continuous_scrolling = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Wayland Continuous Scrolling", "type", GDK_DEVICE_TYPE_SLAVE, - "input-source", GDK_SOURCE_TRACKPOINT, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_TRACKPOINT, "has-cursor", TRUE, "display", seat->display, "seat", seat, @@ -4102,8 +4092,7 @@ tablet_pad_handle_done (void *data, g_object_new (GDK_TYPE_WAYLAND_DEVICE_PAD, "name", "Pad device", "type", GDK_DEVICE_TYPE_SLAVE, - "input-source", GDK_SOURCE_TABLET_PAD, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_TABLET_PAD, "display", gdk_seat_get_display (pad->seat), "seat", pad->seat, NULL); @@ -4281,8 +4270,7 @@ init_devices (GdkWaylandSeat *seat) seat->master_pointer = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Core Pointer", "type", GDK_DEVICE_TYPE_MASTER, - "input-source", GDK_SOURCE_MOUSE, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_MOUSE, "has-cursor", TRUE, "display", seat->display, "seat", seat, @@ -4294,8 +4282,7 @@ init_devices (GdkWaylandSeat *seat) seat->master_keyboard = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Core Keyboard", "type", GDK_DEVICE_TYPE_MASTER, - "input-source", GDK_SOURCE_KEYBOARD, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_KEYBOARD, "has-cursor", FALSE, "display", seat->display, "seat", seat, diff --git a/gdk/win32/gdkdevice-wintab.c b/gdk/win32/gdkdevice-wintab.c index 69bf5be1be..08ca21ccf6 100644 --- a/gdk/win32/gdkdevice-wintab.c +++ b/gdk/win32/gdkdevice-wintab.c @@ -233,11 +233,6 @@ _gdk_device_wintab_translate_axes (GdkDeviceWintab *device_wintab, { case GDK_AXIS_X: case GDK_AXIS_Y: - if (gdk_device_get_mode (device) == GDK_MODE_SURFACE) - _gdk_device_translate_surface_coord (device, window, i, - device_wintab->last_axis_data[i], - &axes[i]); - else { HMONITOR hmonitor; MONITORINFO minfo = {sizeof (MONITORINFO),}; diff --git a/gdk/win32/gdkdevicemanager-win32.c b/gdk/win32/gdkdevicemanager-win32.c index c2030b1f1a..393fe6d7c1 100644 --- a/gdk/win32/gdkdevicemanager-win32.c +++ b/gdk/win32/gdkdevicemanager-win32.c @@ -79,8 +79,7 @@ create_pointer (GdkDeviceManagerWin32 *device_manager, return g_object_new (g_type, "name", name, "type", type, - "input-source", GDK_SOURCE_MOUSE, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_MOUSE, "has-cursor", type == GDK_DEVICE_TYPE_MASTER, "display", _gdk_display, NULL); @@ -95,8 +94,7 @@ create_keyboard (GdkDeviceManagerWin32 *device_manager, return g_object_new (g_type, "name", name, "type", type, - "input-source", GDK_SOURCE_KEYBOARD, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_KEYBOARD, "has-cursor", FALSE, "display", _gdk_display, NULL); @@ -558,8 +556,7 @@ wintab_init_check (GdkDeviceManagerWin32 *device_manager) device = g_object_new (GDK_TYPE_DEVICE_WINTAB, "name", device_name, "type", GDK_DEVICE_TYPE_FLOATING, - "input-source", GDK_SOURCE_PEN, - "input-mode", GDK_MODE_SCREEN, + "source", GDK_SOURCE_PEN, "has-cursor", lc.lcOptions & CXO_SYSTEM, "display", display, NULL); @@ -940,8 +937,7 @@ gdk_input_other_event (GdkDisplay *display, device_manager->dev_entered_proximity -= 1; if (source_device != NULL && - source_device->sends_core && - gdk_device_get_mode (GDK_DEVICE (source_device)) != GDK_MODE_DISABLED) + source_device->sends_core) { _gdk_device_virtual_set_active (device_manager->core_pointer, GDK_DEVICE (source_device)); @@ -950,7 +946,6 @@ gdk_input_other_event (GdkDisplay *display, } else if (source_device != NULL && source_device->sends_core && - gdk_device_get_mode (GDK_DEVICE (source_device)) != GDK_MODE_DISABLED && _gdk_input_ignore_core == 0) { /* A fallback for cases when two devices (disabled and enabled) @@ -970,8 +965,7 @@ gdk_input_other_event (GdkDisplay *display, _gdk_input_ignore_core += 1; } - if (source_device == NULL || - gdk_device_get_mode (GDK_DEVICE (source_device)) == GDK_MODE_DISABLED) + if (source_device == NULL) return NULL; /* Don't produce any button or motion events while a window is being @@ -1127,8 +1121,7 @@ gdk_input_other_event (GdkDisplay *display, packet.pkCursor)) == NULL) return NULL; - if (source_device->sends_core && - gdk_device_get_mode (GDK_DEVICE (source_device)) != GDK_MODE_DISABLED) + if (source_device->sends_core) { _gdk_device_virtual_set_active (device_manager->core_pointer, GDK_DEVICE (source_device)); diff --git a/gdk/x11/gdkdevice-xi2.c b/gdk/x11/gdkdevice-xi2.c index f6b94da061..40c0e8bb07 100644 --- a/gdk/x11/gdkdevice-xi2.c +++ b/gdk/x11/gdkdevice-xi2.c @@ -230,9 +230,6 @@ gdk_x11_device_xi2_get_state (GdkDevice *device, case GDK_AXIS_X: case GDK_AXIS_Y: case GDK_AXIS_IGNORE: - if (gdk_device_get_mode (device) == GDK_MODE_SURFACE) - _gdk_device_translate_surface_coord (device, surface, j, value, &axes[j]); - else { gint root_x, root_y; diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c index e22dbfd3eb..e4dadee359 100644 --- a/gdk/x11/gdkdevicemanager-xi2.c +++ b/gdk/x11/gdkdevicemanager-xi2.c @@ -473,7 +473,6 @@ create_device (GdkX11DeviceManagerXI2 *device_manager, GdkInputSource touch_source; GdkDeviceType type; GdkDevice *device; - GdkInputMode mode; gint num_touches = 0; gchar *vendor_id = NULL, *product_id = NULL; @@ -520,17 +519,14 @@ create_device (GdkX11DeviceManagerXI2 *device_manager, case XIMasterKeyboard: case XIMasterPointer: type = GDK_DEVICE_TYPE_MASTER; - mode = GDK_MODE_SCREEN; break; case XISlaveKeyboard: case XISlavePointer: type = GDK_DEVICE_TYPE_SLAVE; - mode = GDK_MODE_DISABLED; break; case XIFloatingSlave: default: type = GDK_DEVICE_TYPE_FLOATING; - mode = GDK_MODE_DISABLED; break; } @@ -538,12 +534,10 @@ create_device (GdkX11DeviceManagerXI2 *device_manager, ({ const gchar *type_names[] = { "master", "slave", "floating" }; const gchar *source_names[] = { "mouse", "pen", "eraser", "cursor", "keyboard", "direct touch", "indirect touch", "trackpoint", "pad" }; - const gchar *mode_names[] = { "disabled", "screen", "window" }; - g_message ("input device:\n\tname: %s\n\ttype: %s\n\tsource: %s\n\tmode: %s\n\thas cursor: %d\n\ttouches: %d", + g_message ("input device:\n\tname: %s\n\ttype: %s\n\tsource: %s\n\thas cursor: %d\n\ttouches: %d", dev->name, type_names[type], source_names[input_source], - mode_names[mode], dev->use == XIMasterPointer, num_touches); })); @@ -555,8 +549,7 @@ create_device (GdkX11DeviceManagerXI2 *device_manager, device = g_object_new (GDK_TYPE_X11_DEVICE_XI2, "name", dev->name, "type", type, - "input-source", input_source, - "input-mode", mode, + "source", input_source, "has-cursor", (dev->use == XIMasterPointer), "display", display, "device-id", dev->deviceid, @@ -1228,9 +1221,6 @@ translate_axes (GdkDevice *device, { case GDK_AXIS_X: case GDK_AXIS_Y: - if (gdk_device_get_mode (device) == GDK_MODE_SURFACE) - _gdk_device_translate_surface_coord (device, surface, i, val, &axes[i]); - else { if (use == GDK_AXIS_X) axes[i] = x; @@ -1661,17 +1651,8 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, surface, &xev->valuators); - if (gdk_device_get_mode (device) == GDK_MODE_SURFACE) - { - /* Update event coordinates from axes */ - gdk_device_get_axis (device, axes, GDK_AXIS_X, &x); - gdk_device_get_axis (device, axes, GDK_AXIS_Y, &y); - } - else - { - x = (double) xev->event_x / scale; - y = (double) xev->event_y / scale; - } + x = (double) xev->event_x / scale; + y = (double) xev->event_y / scale; event = gdk_event_button_new (ev->evtype == XI_ButtonPress ? GDK_BUTTON_PRESS @@ -1746,17 +1727,8 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, surface, &xev->valuators); - if (gdk_device_get_mode (device) == GDK_MODE_SURFACE) - { - /* Update event coordinates from axes */ - gdk_device_get_axis (device, axes, GDK_AXIS_X, &x); - gdk_device_get_axis (device, axes, GDK_AXIS_Y, &y); - } - else - { - x = (double) xev->event_x / scale; - y = (double) xev->event_y / scale; - } + x = (double) xev->event_x / scale; + y = (double) xev->event_y / scale; event = gdk_event_motion_new (surface, device, @@ -1803,17 +1775,9 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, surface, &xev->valuators); - if (gdk_device_get_mode (device) == GDK_MODE_SURFACE) - { - /* Update event coordinates from axes */ - gdk_device_get_axis (device, axes, GDK_AXIS_X, &x); - gdk_device_get_axis (device, axes, GDK_AXIS_Y, &y); - } - else - { - x = (double) xev->event_x / scale; - y = (double) xev->event_y / scale; - } + x = (double) xev->event_x / scale; + y = (double) xev->event_y / scale; + event = gdk_event_touch_new (ev->evtype == XI_TouchBegin ? GDK_TOUCH_BEGIN : GDK_TOUCH_END, @@ -1861,17 +1825,8 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, surface, &xev->valuators); - if (gdk_device_get_mode (device) == GDK_MODE_SURFACE) - { - /* Update event coordinates from axes */ - gdk_device_get_axis (device, axes, GDK_AXIS_X, &x); - gdk_device_get_axis (device, axes, GDK_AXIS_Y, &y); - } - else - { - x = (double) xev->event_x / scale; - y = (double) xev->event_y / scale; - } + x = (double) xev->event_x / scale; + y = (double) xev->event_y / scale; event = gdk_event_touch_new (GDK_TOUCH_UPDATE, GUINT_TO_POINTER (xev->detail), From ec76f65d0984c0a0eb6aa72510c1ff072fead403 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 24 Feb 2020 08:01:19 -0500 Subject: [PATCH 4/5] surface: Add a getter for autohide --- docs/reference/gdk/gdk4-sections.txt | 1 + gdk/gdksurface.c | 17 +++++++++++++++++ gdk/gdksurface.h | 3 +++ 3 files changed, 21 insertions(+) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index 5aa4e0deed..1a7e81db96 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -188,6 +188,7 @@ gdk_surface_is_destroyed gdk_surface_is_visible gdk_surface_is_viewable gdk_surface_get_state +gdk_surface_get_autohide gdk_surface_minimize gdk_surface_unminimize gdk_surface_stick diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index a9ea5bcffa..480a2ff9c3 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -4183,3 +4183,20 @@ gdk_surface_translate_coordinates (GdkSurface *from, return TRUE; } + +/** + * gdk_surface_get_autohide: + * @surface: a #GdkSurface + * + * Returns whether this surface is set to hide on outside clicks. + * + * Returns: %TRUE if @surface will autohide + */ +gboolean +gdk_surface_get_autohide (GdkSurface *surface) +{ + g_return_val_if_fail (GDK_IS_SURFACE (surface), FALSE); + + return surface->autohide; +} + diff --git a/gdk/gdksurface.h b/gdk/gdksurface.h index 52141b1c26..623be33c0d 100644 --- a/gdk/gdksurface.h +++ b/gdk/gdksurface.h @@ -408,6 +408,9 @@ gboolean gdk_surface_is_visible (GdkSurface *surface); GDK_AVAILABLE_IN_ALL gboolean gdk_surface_is_viewable (GdkSurface *surface); +GDK_AVAILABLE_IN_ALL +gboolean gdk_surface_get_autohide (GdkSurface *surface); + GDK_AVAILABLE_IN_ALL GdkSurfaceState gdk_surface_get_state (GdkSurface *surface); From 3c95798cd33ceb9dc8a875b20570d6d7013223d5 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 24 Feb 2020 08:32:15 -0500 Subject: [PATCH 5/5] Add missing GdkDrag getters --- docs/reference/gdk/gdk4-sections.txt | 2 ++ gdk/gdkdrag.c | 36 ++++++++++++++++++++++++++++ gdk/gdkdrag.h | 7 ++++++ 3 files changed, 45 insertions(+) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index 1a7e81db96..cb090b4f66 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -750,10 +750,12 @@ GdkDragAction GDK_ACTION_ALL gdk_drag_get_display +gdk_drag_get_content gdk_drag_get_actions gdk_drag_get_selected_action gdk_drag_get_formats gdk_drag_get_device +gdk_drag_get_surface gdk_drag_get_drag_surface gdk_drag_set_hotspot diff --git a/gdk/gdkdrag.c b/gdk/gdkdrag.c index 7dfc79e6e0..15cb169603 100644 --- a/gdk/gdkdrag.c +++ b/gdk/gdkdrag.c @@ -214,6 +214,42 @@ gdk_drag_get_device (GdkDrag *drag) return priv->device; } +/** + * gdk_drag_get_content: + * @drag: a #GdkDrag + * + * Returns the #GdkContentProvider associated to the GdkDrag object. + * + * Returns: (transfer none): The #GdkContentProvider associated to @drag. + **/ +GdkContentProvider * +gdk_drag_get_content (GdkDrag *drag) +{ + GdkDragPrivate *priv = gdk_drag_get_instance_private (drag); + + g_return_val_if_fail (GDK_IS_DRAG (drag), NULL); + + return priv->content; +} + +/** + * gdk_drag_get_surface: + * @drag: a #GdkDrag + * + * Returns the #GdkSurface where the drag originates. + * + * Returns: (transfer none): The #GdkSurface where the drag originates + **/ +GdkSurface * +gdk_drag_get_surface (GdkDrag *drag) +{ + GdkDragPrivate *priv = gdk_drag_get_instance_private (drag); + + g_return_val_if_fail (GDK_IS_DRAG (drag), NULL); + + return priv->surface; +} + static void gdk_drag_init (GdkDrag *drag) { diff --git a/gdk/gdkdrag.h b/gdk/gdkdrag.h index 80301eb293..2c093c4eb2 100644 --- a/gdk/gdkdrag.h +++ b/gdk/gdkdrag.h @@ -91,6 +91,13 @@ void gdk_drag_set_hotspot (GdkDrag *drag, gint hot_x, gint hot_y); +GDK_AVAILABLE_IN_ALL +GdkContentProvider * + gdk_drag_get_content (GdkDrag *drag); + +GDK_AVAILABLE_IN_ALL +GdkSurface * gdk_drag_get_surface (GdkDrag *drag); + G_END_DECLS #endif /* __GDK_DND_H__ */