[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-panel-devel
Subject: D10142: [server] Properly handle the situation when the DataSource for a drag gets destroyed
From: Martin_Flöser <noreply () phabricator ! kde ! org>
Date: 2018-01-27 13:17:02
Message-ID: 20180127131702.1.1BAF831BC0745E5F () phabricator ! kde ! org
[Download RAW message or body]
graesslin created this revision.
graesslin added reviewers: Frameworks, KWin, Plasma.
Restricted Application added projects: Plasma on Wayland, Frameworks.
Restricted Application added a subscriber: plasma-devel.
graesslin requested review of this revision.
Restricted Application edited projects, added Plasma; removed Plasma on Wayland.
REVISION SUMMARY
This addresses the following situation:
1. Start drag on a QtWayland based window
2. Press escape
3. Release mouse
-> this results in a crash. The main reason for this is that QtWayland
destroys the DataSource in step 2 and KWayland did not expect this at
all. The drag and drop operation continued and results in step 3 in the
drag target to request data from the no longer existing DataSource.
This change addresses the root of the problem by cancelling the drag
operation when the DataSource gets destroyed.
BUG: 389221
FIXED-IN: 5.43
TEST PLAN
New test case exposing the problem and manual testing with
kwin_wayland and dolphin (based on bug report)
REPOSITORY
R127 KWayland
BRANCH
cancel-drag-on-datasource-destroy
REVISION DETAIL
https://phabricator.kde.org/D10142
AFFECTED FILES
autotests/client/test_drag_drop.cpp
src/server/datadevice_interface.cpp
src/server/seat_interface.cpp
src/server/seat_interface_p.h
To: graesslin, #frameworks, #kwin, #plasma
Cc: plasma-devel, michaelh, ZrenBot, progwolff, lesliezhai, ali-mohamed, \
jensreuterberg, abetts, sebas, apol, mart
[Attachment #3 (unknown)]
<table><tr><td style="">graesslin created this revision.<br />graesslin added \
reviewers: Frameworks, KWin, Plasma.<br />Restricted Application added projects: \
Plasma on Wayland, Frameworks.<br />Restricted Application added a subscriber: \
plasma-devel.<br />graesslin requested review of this revision.<br />Restricted \
Application edited projects, added Plasma; removed Plasma on Wayland. </td><a \
style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; \
color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; \
background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; \
border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D10142" \
rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION \
SUMMARY</strong><div><p>This addresses the following situation:</p>
<ol class="remarkup-list">
<li class="remarkup-list-item">Start drag on a QtWayland based window</li>
<li class="remarkup-list-item">Press escape</li>
<li class="remarkup-list-item">Release mouse</li>
</ol>
<p>-> this results in a crash. The main reason for this is that QtWayland<br />
destroys the DataSource in step 2 and KWayland did not expect this at<br />
all. The drag and drop operation continued and results in step 3 in the<br />
drag target to request data from the no longer existing DataSource.</p>
<p>This change addresses the root of the problem by cancelling the drag<br />
operation when the DataSource gets destroyed.</p>
<p>BUG: 389221<br />
FIXED-IN: 5.43</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>New test \
case exposing the problem and manual testing with<br /> kwin_wayland and dolphin \
(based on bug report)</p></div></div><br \
/><div><strong>REPOSITORY</strong><div><div>R127 KWayland</div></div></div><br \
/><div><strong>BRANCH</strong><div><div>cancel-drag-on-datasource-destroy</div></div></div><br \
/><div><strong>REVISION DETAIL</strong><div><a \
href="https://phabricator.kde.org/D10142" \
rel="noreferrer">https://phabricator.kde.org/D10142</a></div></div><br \
/><div><strong>AFFECTED \
FILES</strong><div><div>autotests/client/test_drag_drop.cpp<br /> \
src/server/datadevice_interface.cpp<br /> src/server/seat_interface.cpp<br />
src/server/seat_interface_p.h</div></div></div><br /><div><strong>To: \
</strong>graesslin, Frameworks, KWin, Plasma<br /><strong>Cc: </strong>plasma-devel, \
michaelh, ZrenBot, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, \
apol, mart<br /></div>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic