Skip to content
  • Elvis Angelaccio's avatar
    Ignore drops-onto-items from invalid places items · c85ca114
    Elvis Angelaccio authored
    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.3
    
    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.
    
    Differential Revision: https://phabricator.kde.org/D5535
    c85ca114