add more backported fixes
[alioth/musescore.git] / debian / patches / upstream / crash-drag.diff
1 Origin: upstream, commit:484cd7e81e378f0fedf26ecd0a4d6cd5b77d3c61
2 Author: MarcSabatella <marc@outsideshore.com>
3 Description: fix #297152: crash on Ctrl+Shift+drag on Linux (under ChromeOS)
4  Resolves: https://musescore.org/en/node/297152
5  .
6  This might be unique to Linux apps on ChromeOS,
7  or it might apply to other Debian "stretch systems",
8  but apparently passing in a null or 1x1 pixmap to a QDrag
9  causes it to crash on exec().
10  This PR fixes the problem by making the pixmap 2x2.
11  It also allocates it statically to be sure there is no issue
12  with it coming off the stack.
13  I also replaced the deprecated QDrag::start() call with QDrag::exec(),
14  which we already do when dragging *from* the palette.
15  This is recommended as per Qt guidelines.
16
17 --- a/mscore/scoreview.cpp
18 +++ b/mscore/scoreview.cpp
19 @@ -4842,8 +4842,10 @@ void ScoreView::cloneElement(Element* e)
20              e = static_cast<SpannerSegment*>(e)->spanner();
21        mimeData->setData(mimeSymbolFormat, e->mimeData(QPointF()));
22        drag->setMimeData(mimeData);
23 -      drag->setPixmap(QPixmap());
24 -      drag->start(Qt::CopyAction);
25 +      static QPixmap pixmap = QPixmap(2, 2);    // null or 1x1 crashes on Linux under ChromeOS?!
26 +      pixmap.fill(Qt::white);
27 +      drag->setPixmap(pixmap);
28 +      drag->exec(Qt::CopyAction);
29        }
30  
31  //---------------------------------------------------------