Skip to content

Commit 77d08a4

Browse files
committed
Fix crash when dragging element from more palette to parent
1 parent dccaa95 commit 77d08a4

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

src/palette/qml/MuseScore/Palette/internal/PaletteTree.qml

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,8 @@ StyledListView {
276276

277277
property var control: null
278278
property var model: null
279-
property alias isOpened: palettePopup.active
279+
280+
readonly property bool isOpened: palettePopup.active && palettePopup.item.isOpened
280281

281282
sourceComponent: MoreElementsPopup {
282283
id: moreElementsPopup
@@ -320,7 +321,6 @@ StyledListView {
320321

321322
onClosed: {
322323
enablePaletteAnimations = false;
323-
palettePopup.active = false;
324324
}
325325

326326
function scrollToPopupBottom() {
@@ -349,25 +349,28 @@ StyledListView {
349349
}
350350

351351
function close() {
352-
if (palettePopup.active) {
353-
palettePopup.item.close();
352+
if (palettePopup.isOpened) {
353+
palettePopup.item.close()
354354
}
355355
}
356356

357357
function toggleOpened(model, control, parent) {
358-
if (palettePopup.active) {
359-
palettePopup.close();
360-
return;
358+
if (palettePopup.isOpened) {
359+
palettePopup.close()
360+
return
361361
}
362362

363-
palettePopup.parent = parent;
364-
palettePopup.model = model;
365-
palettePopup.control = control;
363+
// Force a full re-load of the component (ensures the geometry updates, etc.)
364+
palettePopup.active = false
365+
366+
palettePopup.parent = parent
367+
palettePopup.model = model
368+
palettePopup.control = control
366369

367-
palettePopup.active = true;
368-
palettePopup.item.setParentItem(parent);
370+
palettePopup.active = true
371+
palettePopup.item.setParentItem(parent)
369372

370-
palettePopup.item.toggleOpened();
373+
palettePopup.item.toggleOpened()
371374
}
372375
}
373376

@@ -407,7 +410,7 @@ StyledListView {
407410
}
408411

409412
Component.onDestruction: {
410-
if (palettePopup.active && palettePopup.model === model) {
413+
if (palettePopup.isOpened && palettePopup.model === model) {
411414
palettePopup.close()
412415
}
413416
}

0 commit comments

Comments
 (0)