Compare commits

...

6 commits
v1.0 ... main

7 changed files with 39 additions and 17 deletions

View file

@ -42,9 +42,7 @@ Item {
property alias enabled: controlsAction.enabled
property alias shortcut: controlsAction.shortcut
property alias text: controlsAction.text
property alias iconName: controlsAction.icon.name
property alias iconSource: controlsAction.icon.source
property alias iconColor: controlsAction.icon.color
property alias icon: controlsAction.icon
Native.MenuItem {
id: nativeAction
@ -62,6 +60,13 @@ Item {
onToggled: root.toggled()
}
Component.onCompleted: {
// Forwarding to MenuBar. Little hack to make Action shortcuts work properly, because otherwise, they would not trigger
if(shortcut != 0 && shortcut != undefined) {
parent.parent.addShortcut(shortcut, root.triggered)
}
}
/*!
\qmlmethod void Action::toggle()
Toggles the \c checked state to its opposite state.
@ -69,5 +74,4 @@ Item {
function toggle(){
root.trueItem.toggle()
}
}

View file

@ -192,4 +192,13 @@ Item {
controlsMenu.popup()
}
}
/*!
\qmlmethod void Menu::addShortcut(keysequence sequence, var trigger)
Forwarding to MenuBar. Little hack to make Action shortcuts work properly, because otherwise, they would not trigger
\sa MenuBar::addShortcut
*/
function addShortcut(sequence, trigger) {
parent.parent.addShortcut(sequence, trigger)
}
}

View file

@ -82,4 +82,18 @@ Item {
function clear(){
root.trueItem.clear()
}
/*!
\qmlmethod void MenuBar::addShortcut(keysequence sequence, var trigger)
Little hack to make Action shortcuts work properly.
*/
function addShortcut(sequence, trigger) {
var newShortcut = Qt.createQmlObject(`
import QtQuick 2.12;
Shortcut {
context: Qt.ApplicationShortcut
}`, root, "shortcut" + sequence);
newShortcut.sequence = sequence
newShortcut.activated.connect(trigger)
}
}

View file

@ -42,9 +42,7 @@ Item {
property bool enabled: true
property font font: trueItem.font
property string text: ""
property alias iconName: controlsMenuItem.icon.name
property alias iconSource: controlsMenuItem.icon.source
property alias iconColor: controlsMenuItem.icon.color
property alias icon: controlsMenuItem.icon
Native.MenuItem {
id: nativeMenuItem

View file

@ -23,10 +23,7 @@ When switching from QtQuick.Controls 2 to MixedMenu, the following changes need
|QtQuick.Controls2/Qt.labs | > |eu.ad5001.MixedMenu |
|-------------------------------------|---|--------------------------------------------------------|
|`import import QtQuick.Controls 2.12`| > |`import eu.ad5001.MixedMenu 1.0` |
|`icon.name: ...` | > |`iconName: ...` |
|`icon.source: ...` | > |`iconSource: ...` |
|`icon.color: ...` | > |`iconColor: ...` |
|`import import QtQuick.Controls 2.12`| > |`import eu.ad5001.MixedMenu 1.1` |
|`menuBar: MenuBar {}` | > |`MenuBar { id: appMenu }`<br>`menuBar: appMenu.trueItem`|

View file

@ -17,7 +17,7 @@
*/
/*!
\qmlmodule eu.ad5001.MixedMenu 1.0
\qmlmodule eu.ad5001.MixedMenu 1.1
\title MixedMenu QML Module
\brief Provides a near drop-in replacements for QtQuick.Controls menus allowing to use the platform native ones on supported platforms.

10
qmldir
View file

@ -1,6 +1,6 @@
module eu.ad5001.MixedMenu
MenuBar 1.0 MenuBar.qml
MenuItem 1.0 MenuItem.qml
Action 1.0 Action.qml
Menu 1.0 Menu.qml
MenuSeparator 1.0 MenuSeparator.qml
MenuBar 1.1 MenuBar.qml
MenuItem 1.1 MenuItem.qml
Action 1.1 Action.qml
Menu 1.1 Menu.qml
MenuSeparator 1.1 MenuSeparator.qml