diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2017-06-16 18:11:54 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2017-06-30 21:11:54 +0200 |
commit | b26d6acb5f60c87f644351a1070fae8a2291faab (patch) | |
tree | d52911ca102cb68a634eb91a16b9f940cbc0ca3a /panels/wacom | |
parent | 3910b4ac9d97db87b7fdfd959dbc51af899f8164 (diff) | |
download | gnome-control-center-b26d6acb5f60c87f644351a1070fae8a2291faab.tar.gz |
wacom: Make calibrator use GDK for button events
This way we can cut down the last step in the mapping across
GUdevDevice->GsdDevice->GdkDevice->ClutterInputDevice.
https://bugzilla.gnome.org/show_bug.cgi?id=782040
Diffstat (limited to 'panels/wacom')
-rw-r--r-- | panels/wacom/calibrator/calibrator-gui.c | 47 | ||||
-rw-r--r-- | panels/wacom/calibrator/calibrator-gui.h | 2 | ||||
-rw-r--r-- | panels/wacom/calibrator/main.c | 2 | ||||
-rw-r--r-- | panels/wacom/cc-wacom-page.c | 2 |
4 files changed, 23 insertions, 30 deletions
diff --git a/panels/wacom/calibrator/calibrator-gui.c b/panels/wacom/calibrator/calibrator-gui.c index 7d52263ee..c4e145e5c 100644 --- a/panels/wacom/calibrator/calibrator-gui.c +++ b/panels/wacom/calibrator/calibrator-gui.c @@ -41,7 +41,7 @@ struct CalibArea XYinfo axis; gboolean swap; gboolean success; - int device_id; + GdkDevice *device; double X[4], Y[4]; int display_width, display_height; @@ -310,35 +310,29 @@ hide_error_message (CalibArea *area) } static gboolean -on_button_press_event(ClutterActor *actor, - ClutterButtonEvent *event, - CalibArea *area) +on_button_press_event (GtkWidget *widget, + GdkEventButton *event, + CalibArea *area) { gint num_clicks; gboolean success; + GdkDevice *source; if (area->success) return FALSE; - if (event->click_count > 1) + if (event->type != GDK_BUTTON_PRESS || + event->button != GDK_BUTTON_PRIMARY) return FALSE; - /* Check matching device ID if a device ID was provided */ - if (area->device_id > -1) + source = gdk_event_get_source_device ((GdkEvent *) event); + + /* Check matching device if a device was provided */ + if (area->device && area->device != source) { - ClutterInputDevice *device; - - device = clutter_event_get_source_device ((ClutterEvent *) event); - if (device != NULL && clutter_input_device_get_device_id (device) != area->device_id) { - char *name; - - g_object_get (G_OBJECT (device), "name", &name, NULL); - g_debug ("Ignoring input from device %s (%d)", - name, - clutter_input_device_get_device_id (device)); - g_free (name); - return FALSE; - } + g_debug ("Ignoring input from device %s", + gdk_device_get_name (source)); + return FALSE; } /* Handle click */ @@ -661,11 +655,6 @@ set_up_stage (CalibArea *calib_area, ClutterActor *stage) "completed", G_CALLBACK (on_timeout), calib_area); - - g_signal_connect (stage, - "button-press-event", - G_CALLBACK (on_button_press_event), - calib_area); } /** @@ -677,7 +666,7 @@ set_up_stage (CalibArea *calib_area, ClutterActor *stage) CalibArea * calib_area_new (GdkScreen *screen, int monitor, - int device_id, + GdkDevice *device, FinishCallback callback, gpointer user_data, XYinfo *old_axis, @@ -706,7 +695,7 @@ calib_area_new (GdkScreen *screen, calib_area = g_new0 (CalibArea, 1); calib_area->callback = callback; calib_area->user_data = user_data; - calib_area->device_id = device_id; + calib_area->device = device; calib_area->calibrator.old_axis.x_min = old_axis->x_min; calib_area->calibrator.old_axis.x_max = old_axis->x_max; calib_area->calibrator.old_axis.y_min = old_axis->y_min; @@ -760,6 +749,10 @@ calib_area_new (GdkScreen *screen, "window-state-event", G_CALLBACK (on_fullscreen), calib_area); + g_signal_connect (calib_area->window, + "button-press-event", + G_CALLBACK (on_button_press_event), + calib_area); gtk_window_fullscreen_on_monitor (GTK_WINDOW (calib_area->window), screen, monitor); diff --git a/panels/wacom/calibrator/calibrator-gui.h b/panels/wacom/calibrator/calibrator-gui.h index d65eb8bf1..787a5b002 100644 --- a/panels/wacom/calibrator/calibrator-gui.h +++ b/panels/wacom/calibrator/calibrator-gui.h @@ -40,7 +40,7 @@ typedef void (*FinishCallback) (CalibArea *area, gpointer user_data); CalibArea * calib_area_new (GdkScreen *screen, int monitor, - int device_id, + GdkDevice *device, FinishCallback callback, gpointer user_data, XYinfo *old_axis, diff --git a/panels/wacom/calibrator/main.c b/panels/wacom/calibrator/main.c index 52816cf89..281ea1e5f 100644 --- a/panels/wacom/calibrator/main.c +++ b/panels/wacom/calibrator/main.c @@ -406,7 +406,7 @@ int main(int argc, char** argv) calib_area = calib_area_new (NULL, 0, /* monitor */ - -1, /* -1 to ignore device ID */ + NULL, /* NULL to accept input from any device */ calibration_finished_cb, NULL, &calibrator->old_axis, diff --git a/panels/wacom/cc-wacom-page.c b/panels/wacom/cc-wacom-page.c index dda1a974f..53bb8352d 100644 --- a/panels/wacom/cc-wacom-page.c +++ b/panels/wacom/cc-wacom-page.c @@ -224,7 +224,7 @@ run_calibration (CcWacomPage *page, priv->area = calib_area_new (NULL, monitor, - -1, /* FIXME: Pass GdkDevice/ClutterInputDevice */ + NULL, /* FIXME: Pass GdkDevice/ClutterInputDevice */ finish_calibration, page, &old_axis, |