diff --git a/applets/appmenu/lib/appmenuapplet.h b/applets/appmenu/lib/appmenuapplet.h index fc9e8a7ba..b2d1f17d0 100644 --- a/applets/appmenu/lib/appmenuapplet.h +++ b/applets/appmenu/lib/appmenuapplet.h @@ -18,6 +18,7 @@ class AppMenuApplet : public Plasma::Applet { Q_OBJECT + Q_PROPERTY(QObject *containment READ containment CONSTANT) Q_PROPERTY(QAbstractItemModel *model READ model WRITE setModel NOTIFY modelChanged) Q_PROPERTY(int view READ view WRITE setView NOTIFY viewChanged) diff --git a/applets/appmenu/package/contents/ui/main.qml b/applets/appmenu/package/contents/ui/main.qml index 755dd848d..79bab59c6 100644 --- a/applets/appmenu/package/contents/ui/main.qml +++ b/applets/appmenu/package/contents/ui/main.qml @@ -141,6 +141,7 @@ Item { AppMenuPrivate.AppMenuModel { id: appMenuModel + containmentStatus: Plasmoid.nativeInterface.containment.status screenGeometry: Plasmoid.screenGeometry onRequestActivateIndex: Plasmoid.nativeInterface.requestActivateIndex(index) Component.onCompleted: { diff --git a/applets/appmenu/plugin/appmenumodel.cpp b/applets/appmenu/plugin/appmenumodel.cpp index 3c58e18d1..3de362f07 100644 --- a/applets/appmenu/plugin/appmenumodel.cpp +++ b/applets/appmenu/plugin/appmenumodel.cpp @@ -193,6 +193,12 @@ void AppMenuModel::update() void AppMenuModel::onActiveWindowChanged() { + // Do not change active window when panel gets focus + // See ShellCorona::init() in shell/shellcorona.cpp + if (m_containmentStatus == Plasma::Types::AcceptingInputStatus) { + return; + } + const QModelIndex activeTaskIndex = m_tasksModel->activeTask(); const QString objectPath = m_tasksModel->data(activeTaskIndex, TaskManager::AbstractTasksModel::ApplicationMenuObjectPath).toString(); const QString serviceName = m_tasksModel->data(activeTaskIndex, TaskManager::AbstractTasksModel::ApplicationMenuServiceName).toString(); diff --git a/applets/appmenu/plugin/appmenumodel.h b/applets/appmenu/plugin/appmenumodel.h index dc609d9d8..1722cf726 100644 --- a/applets/appmenu/plugin/appmenumodel.h +++ b/applets/appmenu/plugin/appmenumodel.h @@ -14,6 +14,8 @@ #include #include +#include + class QMenu; class QModelIndex; class QDBusServiceWatcher; @@ -26,6 +28,7 @@ class AppMenuModel : public QAbstractListModel Q_PROPERTY(bool menuAvailable READ menuAvailable WRITE setMenuAvailable NOTIFY menuAvailableChanged) Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged) + Q_PROPERTY(Plasma::Types::ItemStatus containmentStatus MEMBER m_containmentStatus NOTIFY containmentStatusChanged) Q_PROPERTY(QRect screenGeometry READ screenGeometry WRITE setScreenGeometry NOTIFY screenGeometryChanged) public: @@ -64,6 +67,7 @@ private Q_SLOTS: Q_SIGNALS: void menuAvailableChanged(); void modelNeedsUpdate(); + void containmentStatusChanged(); void screenGeometryChanged(); void visibleChanged(); @@ -72,6 +76,7 @@ private: bool m_updatePending = false; bool m_visible = true; + Plasma::Types::ItemStatus m_containmentStatus = Plasma::Types::PassiveStatus; TaskManager::TasksModel *m_tasksModel; //! current active window used