[vlc-devel] [PATCH] qml: fix recent play menu items disapearing on mouseover
Pierre Lamot
pierre at videolabs.io
Tue May 28 13:14:26 CEST 2019
---
modules/gui/qt/qml/menus/MediaMenu.qml | 32 ++++++++++++++++++++++----
1 file changed, 28 insertions(+), 4 deletions(-)
diff --git a/modules/gui/qt/qml/menus/MediaMenu.qml b/modules/gui/qt/qml/menus/MediaMenu.qml
index 8f95dc19ee..e8fb1dbf1c 100644
--- a/modules/gui/qt/qml/menus/MediaMenu.qml
+++ b/modules/gui/qt/qml/menus/MediaMenu.qml
@@ -38,8 +38,19 @@ Utils.MenuExt {
onAboutToShow:{
recentsMenu.hasData = Boolean(recentsMedias.rowCount())
}
- Instantiator {
+
+ function moveItemToPos(item, pos) {
+ for ( var i = 0; i < recentsMenu.count; i++ ) {
+ if (recentsMenu.itemAt(i) == item) {
+ recentsMenu.moveItem(i, pos)
+ return;
+ }
+ }
+ }
+
+ Repeater {
model: recentsMedias
+
Utils.MenuItemExt {
text: mrl
onTriggered:{
@@ -53,13 +64,26 @@ Utils.MenuExt {
context: Qt.ApplicationShortcut
}
}
- onObjectAdded: recentsMenu.insertItem(recentsMenu.count - 2, object)
- onObjectRemoved: recentsMenu.removeItem(object)
+
+ //replace last elements as the repeater won't keep the original
+ //order of the menu when updated
+ onItemAdded: {
+ recentsMenu.moveItemToPos(clearAction, recentsMenu.count - 1)
+ recentsMenu.moveItemToPos(clearSepId, recentsMenu.count - 2)
+ }
+
+ onItemRemoved: {
+ recentsMenu.moveItemToPos(clearAction, recentsMenu.count - 1)
+ recentsMenu.moveItemToPos(clearSepId, recentsMenu.count - 2)
+ }
}
- MenuSeparator{}
+ MenuSeparator {
+ id: clearSepId
+ }
Utils.MenuItemExt {
+ id: clearAction
text: qsTr("Clear")
enabled: recentsMenu.hasData
onTriggered:recentsMedias.clear()
--
2.17.1
More information about the vlc-devel
mailing list