Bug 186126 - All pointers change at the same time
Summary: All pointers change at the same time
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-05-30 23:21 PDT by Thijs van Dijk
Modified: 2018-05-30 23:55 PDT (History)
2 users (show)

See Also:


Attachments
A short screencast (439.44 KB, video/webm)
2018-05-30 23:21 PDT, Thijs van Dijk
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Thijs van Dijk 2018-05-30 23:21:31 PDT
Created attachment 341644 [details]
A short screencast

I've noticed that when using multiple input devices, all cursors share the same pointer graphic.

(This issue was previously reported at the GTK project: https://gitlab.gnome.org/GNOME/gtk/issues/1125 )

## Steps to reproduce

 0. acquire a second pointer device. (I've been using a Wacom Bamboo stylus, but I suspect other (emulated) devices will do the trick too.
 1. Open epiphany to any page.
 2. Move the mouse (primary) pointer somewhere neutral
 3. Hover the stylus' pointer over some text, or a link.

## Current behavior
All cursor images change according to the last pointer device that moved.

## Expected outcome
I'd expect each cursor to follow its own logic, so any cursor that's above selectable text should have the bar cursor, regardless of the position of the other cursors.

## Version information
Using Arch Linux, fully updated, in a Wayland session.

* GTK 3.22.30-1
* webkit2gtk 2.20.2-1
* epiphany 3.28.2.1-1
* gnome-desktop 3.28.2-1

## Additional information
I've recorded a short screencast showcasing the problem.

Carlos Garnacho also mentioned:

> Gtk+3 has `gdk_window_set_device_cursor()` (Since 3.0) that may be used to independently set an specific cursor on an specific pointer device.
> 
> A cursory look in WebKit sources says they are using `gdk_window_set_cursor()` which precisely has the behavior described here.