Commit graph

60 commits

Author SHA1 Message Date
Mohammed Sadiq
3b121805ed log: Improve logging
The 'tracing' build option is no longer needed.  And the verbosity
of logs can be set by providing '-v' multiple times.
2022-12-01 11:44:17 +00:00
Carlos Garnacho
92b784f561 wacom: Use Mutter's input mapping interface to show calibration UI
When the "Automatic" mapping is chosen for a display-attached tablet device,
Mutter is in charge of applying the heuristics to map the tablet device to
its most likely attached display.

When that happens, the Wacom panel does not know better (or anything)
to show the calibration UI than picking a GdkMonitor and hoping for the
best.

To improve this situation, Mutter has been added a D-Bus interface so it
is possible to query it for the output that a tablet device is mapped to.
This commit adds the support for this interface, so that the Wacom panel
does know to pick the right GdkMonitor to fullscreen the calibration UI on.
2022-09-01 23:14:07 +02:00
Carlos Garnacho
39402f21ba wacom: Show distinct entries for Wacom Express Key Remote
If you did not know the Wacom Express Key Remote (or EKR for short),
let me introduce it to you:

https://estore.wacom.com/media/catalog/product/cache/fb4143a007ae6439deba9b18afd745f2/a/c/ack-411050_main_2.jpg

This is a hand-sized standalone pad device, meant to be used together
with drawing tablets, providing additional buttons and a touch sensitive
ring that can be mapped to actions and keypresses.

These pads were so far handled in GNOME, but in a very subtle manner.
As the EKR is implicitly paired to a tablet, it was possible to map
EKR buttons from the paired tablet once the pad OSD UI from GNOME
Shell was shown.

As this device basically just needs a "Map buttons" action to
configure it, it just didn't sit well in the older Settings UI,
it would get a separate page with just a lone button in there. So
its support has been kind of an easter egg so far.

But the new UI can indeed accomodate better a device that is neither
tablet nor stylus, and has few options. This commit adds the EKR
as a separate AdwPreferencesGroup.
2022-08-17 11:57:33 +00:00
Carlos Garnacho
0d82613258 wacom: Bring back empty state view
This went mistakenly missing in the recent UI updates. Since this
panel is still accessible through search despite tablet availability,
we should have a proper empty state view when moving to the panel
with no tablets available.

Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1684
2022-03-04 15:19:21 +00:00
Carlos Garnacho
7806b88460 wacom: Refresh UI
Use libadwaita widgets, and follow recent mockups for this panel.
2022-02-01 14:18:53 +00:00
Georges Basile Stavracas Neto
4300a4a290 panels: Use new CcPanel helpers for title widgets
This should significantly simplify these panels, by not forcing
them to override GObject.constructed all the time. Most panels
were quite straightfoward.
2022-01-20 02:23:42 +00:00
Georges Basile Stavracas Neto
0ab20af9ba panels: Switch to CcPanel content
Start porting panels to the new panel format. This commit
temporarily makes panels have two titlebar, which will be
fixed soon.
2022-01-20 02:23:42 +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
Bastien Nocera
8ac36f479e wacom: Add a fake stylus when mocking a tablet 2021-11-18 14:57:22 +00:00
Bastien Nocera
a93a023229 wacom: Split off notebook switching for detected stylus
This will reduce code duplication for mocking styli.
2021-11-18 14:57:22 +00:00
Carlos Garnacho
e50f27a96b wacom: Let CcWacomPage track pad devices
This puts stylus/pad tracking on 2 separate levels. The CcWacomPanel
will look for styli, and treat them as "device leaders", adding a
CcWacomPage for them.

The CcWacomPage will then track the related pad, and update the
"Map buttons..." action visibility according to it.

