Bug 372876

Summary: Dock widgets cannot be moved
Product: [Plasma] kwin Reporter: Martin Flöser <mgraesslin>
Component: inputAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: fabian
Priority: NOR Flags: mgraesslin: Wayland+
mgraesslin: ReviewRequest+
Version First Reported In: git master   
Target Milestone: ---   
Platform: Other   
OS: Linux   
URL: https://phabricator.kde.org/D5461
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Martin Flöser 2016-11-24 09:00:52 UTC
Steps to reproduce:
1. Start Dolphin
2. Click on the left panel to move

Actual result:
doesn't move

Expected result:
moves

This works on Weston.
Comment 1 Martin Flöser 2017-04-20 15:04:35 UTC
Git commit 9a13743c4988fbf653e20df43e919e836766d3c8 by Martin Gräßlin.
Committed on 20/04/2017 at 15:02.
Pushed by graesslin into branch 'master'.

Don't update the focused pointer Surface if a button is pressed

Summary:
During pointer motion we already had the condition that an update of
focused pointer surface can only happen when no button is pressed. But
there are more conditions where we try to update the focused pointer even
if a button is pressed. E.g. if the stacking order changes.

This happens when trying to move one of Qt's dock widgets:
 1. Press inside a dock widget
 2. Qt opens another window, which is underneath the cursor
 3. KWin sends pointer leave to parent window
 4. dock widget movement breaks

This change ensures that also this sequence works as expected and the
pointer gets only updated when there are no buttons pressed, no matter
from where we go into the update code path.

Test Plan: Dock widgets in Dolphin can be moved now.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D5461

M  +58   -0    autotests/integration/pointer_input.cpp
M  +1    -4    input.cpp
M  +11   -0    pointer_input.cpp

https://commits.kde.org/kwin/9a13743c4988fbf653e20df43e919e836766d3c8