diff --git a/sidebar/SidebarMode.cpp b/sidebar/SidebarMode.cpp --- a/sidebar/SidebarMode.cpp +++ b/sidebar/SidebarMode.cpp @@ -256,6 +256,7 @@ , d( new Private() ) { qApp->setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); + qApp->installEventFilter(this); d->aboutIcon = new KAboutData( QStringLiteral("SidebarView"), i18n( "Sidebar View" ), QStringLiteral("1.0"), i18n( "Provides a categorized sidebar for control modules." ), KAboutLicense::GPL, i18n( "(c) 2017, Marco Martin" ) ); @@ -338,7 +339,6 @@ d->subCategoryModel = new SubcategoryModel( d->searchModel, this ); d->mainWidget = new FocusHackWidget(); - d->mainWidget->installEventFilter(this); d->mainLayout = new QHBoxLayout(d->mainWidget); d->mainLayout->setContentsMargins(0, 0, 0, 0); d->moduleView = new ModuleView( d->mainWidget ); @@ -517,8 +517,6 @@ connect(d->quickWidget->rootObject(), SIGNAL(focusNextRequest()), d->mainWidget, SLOT(focusNext())); connect(d->quickWidget->rootObject(), SIGNAL(focusPreviousRequest()), d->mainWidget, SLOT(focusPrevious())); - d->quickWidget->installEventFilter(this); - d->toolTipManager = new ToolTipManager(d->searchModel, d->quickWidget); d->subCategoryToolTipManager = new ToolTipManager(d->subCategoryModel, d->quickWidget); @@ -530,7 +528,6 @@ d->placeHolderWidget->setSource(QUrl::fromLocalFile(d->package.filePath("ui", QStringLiteral("introPage.qml")))); connect(d->placeHolderWidget->rootObject(), SIGNAL(focusNextRequest()), d->mainWidget, SLOT(focusNext())); connect(d->placeHolderWidget->rootObject(), SIGNAL(focusPreviousRequest()), d->mainWidget, SLOT(focusPrevious())); - d->placeHolderWidget->installEventFilter(this); d->mainLayout->addWidget( d->quickWidget ); d->moduleView->hide(); @@ -570,6 +567,8 @@ emit widthChanged(); } else if (watched == d->mainWidget && event->type() == QEvent::Show) { emit changeToolBarItems(BaseMode::NoItems); + } else if (watched->inherits("QWidgetWindow") && event->type() == QEvent::MouseButtonPress) { + QMetaObject::invokeMethod(d->quickWidget->rootObject(), "closeMenu"); } return BaseMode::eventFilter(watched, event); } diff --git a/sidebar/package/contents/ui/ActionMenu.qml b/sidebar/package/contents/ui/ActionMenu.qml --- a/sidebar/package/contents/ui/ActionMenu.qml +++ b/sidebar/package/contents/ui/ActionMenu.qml @@ -16,26 +16,28 @@ Boston, MA 02110-1301, USA. */ -import QtQuick 2.3 -import QtQml 2.2 -import QtQuick.Controls 1.0 as QtControls +import QtQuick 2.5 +import QtQuick.Controls 2.5 as QQC2 -QtControls.Menu { +QQC2.Menu { id: menu + modal: true + property alias actions: instantiator.model Instantiator { id: instantiator - delegate: QtControls.MenuItem { - readonly property QtObject action: systemsettings.action(modelData) + delegate: QQC2.MenuItem { + readonly property QtObject itemAction: systemsettings.action(modelData) - text: action.text - iconName: systemsettings.actionIconName(modelData) - visible: action.visible - enabled: action.enabled - onTriggered: action.trigger() + indicator: null + text: itemAction.text + icon.name: systemsettings.actionIconName(modelData) + visible: itemAction.visible + enabled: itemAction.enabled + onTriggered: itemAction.trigger() } onObjectAdded: menu.insertItem(index, object) diff --git a/sidebar/package/contents/ui/CategoriesPage.qml b/sidebar/package/contents/ui/CategoriesPage.qml --- a/sidebar/package/contents/ui/CategoriesPage.qml +++ b/sidebar/package/contents/ui/CategoriesPage.qml @@ -16,17 +16,18 @@ Boston, MA 02110-1301, USA. */ -import QtQuick 2.3 +import QtQuick 2.5 +import QtQuick.Controls 2.5 as QQC2 import QtQuick.Layouts 1.1 -import QtQuick.Controls 1.0 as QtControls -import QtQuick.Controls 2.0 as QtControls2 -import org.kde.kirigami 2.7 as Kirigami +import org.kde.kirigami 2.8 as Kirigami Kirigami.ScrollablePage { id: mainColumn Component.onCompleted: searchField.forceActiveFocus() + property alias actionMenu: menu + header: Rectangle { Kirigami.Theme.colorSet: Kirigami.Theme.Window Kirigami.Theme.inherit: false @@ -40,35 +41,33 @@ fill: parent margins: Kirigami.Units.smallSpacing } - QtControls.ToolButton { + QQC2.ToolButton { id: menuButton - iconName: "application-menu" + icon.name: "application-menu" + checkable: true + checked: menu.opened Layout.maximumWidth: Kirigami.Units.iconSizes.smallMedium + Kirigami.Units.smallSpacing * 2 Layout.maximumHeight: width Keys.onBacktabPressed: { root.focusPreviousRequest() } - menu: ActionMenu { - actions: ["configure", "help_contents", "help_about_app", "help_about_kde"] - } + onClicked: menu.popup(menuButton, 0, menuButton.height) } - Kirigami.ActionTextField { + + ActionMenu { + id: menu + actions: ["configure", "help_contents", "help_about_app", "help_about_kde"] + } + + Kirigami.SearchField { id: searchField focus: true Layout.minimumHeight: Layout.maximumHeight Layout.maximumHeight: Kirigami.Units.iconSizes.smallMedium + Kirigami.Units.smallSpacing * 2 Layout.fillWidth: true - placeholderText: i18n("Search...") onTextChanged: { systemsettings.categoryModel.filterRegExp = text; } - rightActions: [ - Kirigami.Action { - iconName: LayoutMirroring.enabled ? "edit-clear-rtl" : "edit-clear" - visible: searchField.text.length !== 0 - onTriggered: searchField.text = "" - } - ] } } Kirigami.Separator { diff --git a/sidebar/package/contents/ui/IntroIcon.qml b/sidebar/package/contents/ui/IntroIcon.qml --- a/sidebar/package/contents/ui/IntroIcon.qml +++ b/sidebar/package/contents/ui/IntroIcon.qml @@ -16,11 +16,11 @@ Boston, MA 02110-1301, USA. */ -import QtQuick 2.1 +import QtQuick 2.5 +import QtQuick.Controls 2.5 as QQC2 import QtQuick.Layouts 1.1 -import QtQuick.Controls 2.0 as QQC2 -import org.kde.kirigami 2.1 as Kirigami +import org.kde.kirigami 2.5 as Kirigami MouseArea { id: item diff --git a/sidebar/package/contents/ui/SubCategoryPage.qml b/sidebar/package/contents/ui/SubCategoryPage.qml --- a/sidebar/package/contents/ui/SubCategoryPage.qml +++ b/sidebar/package/contents/ui/SubCategoryPage.qml @@ -16,12 +16,11 @@ Boston, MA 02110-1301, USA. */ -import QtQuick 2.1 +import QtQuick 2.5 +import QtQuick.Controls 2.5 as QQC2 import QtQuick.Layouts 1.1 -import QtQuick.Controls 1.0 as QtControls -import QtQuick.Controls 2.0 as QtControls2 -import org.kde.kirigami 2.3 as Kirigami +import org.kde.kirigami 2.5 as Kirigami Kirigami.ScrollablePage { id: subCategoryColumn diff --git a/sidebar/package/contents/ui/introPage.qml b/sidebar/package/contents/ui/introPage.qml --- a/sidebar/package/contents/ui/introPage.qml +++ b/sidebar/package/contents/ui/introPage.qml @@ -16,10 +16,11 @@ Boston, MA 02110-1301, USA. */ -import QtQuick 2.1 +import QtQuick 2.5 +import QtQuick.Controls 2.5 as QQC2 import QtQuick.Layouts 1.1 -import QtQuick.Controls 2.0 as Controls -import org.kde.kirigami 2.1 as Kirigami + +import org.kde.kirigami 2.5 as Kirigami Rectangle { id: root @@ -49,7 +50,7 @@ height: width opacity: 0.3 } - Controls.Label { + QQC2.Label { Layout.alignment: Qt.AlignHCenter text: i18n("System Settings") } diff --git a/sidebar/package/contents/ui/main.qml b/sidebar/package/contents/ui/main.qml --- a/sidebar/package/contents/ui/main.qml +++ b/sidebar/package/contents/ui/main.qml @@ -16,10 +16,9 @@ Boston, MA 02110-1301, USA. */ -import QtQuick 2.1 -import QtQuick.Layouts 1.1 -import QtQuick.Controls 1.0 as QtControls -import org.kde.kirigami 2.1 as Kirigami +import QtQuick 2.5 + +import org.kde.kirigami 2.5 as Kirigami Kirigami.ApplicationItem { id: root @@ -41,6 +40,10 @@ subCategoryColumn.focus = true; } + function closeMenu() { + mainColumn.actionMenu.close(); + } + wideScreen: pageStack.depth > 1 && systemsettings.width > Kirigami.Units.gridUnit * 70 CategoriesPage { id: mainColumn