Commit graph

26 commits

Author SHA1 Message Date
Carlos Garnacho
3d4d785588 wacom: Drop unused API
This function was only used for logging purposes, we can do
without it.
2022-02-12 16:03:37 +00:00
Georges Basile Stavracas Neto
816e6203e3 wacom: Port to GTK4
Many part of this commit were made by Carlos
Garnacho <carlosg@gnome.org>

WIP wacom: Port to GTK4

Lots of stuff missing and probably broken.

wacom: Port CcDrawingArea input to gestures

We have a handy GtkGestureStylus to use here, which avoids direct
handling of GdkEvents.

wacom: Update current stylus tracking to GtkGestureStylus

Use the ::proximity signal to notice when we are being hovered with
a tablet stylus, and look up the tool from there.
2021-12-14 22:34:21 -03:00
Philip Withnall
e522e5e732 wacom: Fix a critical warning if loading a cursor fails
It’s possible for `gdk_cursor_new_for_display()` to return `NULL`. It’s
OK to pass `NULL` to `gdk_window_set_cursor()`, but not OK to then unref
it.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2020-11-02 21:41:03 +00:00
Carlos Garnacho
8f825c5cc0 wacom: Dispose custom style provider with calibrator
Each CalibArea created adds a style provider that is never removed,
remove it on calib_area_free() to avoid the leak.

https://gitlab.gnome.org/GNOME/gnome-control-center/issues/504
2019-05-01 16:10:06 +02:00
Carlos Garnacho
d51336c2c2 wacom: Port calibrator UI to GTK+
Same dog, different collar. The UI has been ported 1:1 to GTK+, using
GtkBuilder, CSS and event controllers fairly reduced the amount of code
needed for this.

It also allows us to stop initializing clutter-gtk across the several
executables.
2018-11-07 23:02:10 +00:00
Carlos Garnacho
35adc02d42 wacom: Use GdkMonitor API on calibrator UI
Replaces usage of deprecated GdkScreen API. We still have to pass
monitor numbers around for gdk_window_fullscreen_on_monitor(), such
is life.
2018-05-26 10:09:28 +02:00
Jason Gerecke
50b39dc570 wacom: Drop old_axes from calibration API
The calibration utility was modified in cf408c27b0 to return unitless
padding measurements instead of axis values for storage in gsettings.
Unfortunately, the code still assumes in some places that it is working
with axes rather than paddings. This causes subtle math errors that
result in undesired cursor offsets after the calibration is applied.

Fortunately, this can be simplified, since tablet area is always reset
to the default state before starting calibration, we are sure that the
value will remain constant. Since both axes are in the same 0..1 scale,
calibration code doesn't need to swap X/Y back and forth to calculate
each axis scale.

Additionally, the code to get the calibrated axis values has been moved
into its own function along with a new function that returns padding
values suitable for consumption by g-c-c. All calculations are performed
internally in the 0..1 range.

https://bugzilla.gnome.org/show_bug.cgi?id=784009

Co-Authored-By: Carlos Garnacho <carlosg@gnome.org>
2017-07-05 23:46:22 +02:00
Carlos Garnacho
b26d6acb5f 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
2017-06-30 21:11:54 +02:00
Carlos Garnacho
cf408c27b0 wacom: Instaurate calibration
The "area" setting has a different treatment in the gsettings-desktop-schemas
tablet schema, the 4 double values express the padding (in unitless 0..1
range) on each of the sides of the tablet. It's been done so we don't rely
on input/output units, which we might have not the luxury to access.

Besides that, the dependency on GsdWacomDevice has been cleared.
2016-11-04 23:26:42 +01:00
Piotr Drąg
bd0d048944 wacom: use Unicode in translatable strings
See https://developer.gnome.org/hig/stable/typography.html

https://bugzilla.gnome.org/show_bug.cgi?id=772199
2016-10-03 15:21:28 +02:00
Carlos Garnacho
ff2cfece51 wacom: Avoid deprecated Clutter API 2016-01-22 21:57:49 +01:00
Carlos Garnacho
c0e854a6dd wacom: Workaround deadlocks in Clutter event handlers
The way we destroy the window during the handling of a clutter event may
cause the window to generate a focus event that gets processed immediately,
causing Clutter to deadlock on its global lock.