This simplifies tablet page creation (eg. have it completed in one
step), and decouples the device grouping logic from CcWacomPanel,
which will be useful in future commits.
2020-09-04 21:46:19 +00:00
Robert Ancell
e6128c9ffd wacom: Connect signals with g_signal_connect_object in swapped form 2020-03-30 16:18:50 +13:00
Robert Ancell
93b14a4339 panel: Move shared GCancellable code into panel class
Make the panel class provide a cancellable that will be cancelled when the panel
is destroyed. Panel implementations can use this and not have to mangage the
cancellable themselves. Consolidate cases where panels had multiple cancellables
that were all being used for this behaviour.
2020-02-03 09:36:24 +13:00
Robert Ancell
dab5f5301f wacom: Use g_auto for variables 2019-09-09 22:08:26 +00:00
Georges Basile Stavracas Neto
75f150d5a2 shell: Add position to cc_shell_embed_widget_in_header()
So we can control where the widget should be added to. The
main window only supports left and right positions.

https://gitlab.gnome.org/GNOME/gnome-control-center/issues/528
2019-05-21 12:59:36 -03:00
Carlos Garnacho
4860f3637c wacom: Update "Test your settings" button sensitivity on device availability
The button/popover are meaningless if there's no device to test with. Set
it inactive (so the popover hides if visible) and set insensitive if no
devices are found.
2019-02-12 00:40:14 +00:00
Carlos Garnacho
a4cc9d35b9 wacom: Always try to add the stylus page UI on proximity
This used to be done only if the stylus was "brand new", because pages for
previously known styli are added when the tablet is detected/plugged. There
are however situations where this may break: eg. the stylus was previously
known through a tablet that is not plugged ATM. The tool is however "not
new" so no UI is added for it.

We should try to add the stylus invariably on proximity, add_stylus_page()
ensures there is only one page per tool anyway.

Closes: https://gitlab.gnome.org/GNOME/gnome-control-center/issues/315
2019-01-05 12:36:59 +00:00
Peter Hutterer
def41bc0fe wacom: ignore the wacom driver's touch tool type
When the wacom driver handles the touch device, we get a tool id of 0x3. Let's
ignore that because we don't need a tool for the touch node.

Ideally we should be able to rely on the GDK tool type but that one is always
GDK_DEVICE_TOOL_TYPE_UNKNOWN see
https://gitlab.gnome.org/GNOME/gtk/merge_requests/453

A GTK bug (also fixed in that MR) prevents the tool id from updating.
Until that GTK bug is fixed the pen will only be detected if it is the first
event from this physical device. If the touch node sends an event before the
pen, the pen won't be detected.
2018-12-18 20:46:02 +00:00
Peter Hutterer
d925ea3c6c wacom: Map wacom-driver-specific generic IDs to 0
The xf86-input-wacom driver doesn't use 0 for tools that do not have an id or
serials. Serials default to 1, and the tool id is either 0x2 for stylus or 0xa
for eraser, see xf86WacomDefs.h, the defines for STYLUS_DEVICE_ID and
ERASER_DEVICE_ID.

libwacom uses 0xfffff and 0xffffe for the generic pens and all the lookup code
we have in the panel is designed for a serial/tool id of 0. So let's just map
the wacom driver IDs to 0 at the only transition point between Gdk and our
panel.

No devices with serials 0 or hw ids 2/10 exist, so this shouldn't have side
effects. This only affects X + xf86-input-wacom.
2018-12-18 20:46:02 +00:00
Robert Ancell
aeca65c729 wacom: Replace GObject boilerplate with G_DECLARE_TYPE 2018-08-02 21:48:02 +00:00
Bastien Nocera
0e2a4aa2d6 wacom: Hide Wacom panel when there are no tablets
Use GsdDeviceManager to monitor libwacom-supported tablets coming and
going. Hide the Wacom panel from the list when there's no supported
tablets plugged in.
2018-06-20 12:53:11 +00:00
Carlos Garnacho
7dfb7d2e5e wacom: Use updated ui files 2016-11-04 23:27:12 +01:00
Carlos Garnacho
b5de120e3f wacom: Poke the org.gnome.Shell D-Bus call to show the pad OSD
This feature now belongs in gnome-shell, not g-s-d. The D-Bus API
changed correspondingly.
2016-11-04 23:26:42 +01:00
Carlos Garnacho
4743770832 wacom: Update to the new data model
There's much going on under the hood here:
- Styli and tablets are now in split views, as per the mockups.
- CcWacomDevice and CcWacomTool are now in use, with the subsequent
  API use changes. Moreover, using these objects means using the
  newer schemas in gsettings-desktop-schemas, so there had to be
  changes in the settings we store too.
