diff --git a/src/qtdesktop/ComboBox.qml b/src/qtdesktop/ComboBox.qml index 2a61e4293c92c79ed5e233cfc5d54cd988fb7c12..321f8b27a836b55709dfc4f38c7d8341cddcfb52 100644 --- a/src/qtdesktop/ComboBox.qml +++ b/src/qtdesktop/ComboBox.qml @@ -59,9 +59,7 @@ import "Styles/Settings.js" as Settings create items inside the popup menu bool popupOpen - setting this property to 'true' will open the popup. int selectedIndex - the index of the selected item in the popup menu. - int hoveredIndex - the index of the highlighted item in the popup menu. string selectedText - the text of the selected menu item. - string hoveredText - the text of the highlighted menu item. Example 1: @@ -105,9 +103,7 @@ BasicButton { property bool popupOpen: false property alias selectedIndex: popup.selectedIndex - property alias hoveredIndex: popup.hoveredIndex property alias selectedText: popup.selectedText - property alias hoveredText: popup.hoveredText property var styleHints:[] style: Qt.createComponent(Settings.THEME_PATH + "/ComboBoxStyle.qml", comboBox) @@ -154,6 +150,7 @@ BasicButton { function show() { comboBox.popupOpen = true menuItems[comboBox.selectedIndex].checked = true + currentIndex = comboBox.selectedIndex showPopup(x, y, centerSelectedText ? comboBox.selectedIndex : 0, comboBox) } diff --git a/src/qtdesktop/ContextMenu.qml b/src/qtdesktop/ContextMenu.qml index 7ac2e919dd156f3bbae7de4cb80aecc472a7abae..751fa8314722ac1ed35167b875e5bbd19ab9ee9a 100644 --- a/src/qtdesktop/ContextMenu.qml +++ b/src/qtdesktop/ContextMenu.qml @@ -51,18 +51,12 @@ import QtDesktop 1.0 Menu { id: root property string selectedText: itemTextAt(selectedIndex) - property string hoveredText: itemTextAt(hoveredIndex) property string textRole onModelChanged: if (Component.status === Component.Ready && model !== undefined) rebuildMenu() Component.onCompleted: if (model !== undefined) rebuildMenu() -// onHoveredIndexChanged: { -// if (hoveredIndex < menuItems.length) -// menuItems[hoveredIndex].hovered() -// } - onSelectedIndexChanged: { if (0 <= selectedIndex && selectedIndex < menuItems.length) menuItems[selectedIndex].triggered() diff --git a/src/qtdesktop/Menu.qml b/src/qtdesktop/Menu.qml index a59cec2d8cde5752a959006fb7fb668b111630e6..375891d213cd3410a99d2b258756929a78cadeb4 100644 --- a/src/qtdesktop/Menu.qml +++ b/src/qtdesktop/Menu.qml @@ -98,14 +98,6 @@ import "Styles/Settings.js" as Settings \qmlproperty int Menu::selectedIndex */ -/*! - \qmlproperty int Menu::hoveredIndex -*/ - -/*! - \qmlproperty int Menu::selectedIndex -*/ - /*! \qmlproperty font Menu::font @@ -141,6 +133,8 @@ MenuPrivate { //! internal property var menuBar: null + //! internal + property int currentIndex: -1 //! internal menuContentItem: Loader { @@ -161,18 +155,18 @@ MenuPrivate { Keys.onEscapePressed: root.dismissMenu() Keys.onDownPressed: { - if (root.hoveredIndex < 0) { - root.hoveredIndex = 0 + if (root.currentIndex < 0) { + root.currentIndex = 0 return } - for (var i = root.hoveredIndex + 1; + for (var i = root.currentIndex + 1; i < root.menuItems.length && !canBeHovered(i); i++) ; } Keys.onUpPressed: { - for (var i = root.hoveredIndex - 1; + for (var i = root.currentIndex - 1; i >= 0 && !canBeHovered(i); i--) ; } @@ -180,7 +174,7 @@ MenuPrivate { function canBeHovered(index) { var item = itemsRepeater.itemAt(index) if (!item["isSeparator"] && item.enabled) { - root.hoveredIndex = index + root.currentIndex = index return true } return false @@ -192,10 +186,10 @@ MenuPrivate { } Keys.onRightPressed: { - var item = itemsRepeater.itemAt(root.hoveredIndex) + var item = itemsRepeater.itemAt(root.currentIndex) if (item && item.hasSubmenu) { item.menuItem.showPopup(menuFrameLoader.subMenuXPos, 0, -1, item) - item.menuItem.hoveredIndex = 0 + item.menuItem.currentIndex = 0 } } @@ -204,9 +198,9 @@ MenuPrivate { Keys.onEnterPressed: menuFrameLoader.triggerAndDismiss() function triggerAndDismiss() { - var item = itemsRepeater.itemAt(root.hoveredIndex) + var item = itemsRepeater.itemAt(root.currentIndex) if (item && !item.isSeparator) { - root.selectedIndex = root.hoveredIndex + root.selectedIndex = root.currentIndex item.menuItem.trigger() root.dismissMenu() } @@ -224,7 +218,7 @@ MenuPrivate { anchors.fill: parent hoverEnabled: true - onExited: root.hoveredIndex = -1 // TODO Test for any submenu open + onExited: root.currentIndex = -1 // TODO Test for any submenu open // Each menu item has its own mouse area, and for events to be // propagated to the menu mouse area, they need to be embedded. @@ -242,7 +236,7 @@ MenuPrivate { property var menuItem: modelData property bool isSeparator: !menuItem.hasOwnProperty("text") property bool hasSubmenu: !!menuItem["menuItems"] - property bool selected: !isSeparator && root.hoveredIndex === index + property bool selected: !isSeparator && root.currentIndex === index property alias mouseArea: itemMouseArea property var menuItemsColumn: column @@ -273,7 +267,7 @@ MenuPrivate { closeMenuTimer.start() } - onPositionChanged: root.hoveredIndex = index + onPositionChanged: root.currentIndex = index Connections { target: menuMouseArea diff --git a/src/qtdesktop/MenuBar.qml b/src/qtdesktop/MenuBar.qml index a75981301917270fcf5570296ffb02c197e4d51a..999bf0880413886683b0133adb95de433a3e3a0f 100644 --- a/src/qtdesktop/MenuBar.qml +++ b/src/qtdesktop/MenuBar.qml @@ -166,7 +166,7 @@ MenuBarPrivate { if (menuBarLoader.openedMenuIndex === index) { menuItem.showPopup(0, root.height, 0, menuItemLoader) if (menuBarLoader.preselectMenuItem) - menuItem.hoveredIndex = 0 + menuItem.currentIndex = 0 } else { menuItem.closeMenu() } diff --git a/src/qtdesktop/qtaction_p.h b/src/qtdesktop/qtaction_p.h index 9c6eaba5b0ab3d1501775148b3f0ec5d5dab9e4e..d4578367c417725690cf0aad1a00e278c82c78ef 100644 --- a/src/qtdesktop/qtaction_p.h +++ b/src/qtdesktop/qtaction_p.h @@ -106,11 +106,9 @@ public: public Q_SLOTS: void trigger(); - void hover() { emit hovered(); } Q_SIGNALS: void triggered(); - void hovered(); void toggled(bool); void textChanged(); diff --git a/src/qtdesktop/qtmenu.cpp b/src/qtdesktop/qtmenu.cpp index afb724baab53ef3c80431398424b149fa6a64e83..eed36fcf95ce7201044ee6d58512936f22f63996 100644 --- a/src/qtdesktop/qtmenu.cpp +++ b/src/qtdesktop/qtmenu.cpp @@ -120,18 +120,6 @@ void QtMenu::setSelectedIndex(int index) emit selectedIndexChanged(); } -void QtMenu::setHoveredIndex(int index) -{ - if (m_highlightedIndex == index) - return; - - m_highlightedIndex = index; -// QList<QAction *> actionList = m_qmenu->actions(); -// if (m_highlightedIndex >= 0 && m_highlightedIndex < actionList.size()) -// m_qmenu->setActiveAction(actionList[m_highlightedIndex]); - emit hoveredIndexChanged(); -} - QQmlListProperty<QtMenuBase> QtMenu::menuItems() { return QQmlListProperty<QtMenuBase>(this, 0, &QtMenu::append_menuItems, &QtMenu::count_menuItems, &QtMenu::at_menuItems, 0); @@ -151,8 +139,6 @@ void QtMenu::showPopup(qreal x, qreal y, int atItemIndex, QObject *reference) while (!atItem && atItemIndex < m_menuItems.size()) atItem = qobject_cast<QtMenuItem *>(m_menuItems[atItemIndex++]); - setHoveredIndex(m_selectedIndex); - QQuickItem *item = qobject_cast<QQuickItem *>(reference); QQuickWindow *parentWindow = item ? item->window() : qobject_cast<QQuickWindow *>(reference); @@ -244,7 +230,6 @@ QtMenuItem *QtMenu::addMenuItem(const QString &text) m_platformMenu->insertMenuItem(platformItem, 0 /* append */); connect(platformItem, SIGNAL(activated()), this, SLOT(emitSelected())); - connect(platformItem, SIGNAL(hovered()), this, SLOT(emitHovered())); } if (m_menuItems.size() == 1) @@ -271,15 +256,6 @@ void QtMenu::emitSelected() setSelectedIndex(index); } -void QtMenu::emitHovered() -{ -// QAction *act = qobject_cast<QAction *>(sender()); -// if (!act) -// return; -// m_highlightedIndex = m_qmenu->actions().indexOf(act); -// emit hoveredIndexChanged(); -} - QString QtMenu::itemTextAt(int index) const { QtMenuItem *mi = 0; diff --git a/src/qtdesktop/qtmenu_p.h b/src/qtdesktop/qtmenu_p.h index 95e9ab7894af8d30343fe6115270ba117eda43c0..ffcba4bc419bc315b6af964ac8d28345e707bf8c 100644 --- a/src/qtdesktop/qtmenu_p.h +++ b/src/qtdesktop/qtmenu_p.h @@ -57,7 +57,6 @@ class QtMenu : public QtMenuItem Q_OBJECT Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged) Q_PROPERTY(int selectedIndex READ selectedIndex WRITE setSelectedIndex NOTIFY selectedIndexChanged) - Q_PROPERTY(int hoveredIndex READ hoveredIndex WRITE setHoveredIndex NOTIFY hoveredIndexChanged) Q_PROPERTY(int minimumWidth READ minimumWidth WRITE setMinimumWidth NOTIFY minimumWidthChanged) Q_PROPERTY(QFont font WRITE setFont) Q_PROPERTY(QQmlListProperty<QtMenuBase> menuItems READ menuItems NOTIFY menuItemsChanged) @@ -71,8 +70,6 @@ public: int selectedIndex() const { return m_selectedIndex; } void setSelectedIndex(int index); - int hoveredIndex() const { return m_highlightedIndex; } - void setHoveredIndex(int index); QQmlListProperty<QtMenuBase> menuItems(); @@ -127,7 +124,6 @@ public Q_SLOTS: Q_SIGNALS: void menuClosed(); void selectedIndexChanged(); - void hoveredIndexChanged(); void modelChanged(const QVariant &newModel); void rebuildMenu(); void minimumWidthChanged(); @@ -141,7 +137,6 @@ protected: protected Q_SLOTS: void emitSelected(); - void emitHovered(); void updateText(); void windowVisibleChanged(bool); diff --git a/src/qtdesktop/qtmenuitem.cpp b/src/qtdesktop/qtmenuitem.cpp index e1e8f8c5c83715ff5a9bc88a7a9b0fe0b07335d4..dc19f72d80ef395dd1b1d201d7547748c1129bcd 100644 --- a/src/qtdesktop/qtmenuitem.cpp +++ b/src/qtdesktop/qtmenuitem.cpp @@ -211,7 +211,6 @@ void QtMenuItem::bindToAction(QtAction *action) if (platformItem()) { connect(platformItem(), SIGNAL(activated()), m_action, SLOT(trigger())); - connect(platformItem(), SIGNAL(hovered()), m_action, SLOT(hover())); } connect(m_action, SIGNAL(destroyed(QObject*)), this, SLOT(unbindFromAction(QObject*))); @@ -250,7 +249,6 @@ void QtMenuItem::unbindFromAction(QObject *o) if (platformItem()) { disconnect(platformItem(), SIGNAL(activated()), action, SLOT(trigger())); - disconnect(platformItem(), SIGNAL(hovered()), action, SLOT(hover())); } disconnect(action, SIGNAL(destroyed(QObject*)), this, SLOT(unbindFromAction(QObject*)));