Bypass these issues in the places where we finalize out of Clutter events,
The Esc key presses are now handled at the GTK+ level, and we postpone
finalization (with either success or failure) to an idle.

Works around https://bugzilla.gnome.org/show_bug.cgi?id=747880
2016-01-22 21:51:46 +01:00
Carlos Garnacho
65bd735937 wacom: Refactor calibrator finalization into separate function
Instead of calling the delete event handler everywhere.
2016-01-22 21:50:38 +01:00
Jason Gerecke
ae11d34c60 wacom: Fix window decorations being visible in calibrator window
The 'on_fullscreen' function which handles the 'window-state-event'
signal should be returning a gboolean value. Fix the function
signature and have it return FALSE to allow the event to continue to
propagate.

https://bugzilla.gnome.org/show_bug.cgi?id=751129
2015-07-01 11:42:45 +02:00
Rui Matos
205a0cd4bd wacom: Drop deprecated API usage
https://bugzilla.gnome.org/show_bug.cgi?id=740986
2014-12-05 16:13:29 +01:00
Daniel Mustieles
2c5951819d Updated FSF's address 2014-01-29 11:27:38 +01:00
Carlos Garnacho
c78e22b911 wacom: Fix first animation of calibration UI
The "target" was seen moving from 0,0 to the first calibration
point, so 1) avoid target relayouts when the window is still
being positioned and 2) start the "target" actor as hidden so
it isn't seen moving from anywhere when first shown.

https://bugzilla.gnome.org/show_bug.cgi?id=719698
2013-12-16 12:58:35 +01:00
Carlos Garnacho
ee2afb9bd4 wacom: Protect calibrator UI to spawn animations multiple times
The window state may be updated more than once, so only initiate
the UI and animations when it's first called.

https://bugzilla.gnome.org/show_bug.cgi?id=719698
2013-12-16 12:58:29 +01:00
Carlos Garnacho
911518d683 wacom: Don't leave stray timelines on the calibration UI
Keep the reference for the error/helper messages animations in
the CalibArea struct, so those are destroyed and not leaked, or
possibly crashing when running on already destroyed actors if
the dialog gets cancelled at the right time.

https://bugzilla.gnome.org/show_bug.cgi?id=719698
2013-12-16 12:58:07 +01:00
Carlos Garnacho
e97143e025 wacom: Forgive inconspicuous double clicks when calibrating
Those were likely not meant, and will surely make you start over
again on the calibration process.

https://bugzilla.gnome.org/show_bug.cgi?id=719705
2013-12-16 12:44:42 +01:00
Bastien Nocera
95f613bee1 wacom: Fix ~100 pixel offset when calibrating
The calibration gui code moved the targets to x,y, instead of
placing the centre of the target at x,y, leading to a 47 pixel
(half the target's size) offset in both directions (thus 67 pixels
deviation as Pythagorus would tell us).
2013-10-09 12:55:29 +02:00
Bastien Nocera
bf68dfb62d wacom: Fix comment for timeout duration
The comment mentioned 5 seconds, but we use 15 seconds.
2013-10-09 12:18:48 +02:00
Bastien Nocera
18dd6ff04f wacom: Fix incorrect default window information
The window isn't 1x1...
2013-10-08 20:15:55 +02:00
Bastien Nocera
c9864b1ebc wacom: Fix event filtering in the calibrator
We were always getting the events from the core pointer instead
of the device itself, so threw all of them away.
We need to get the real source device from the event.

https://bugzilla.gnome.org/show_bug.cgi?id=707784
2013-10-08 11:48:13 +02:00
Bastien Nocera
55744f6544 wacom: Fix device filtering in calibration UI
We receive ClutterEvents, not GdkEvents for button presses on
ClutterActors, so use the correct functions to filter devices.

This also fixes the offset used to access the coordinates of the
events. We were actually using the pointer to the source and x
struct members instead of x and y.

https://bugzilla.gnome.org/show_bug.cgi?id=707784
2013-10-04 11:16:45 +02:00
Joaquim Rocha
d78bc9772a wacom: Re-write gui_gtk in Clutter to introduce animations
The name of the file was also changed to calibratorgui.c/h to avoid
it being inconsistent, this way it is no longer dependent on the
the technology.

https://bugzilla.gnome.org/show_bug.cgi?id=667797
2013-05-17 16:36:59 +02:00