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 enabled: controlsAction.enabled
property alias shortcut: controlsAction.shortcut property alias shortcut: controlsAction.shortcut
property alias text: controlsAction.text property alias text: controlsAction.text
property alias iconName: controlsAction.icon.name property alias icon: controlsAction.icon
property alias iconSource: controlsAction.icon.source
property alias iconColor: controlsAction.icon.color
Native.MenuItem { Native.MenuItem {
id: nativeAction id: nativeAction
@ -62,6 +60,13 @@ Item {
onToggled: root.toggled() 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() \qmlmethod void Action::toggle()
Toggles the \c checked state to its opposite state. Toggles the \c checked state to its opposite state.
@ -69,5 +74,4 @@ Item {
function toggle(){ function toggle(){
root.trueItem.toggle() root.trueItem.toggle()
} }
} }

View file

@ -192,4 +192,13 @@ Item {
controlsMenu.popup() 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(){ function clear(){
root.trueItem.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 bool enabled: true
property font font: trueItem.font property font font: trueItem.font
property string text: "" property string text: ""
property alias iconName: controlsMenuItem.icon.name property alias icon: controlsMenuItem.icon
property alias iconSource: controlsMenuItem.icon.source
property alias iconColor: controlsMenuItem.icon.color
Native.MenuItem { Native.MenuItem {
id: nativeMenuItem 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 | |QtQuick.Controls2/Qt.labs | > |eu.ad5001.MixedMenu |
|-------------------------------------|---|--------------------------------------------------------| |-------------------------------------|---|--------------------------------------------------------|
|`import import QtQuick.Controls 2.12`| > |`import eu.ad5001.MixedMenu 1.0` | |`import import QtQuick.Controls 2.12`| > |`import eu.ad5001.MixedMenu 1.1` |
|`icon.name: ...` | > |`iconName: ...` |
|`icon.source: ...` | > |`iconSource: ...` |
|`icon.color: ...` | > |`iconColor: ...` |
|`menuBar: MenuBar {}` | > |`MenuBar { id: appMenu }`<br>`menuBar: appMenu.trueItem`| |`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 \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. \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 module eu.ad5001.MixedMenu
MenuBar 1.0 MenuBar.qml MenuBar 1.1 MenuBar.qml
MenuItem 1.0 MenuItem.qml MenuItem 1.1 MenuItem.qml
Action 1.0 Action.qml Action 1.1 Action.qml
Menu 1.0 Menu.qml Menu 1.1 Menu.qml
MenuSeparator 1.0 MenuSeparator.qml MenuSeparator 1.1 MenuSeparator.qml