Skip to content

Commit 895884a

Browse files
committed
Refactor and remove some (hopefully) redundant code from PaletteTree.qml
1 parent d9e3ed9 commit 895884a

File tree

1 file changed

+33
-62
lines changed

1 file changed

+33
-62
lines changed

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

Lines changed: 33 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ StyledListView {
7979
onFilterChanged: {
8080
if (Boolean(filter)) {
8181
paletteSelectionModel.clear()
82-
expandedPopupIndex = null
8382
}
8483

8584
if (paletteProvider) {
@@ -123,25 +122,13 @@ StyledListView {
123122
paletteController.applyPaletteElement(index, Qt.NoModifier);
124123
}
125124

126-
property var expandedPopupIndex: null // TODO: or use selection model? That would allow to preserve popups on removing palettes
127-
128-
onExpandedPopupIndexChanged: {
129-
if (footerItem) {
130-
footerItem.height = 0
131-
}
132-
}
133-
134125
onCurrentIndexChanged: {
135126
if (paletteSelectionModel.hasSelection && paletteSelectionModel.currentIndex.row !== currentIndex) {
136127
paletteSelectionModel.clearSelection();
137128
}
138129
}
139130

140131
function ensureYVisible(y) {
141-
if (y > footerItem.y) {
142-
footerItem.height = y - footerItem.y
143-
}
144-
145132
if (y > contentY + height) {
146133
contentY = y - height;
147134
} else if (y < contentY) {
@@ -271,43 +258,34 @@ StyledListView {
271258
}
272259

273260
Loader {
274-
id: palettePopup
261+
id: morePopup
275262
active: false
276263

277264
property var control: null
278-
property var model: null
279-
property alias isOpened: palettePopup.active
265+
property var popupModel: null
280266

281267
sourceComponent: MoreElementsPopup {
282-
id: moreElementsPopup
283-
284-
property var control: palettePopup.control
285-
property var model: palettePopup.model
286-
287268
maxHeight: Math.min(0.75 * paletteTree.height, 500)
288269

289270
// TODO: change settings to "hidden" model?
290-
cellSize: control.cellSize
291-
drawGrid: control.drawGrid
271+
cellSize: morePopup.control.cellSize ?? 0
272+
drawGrid: morePopup.control.drawGrid ?? false
292273

293-
paletteName: model.display
294-
paletteIsCustom: model.custom
295-
paletteEditingEnabled: model.editable
274+
paletteName: morePopup.popupModel.display ?? ""
275+
paletteIsCustom: morePopup.popupModel.custom ?? false
276+
paletteEditingEnabled: morePopup.popupModel.editable ?? true
296277

297278
onIsOpenedChanged: {
298279
// build pool model on first popup appearance
299280
if (visible && !poolPalette) {
300-
poolPalette = paletteTree.paletteProvider.poolPaletteModel(control.modelIndex);
301-
poolPaletteRootIndex = paletteTree.paletteProvider.poolPaletteIndex(control.modelIndex, poolPalette);
302-
poolPaletteController = paletteTree.paletteProvider.poolPaletteController(poolPalette, control.modelIndex);
281+
poolPalette = paletteTree.paletteProvider.poolPaletteModel(morePopup.control.modelIndex);
282+
poolPaletteRootIndex = paletteTree.paletteProvider.poolPaletteIndex(morePopup.control.modelIndex, poolPalette);
283+
poolPaletteController = paletteTree.paletteProvider.poolPaletteController(poolPalette, morePopup.control.modelIndex);
303284

304285
customPalette = paletteTree.paletteProvider.customElementsPaletteModel
305-
customPaletteRootIndex = paletteTree.paletteProvider.customElementsPaletteIndex(control.modelIndex) // TODO: make a property binding? (but that works incorrectly)
286+
customPaletteRootIndex = paletteTree.paletteProvider.customElementsPaletteIndex(morePopup.control.modelIndex) // TODO: make a property binding? (but that works incorrectly)
306287
customPaletteController = paletteTree.paletteProvider.customElementsPaletteController
307288
}
308-
if (!isOpened) {
309-
paletteTree.expandedPopupIndex = null
310-
}
311289
}
312290

313291
property bool needScrollToBottom: false
@@ -320,7 +298,7 @@ StyledListView {
320298

321299
onClosed: {
322300
enablePaletteAnimations = false;
323-
palettePopup.active = false;
301+
morePopup.active = false;
324302
}
325303

326304
function scrollToPopupBottom() {
@@ -349,25 +327,25 @@ StyledListView {
349327
}
350328

351329
function close() {
352-
if (palettePopup.active) {
353-
palettePopup.item.close();
330+
if (morePopup.active) {
331+
morePopup.item.close()
354332
}
355333
}
356334

357335
function toggleOpened(model, control, parent) {
358-
if (palettePopup.active) {
359-
palettePopup.close();
360-
return;
336+
if (morePopup.active) {
337+
morePopup.close()
338+
return
361339
}
362340

363-
palettePopup.parent = parent;
364-
palettePopup.model = model;
365-
palettePopup.control = control;
341+
morePopup.parent = parent
342+
morePopup.popupModel = model
343+
morePopup.control = control
366344

367-
palettePopup.active = true;
368-
palettePopup.item.setParentItem(parent);
345+
morePopup.active = true
346+
morePopup.item.setParentItem(parent)
369347

370-
palettePopup.item.toggleOpened();
348+
morePopup.item.toggleOpened()
371349
}
372350
}
373351

@@ -407,8 +385,8 @@ StyledListView {
407385
}
408386

409387
Component.onDestruction: {
410-
if (palettePopup.active && palettePopup.model === model) {
411-
palettePopup.close()
388+
if (morePopup.active && morePopup.popupModel === model) {
389+
morePopup.close()
412390
}
413391
}
414392

@@ -494,22 +472,15 @@ StyledListView {
494472

495473
highlighted: (activeFocus && !selected) || DelegateModel.isUnresolved
496474

497-
property bool popupExpanded: palettePopup.isOpened
475+
property bool popupExpanded: morePopup.active
498476
onPopupExpandedChanged: {
499477
paletteTree.interactive = !popupExpanded
500478
}
501479

502-
function togglePopup(btn) {
503-
const expand = !popupExpanded;
504-
paletteTree.expandedPopupIndex = expand ? modelIndex : null;
505-
palettePopup.toggleOpened(model, control, btn)
506-
}
507-
508480
property size cellSize: model.gridSize
509481
property bool drawGrid: model.drawGrid
510482

511483
function hidePalette() {
512-
paletteTree.expandedPopupIndex = null;
513484
paletteTree.paletteController.remove(modelIndex);
514485
}
515486

@@ -527,7 +498,8 @@ StyledListView {
527498

528499
Drag.onDragStarted: {
529500
if (popupExpanded) {
530-
togglePopup();
501+
// Close the popup
502+
morePopup.toggleOpened(null, null, null)
531503
}
532504

533505
paletteHeader.closeContextMenu()
@@ -712,22 +684,21 @@ StyledListView {
712684
}
713685

714686
showMoreButton: !paletteTree.searchOpened
715-
onMoreButtonClicked: function(btn) { control.togglePopup(btn) }
687+
onMoreButtonClicked: function(btn) {
688+
morePopup.toggleOpened(model, control, btn)
689+
}
716690

717691
onVisibleChanged: {
718692
if (!visible && control.popupExpanded) {
719-
control.togglePopup();
693+
// Close the popup
694+
morePopup.toggleOpened(null, null, null)
720695
}
721696
}
722697

723698
enableAnimations: paletteTree.enableAnimations
724-
externalDropBlocked: paletteTree.expandedPopupIndex && !control.popupExpanded // FIXME: find another way to prevent drops go under a popup
725699
}
726700
}
727701
}
728702
}
729703
}
730-
731-
// placeholder footer item to reserve a space for "More" popup to expand
732-
footer: Item { height: 0 }
733704
}

0 commit comments

Comments
 (0)