- We now use CcTabletToolMap, plus listen to tool proximity events,
  populating the "Stylus" sub-pane with those.
2016-11-04 23:26:41 +01:00
Carlos Garnacho
b69cbe4e24 wacom: Add "Test your settings" button to wacom panel
A popover with a CcDrawingArea appears in that case.
2016-11-04 23:26:41 +01:00
Bastien Nocera
d6765b0378 wacom: Use the fully qualified D-Bus name for the OSD
So that we don't end up seeing the fallback button mapping dialogue when
running gsd-test-wacom.
2016-03-10 17:19:30 +01:00
Benjamin Tissoires
66cb45bdad wacom: do not bail out if the tablet doesn't have an eraser
Tablets have not always an eraser (most of the generic tablets like Huion,
UC-Logic, etc... don't). We should not reject such tablets.

Commit 54849a9 (wacom: Only the stylus and eraser tools need to exist)
mentioned that we were not sure about eraser, and I think we should not
assume one either.

To do so, we simply ignore the eraser xinput node and rely on
libwacom to actually provide the eraser information.

If the stylus does not have the eraser tip, we may fall in the
LAYOUT_OTHER case. We have a picture of a generic Wacom pen with an
eraser, and the leaders linking the widget to the picture are scrambled.

To prevent that, gray out the eraser pressure slider so that we do not
break the layout.

https://bugzilla.gnome.org/show_bug.cgi?id=746117
2015-04-01 11:15:29 +02:00
Daniel Mustieles
2c5951819d Updated FSF's address 2014-01-29 11:27:38 +01:00
Carlos Garnacho
fdef36294a wacom: Set several notebooks' show-border property to FALSE
Since GTK+ commit 05b1ea84b, this hint is used in GtkNotebook to add
a GTK_STYLE_CLASS_FRAME when rendering the notebook frame, so the theme
renders those frame-alike. As it's not what we want for the wacom panel,
set show-border to FALSE on all GtkNotebooks.

https://bugzilla.gnome.org/show_bug.cgi?id=710709
2013-12-02 12:29:30 +01:00
Yosef Or Boczko
ae36409c5f wacom: Use margin-start/end instead of margin-left/right
https://bugzilla.gnome.org/show_bug.cgi?id=712661
2013-11-19 22:34:39 +02:00
Joaquim Rocha
d83e0ff5c1 wacom: Call the OSD window for assigning the tablets' buttons
It falls back to the listbox view in case the OSD cannot be shown.

https://bugzilla.gnome.org/show_bug.cgi?id=704798
2013-07-26 20:04:35 +02:00
Joaquim Rocha
366fd4ba94 wacom: Add command line support for calibration
https://bugzilla.gnome.org/show_bug.cgi?id=692816
2013-06-05 18:29:40 +02:00
Joaquim Rocha
e45bafaacb wacom: Add command line argument support for choosing the tablet
https://bugzilla.gnome.org/show_bug.cgi?id=692816
2013-06-05 18:29:40 +02:00
Cosimo Cecchi
82f8c136c0 wacom: use a GResource for GtkBuilder UI definition and icons
https://bugzilla.gnome.org/show_bug.cgi?id=691132
2013-01-07 10:57:17 +01:00
Matthias Clasen
3d27d8caaf shell: Fittsify panels
Make it possible for panels to go all the way to the edge of the
shell. This is particularly important for panels that scroll, such
as the new power panel. All other panels are changed to compensate
for the loss of external padding.

https://bugzilla.gnome.org/show_bug.cgi?id=691229
2013-01-07 10:51:29 +01:00
Bastien Nocera
3686cf7eb8 shell: Make all control-center plugins static
This makes loading faster, with less I/O, avoids unnecessary
code duplication (around 1k lines shaved), and ensures that
all the panels link and work appropriately.

By the same token, it will stop external panels from being
created, and loaded.

https://bugzilla.gnome.org/show_bug.cgi?id=690036
2012-12-11 17:07:39 +01:00
Bastien Nocera
2a88736cf6 wacom: Add link to wacom docs
And not the generic control-center docs.

https://bugzilla.gnome.org/show_bug.cgi?id=675471#c40
2012-09-12 10:24:19 +01:00
Ray Strode
b0e7a5efa8 panels: add register macro
Bastien says he doesn't like the blank class_finalize
functions in every panel and he would like a wrapper
macro to hide them.

This commit does that.
2012-08-21 14:32:33 -04:00
Bastien Nocera
5a2b411255 wacom: Fix crasher using link to display panel
->panel was never set within the page object.
2012-05-25 12:16:24 +01:00
Peter Hutterer
ff31b771bb wacom: update the UI if a new tool comes in
The device_added_cb is called once for each tool added. The wacom driver
hotplugs tools in the order stylus, eraser, cursor, pad.

update_current_page will add a new page once a tablet has stylus and
eraser, before cursor and pad exist. priv->pad is thus always NULL,
causing, cc_wacom_page's update_tablet_ui to remove the "Map Buttons..."
button for any device.

Change the code to update the tool list for every new tool we get,
merely triggering the visibility of the button instead of destroying it
completely.

https://bugzilla.gnome.org/show_bug.cgi?id=672691
2012-04-12 14:43:34 +01:00
Bastien Nocera
9df8c7cf62 wacom: Add "pad" argument to cc_wacom_page_new() 2012-02-14 19:37:53 +00:00
Bastien Nocera
87005e3f75 wacom: Fix excessive top padding
https://bugzilla.gnome.org/show_bug.cgi?id=668881
2012-01-30 15:23:28 +00:00
Bastien Nocera
289d1e90c5 wacom: Implement switching to Display settings 2012-01-26 19:10:11 +00:00
Bastien Nocera
ce8186dba1 wacom: Add navigation button to navigate between styli
Looks a bit rough, but functionality is present.
2011-11-28 18:24:15 +00:00
Bastien Nocera
54849a9e97 wacom: Only the stylus and eraser tools need to exist
And then again, not even sure about the eraser. But there
are devices we support that don't need the pad tool, such as the
Thinkpad X201 tablet.
2011-11-25 17:04:05 +00:00
Bastien Nocera
87fc4c9a60 wacom: Update for CcWacomPage changes
Pages are now created dynamically, and the UI supports multiple
different types of tablets (even though GsdWacomDevice doesn't, and
we don't have any UI to switch devices).
2011-11-24 19:15:13 +00:00
Bastien Nocera
7976938fc6 wacom: Remove unused finalize function 2011-11-24 19:15:13 +00:00
Bastien Nocera
46bfcd1bc3 wacom: Split out the tablet page
So we can reuse it for separate tablet configurations.
2011-11-24 19:15:13 +00:00
Bastien Nocera
9d96073023 wacom: Minimum port to latest g-s-d code
Just so that we don't crash on startup.
2011-11-22 18:16:45 +00:00
Bastien Nocera
4ef431c34f wacom: Show "stand-by" page when Wacom not available
https://bugzilla.gnome.org/show_bug.cgi?id=657424
2011-09-20 09:53:32 +01:00