New issue
Advanced search Search tips

Issue 805984 link

Starred by 1 user

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Tooltips might not show after interactive drag/resize

Project Member Reported by toniki...@chromium.org, Jan 25 2018

Issue description

Chrome Version: ToT
OS: Linux (Ubuntu 17.10)

When using chrome with builtin window decoration (not
WindowManager's), tooltips stop showing after an interactive window
dragging or resize is finished, if host window manager do not send
a mouse/release event.

What steps will reproduce the problem?

(1) set chrome to use builtin window decoration.
Right click the tabstrip and make sure "Use system title bar and borders" is not ticked.

(2) make sure tooltips work
eg hovering any button in chrome's UI

(3) manually resize the chrome window in the way that when mouse is released, it is out of chrome window bounds.

eg start an interactive resize with the mouse from the right edge, decreasing the chrome window by dragging the mouse to the left.
When chrome reaches the minimal bound, keep moving the mouse to the left without releasing the button, so that it gets out of the chrome bounds. then release the button.

(4) hover the mouse over the same element that used to showed the tooltip in step (2).

What is the expected result?
Tooltips show normally.

What happens instead?
Tooltips do not show 'till the next mouse down/up events.

 

Comment 1 by sadrul@chromium.org, Jan 26 2018

Cc: rjkroege@chromium.org sadrul@chromium.org
I am unable to reproduce the problem on ToT.

> ... in the way that when mouse is released, it is out of chrome window bounds.

Even if the mouse-cursor is outside the bounds of the window, the mouse events (including the mouse-release) should still go to chrome (because of the capture it gets on mouse-down). Otherwise, you wouldn't be able to increase the width/height of the browser window (because the mouse-moves after the mouse-down will by definition be outside the bounds of the window's current size). So in my mind, it makes sense to me that I am unable to repro on ToT.

But maybe this is dependent on the environment? What environment are you using (window-manager, versions etc.)?
@sadrul: please watch the video attached. It shows Chromium/X11 ToT on Ubuntu 17.10 / Gnome 3.26 / X11. In this scenario, bug is really easily reproducible (as per the video).

chrome_x11_tooltip.mp4
5.4 MB View Download

Comment 3 by sadrul@chromium.org, Jan 26 2018

Is this ozone-x11? Or regular x11?
Cc: msi...@igalia.com
This is regular chrome/x11. I just downloaded Google Chrome / Dev, and could also repro easily.
BTW, on Gnome 3.26 Wayland (default on Ubuntu 17.10), reproducing it trickier.

This is because XWayland apparently sends RELEASED events *occasionally* when

a) manual resize happens at a slow pace
b) mouse is released out of the chrome window (eg resize to a minimal and keep moving the mouse out of the chrome window bounds).

In (b), if user unclicks the mouse button (resize ends), and hovers over back to the chrome window, RELEASE is sent when mouse enters back the chrome window bounds.
However, if user user unclicks the mouse button (resize ends), then hovers over another app or the desktop area, and only then hovers over the chrome window, RELEASE is *not* sent when mouse enters the chrome window bounds.

PS: It is harder for me to record this scenario because stable screen recorders seem not to available on wayland environments yet.

Comment 6 by sadrul@chromium.org, Jan 30 2018

Cc: thomasanderson@chromium.org
+thomasanderson@ any thoughts on why the WM may not send the mouse-release to chrome after a drag-resize? Or how chrome can reset the state after the drag-resize ends?
The way that WM drag-resizing is implemented is with _NET_WM_MOVERESIZE.  Before sending that message, the client must release all pointer grabs so that the WM can take the grab for the resize.  So if the cursor is not over Chrome when the resize ends, only the WM will get the event.

Maybe it makes sense to set the mouse-state to unpressed before sending off the _NET_WM_MOVERESIZE?  Also, I thought many other mouse events like mouse-moves also had the pressed state, so we could probably update the state from that as well.
Labels: Hotlist-DesktopUIToolingRequired Hotlist-DesktopUIChecked

Sign in to add a comment