Ignore drops-onto-items from invalid places items
ClosedPublic

Authored by elvisangelaccio on Apr 21 2017, 12:37 PM.

Details

Summary

If the QMimeData object created by PlacesItemModel doesn't have any url
set (e.g. when dragging unmounted devices), it is detected by the
resulting DropJob as "drop raw data" because the mimeData has one format set
(the internalMimeType() used for dragging between places items).

This results in a crash because the DropJob schedules a PasteJob, but in
the meantime the QDrag from Dolphin ends and deletes the mimeData object
that was passed to the paste job.

The fix is to prevent the DropJob in the first place. We can introduce a
new internal mimetype that we use to blacklist drops-onto-items (while
still allowing drops-between-items). This way PlacesItemModel can set
the blacklist flag if the mimeData is being created without urls.

BUG: 373005
FIXED-IN: 17.04.2

Test Plan

Drag and drop an unmounted device to another place item or the DolphinView, doesn't crash anymore.
Dropping the unmounted device between two places item still works.

Diff Detail

Repository
R318 Dolphin
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
  • Added comment
elvisangelaccio edited the summary of this revision. (Show Details)Apr 21 2017, 4:41 PM
elvisangelaccio edited the summary of this revision. (Show Details)May 12 2017, 9:14 AM
This revision was automatically updated to reflect the committed changes.