[server] Add surface data proxy mechanism
ClosedPublic

Authored by romangg on Sep 11 2018, 11:30 AM.

Details

Summary

Allows a compositor to set a proxy surface to handle drag and drop
operations place of the actual surface the drag originated from.

One proxy surface can handle multiple origin surfaces at the same time. These
need to get registered once. The active remote surface gets set when a pointer
button is pressed on the surface.

Test Plan

Manually with KWin's Xwayland DnD patches.

Diff Detail

Branch
0proxyDataSurface
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 2775
Build 2793: arc lint + arc unit
romangg created this revision.Sep 11 2018, 11:30 AM
romangg requested review of this revision.Sep 11 2018, 11:30 AM
romangg set the repository for this revision to R127 KWayland.Sep 11 2018, 11:31 AM
romangg added a project: Frameworks.
Restricted Application added a subscriber: kde-frameworks-devel. · View Herald TranscriptSep 11 2018, 11:31 AM
romangg added a comment.EditedSep 11 2018, 11:44 AM

Thinking about it again it makes probably more sense to only allow one proxy surface per remote. Otherwise a drag remote can change mid-drag when a user presses a second button while the drag is going on. Or only allow to change while no drag is ongoing.

romangg updated this revision to Diff 41497.Sep 12 2018, 5:40 PM

Remove updateProxy call on pointer button press. The compositor is instead
responsible for updating it before a drag starts, what allows more freedom
in how the proxy is used.

Seems ok, I need to re-read it in the context of the other patches that I'm getting through.

src/server/surface_interface.h
268

creted -> created.

romangg updated this revision to Diff 48515.Jan 2 2019, 10:56 AM
  • Fix typo
  • Rebase on master.
romangg marked an inline comment as done.Jan 2 2019, 10:56 AM
This revision was not accepted when it landed; it landed in state Needs Review.Feb 6 2019, 9:52 AM
This revision was automatically updated to reflect the committed changes.