[xwl] Support stack optimizing X drag source clients
ClosedPublic

Authored by romangg on Sep 20 2018, 9:39 PM.

Details

Summary

Some X clients acting as drag sources might try to optimize finding the current
target window by checking if a window manager, that sets the root window
_NET_CLIENT_LIST_STACKING property, is present. An example for this is Chromium
and since KWin sets the property the drag proxy windows must be added to this
list. Otherwise the origin client will not detect the proxy window and not send
an XdndEnter message.

Test Plan

Manually with Chromium.

Diff Detail

Repository
R108 KWin
Branch
0optimizedLayersXwl
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 6558
Build 6576: arc lint + arc unit
romangg created this revision.Sep 20 2018, 9:39 PM
Restricted Application added a project: KWin. · View Herald TranscriptSep 20 2018, 9:39 PM
Restricted Application added a subscriber: kwin. · View Herald Transcript
romangg requested review of this revision.Sep 20 2018, 9:39 PM
zzag added a subscriber: zzag.Oct 22 2018, 4:23 PM
zzag added inline comments.
workspace.h
284

"rm" is quite unusual. We use "remove" more often, e.g. removeClient, removeDeleted, etc.

romangg added inline comments.Oct 22 2018, 4:28 PM
workspace.h
284

True. Unnecessary shortening. Will rename to removeManualOverlay on commit.

romangg updated this revision to Diff 48530.Jan 2 2019, 12:51 PM
romangg marked 2 inline comments as done.
  • Rename function
  • Rebase on master/changes
zzag added inline comments.Feb 6 2019, 12:07 PM
layers.cpp
208–210

Shouldn't they go after clients?

workspace.h
281

Could we maybe rename it to a more intuitive name, e.g. addDragProxyWindow? or something like that.

This revision was not accepted when it landed; it landed in state Needs Review.Feb 19 2019, 12:24 PM
This revision was automatically updated to reflect the committed changes.
romangg added inline comments.Feb 19 2019, 12:29 PM
layers.cpp
208–210

_NET_CLIENT_LIST is in initial mapping order. I assume it does not make a difference.

workspace.h
281

The functionality is not specific to drag windows and could be used in other ways as well.