diff --git a/app/shortcuts/globalshortcuts.cpp b/app/shortcuts/globalshortcuts.cpp index 0878089a7..034421233 100644 --- a/app/shortcuts/globalshortcuts.cpp +++ b/app/shortcuts/globalshortcuts.cpp @@ -51,6 +51,8 @@ #include #include +#define SHORTCUTBLOCKHIDINGTYPE "globalshortcuts::blockHiding()" + namespace Latte { const int APPLETEXECUTIONDELAY = 400; @@ -254,11 +256,12 @@ void GlobalShortcuts::activateLauncherMenu() if (highestPriorityView->visibility()->isHidden() && highestPriorityView->interface()->applicationLauncherInPopup()) { m_lastInvokedAction = m_singleMetaAction; - highestPriorityView->visibility()->setBlockHiding(true); + highestPriorityView->visibility()->addBlockHidingEvent(SHORTCUTBLOCKHIDINGTYPE); //! delay the execution in order to show first the view QTimer::singleShot(APPLETEXECUTIONDELAY, [this, highestPriorityView]() { highestPriorityView->toggleAppletExpanded(highestPriorityView->interface()->applicationLauncherId()); + highestPriorityView->visibility()->removeBlockHidingEvent(SHORTCUTBLOCKHIDINGTYPE); }); } else { highestPriorityView->toggleAppletExpanded(highestPriorityView->interface()->applicationLauncherId()); @@ -348,7 +351,7 @@ void GlobalShortcuts::activateEntry(int index, Qt::Key modifier) } if (delayed) { - view->visibility()->setBlockHiding(true); + view->visibility()->addBlockHidingEvent(SHORTCUTBLOCKHIDINGTYPE); m_hideViewsTimer.start(); } @@ -421,7 +424,7 @@ void GlobalShortcuts::showViews() if (!m_hideViewsTimer.isActive()) { m_hideViews.append(viewWithTasks); - viewWithTasks->visibility()->setBlockHiding(true); + viewWithTasks->visibility()->addBlockHidingEvent(SHORTCUTBLOCKHIDINGTYPE); } } @@ -431,7 +434,7 @@ void GlobalShortcuts::showViews() if (!m_hideViewsTimer.isActive()) { m_hideViews.append(viewWithMeta); - viewWithMeta->visibility()->setBlockHiding(true); + viewWithMeta->visibility()->addBlockHidingEvent(SHORTCUTBLOCKHIDINGTYPE); } } @@ -450,7 +453,7 @@ void GlobalShortcuts::showViews() if (view != viewWithTasks && view != viewWithMeta) { if (view->interface()->showShortcutBadges(false, false)) { m_hideViews.append(view); - view->visibility()->setBlockHiding(true); + view->visibility()->addBlockHidingEvent(SHORTCUTBLOCKHIDINGTYPE); } } } @@ -525,7 +528,7 @@ void GlobalShortcuts::hideViewsTimerSlot() if (viewsToHideAreValid()) { for(const auto latteView : m_hideViews) { - latteView->visibility()->setBlockHiding(false); + latteView->visibility()->removeBlockHidingEvent(SHORTCUTBLOCKHIDINGTYPE); latteView->interface()->hideShortcutBadges(); } } diff --git a/app/view/contextmenu.cpp b/app/view/contextmenu.cpp index 11fd32cd1..8297f2904 100644 --- a/app/view/contextmenu.cpp +++ b/app/view/contextmenu.cpp @@ -40,6 +40,8 @@ #include #include +#define BLOCKHIDINGTYPE "View::contextMenu()" + namespace Latte { namespace ViewPart { @@ -66,10 +68,6 @@ void ContextMenu::menuAboutToHide() m_contextMenu = 0; - if (!m_latteView->containment()->isUserConfiguring()) { - m_latteView->visibility()->setBlockHiding(false); - } - emit menuChanged(); } @@ -284,7 +282,7 @@ bool ContextMenu::mousePressEvent(QMouseEvent *event) } connect(desktopMenu, SIGNAL(aboutToHide()), this, SLOT(menuAboutToHide())); - m_latteView->visibility()->setBlockHiding(true); + desktopMenu->popup(pos); event->setAccepted(true); emit menuChanged(); diff --git a/app/view/view.cpp b/app/view/view.cpp index c85508242..19c8bdf73 100644 --- a/app/view/view.cpp +++ b/app/view/view.cpp @@ -59,6 +59,10 @@ #include #include +#define BLOCKHIDINGDRAGTYPE "View::ContainsDrag()" +#define BLOCKHIDINGNEEDSATTENTIONTYPE "View::Containment::NeedsAttentionState()" +#define BLOCKHIDINGREQUESTSINPUTTYPE "View::Containment::RequestsInputState()" + namespace Latte { //! both alwaysVisible and byPassWM are passed through corona because @@ -100,6 +104,8 @@ View::View(Plasma::Corona *corona, QScreen *targetScreen, bool byPassWM) m_releaseGrabTimer.setSingleShot(true); connect(&m_releaseGrabTimer, &QTimer::timeout, this, &View::releaseGrab); + connect(m_contextMenu, &ViewPart::ContextMenu::menuChanged, this, &View::updateTransientWindowsTracking); + connect(this, &View::containmentChanged , this, [ &, byPassWM]() { qDebug() << "dock view c++ containment changed 1..."; @@ -135,6 +141,9 @@ View::View(Plasma::Corona *corona, QScreen *targetScreen, bool byPassWM) } }); + connect(m_visibility, &ViewPart::VisibilityManager::containsMouseChanged, + this, &View::updateTransientWindowsTracking); + emit visibilityChanged(); } @@ -534,12 +543,57 @@ void View::updateAbsoluteGeometry(bool bypassChecks) void View::statusChanged(Plasma::Types::ItemStatus status) { - if (containment()) { - if (containment()->status() >= Plasma::Types::NeedsAttentionStatus && - containment()->status() != Plasma::Types::HiddenStatus) { - setBlockHiding(true); - } else if (!containment()->isUserConfiguring()){ - setBlockHiding(false); + if (!containment()) { + return; + } + + if (status == Plasma::Types::NeedsAttentionStatus) { + m_visibility->addBlockHidingEvent(BLOCKHIDINGNEEDSATTENTIONTYPE); + setFlags(flags() | Qt::WindowDoesNotAcceptFocus); + } else if (status == Plasma::Types::AcceptingInputStatus) { + m_visibility->removeBlockHidingEvent(BLOCKHIDINGNEEDSATTENTIONTYPE); + setFlags(flags() & ~Qt::WindowDoesNotAcceptFocus); + KWindowSystem::forceActiveWindow(winId()); + } else { + updateTransientWindowsTracking(); + m_visibility->removeBlockHidingEvent(BLOCKHIDINGNEEDSATTENTIONTYPE); + setFlags(flags() | Qt::WindowDoesNotAcceptFocus); + } +} + +void View::addTransientWindow(QWindow *window) +{ + if (!m_transientWindows.contains(window)) { + m_transientWindows.append(window); + + QString winPtrStr = "0x" + QString::number((qulonglong)window,16); + m_visibility->addBlockHidingEvent(winPtrStr); + connect(window, &QWindow::visibleChanged, this, &View::removeTransientWindow); + } +} + +void View::removeTransientWindow(const bool &visible) +{ + QWindow *window = static_cast(QObject::sender()); + + if (window && !visible) { + QString winPtrStr = "0x" + QString::number((qulonglong)window,16); + m_visibility->removeBlockHidingEvent(winPtrStr); + disconnect(window, &QWindow::visibleChanged, this, &View::removeTransientWindow); + m_transientWindows.removeAll(window); + + updateTransientWindowsTracking(); + } +} + +void View::updateTransientWindowsTracking() +{ + for(QWindow *window: qApp->topLevelWindows()) { + if (window->transientParent() == this){ + if (window->isVisible()) { + addTransientWindow(window); + break; + } } } } @@ -572,7 +626,6 @@ void View::setAlternativesIsShown(bool show) m_alternativesIsShown = show; - setBlockHiding(show); emit alternativesIsShownChanged(); } @@ -588,6 +641,14 @@ void View::setContainsDrag(bool contains) } m_containsDrag = contains; + + + if (m_containsDrag) { + m_visibility->addBlockHidingEvent(BLOCKHIDINGDRAGTYPE); + } else { + m_visibility->removeBlockHidingEvent(BLOCKHIDINGDRAGTYPE); + } + emit containsDragChanged(); } @@ -1125,25 +1186,6 @@ void View::moveToLayout(QString layoutName) } } -void View::setBlockHiding(bool block) -{ - if (!block) { - auto *configView = qobject_cast(m_configView); - - if (m_alternativesIsShown || (configView && configView->sticker() && configView->isVisible())) { - return; - } - - if (m_visibility) { - m_visibility->setBlockHiding(false); - } - } else { - if (m_visibility) { - m_visibility->setBlockHiding(true); - } - } -} - void View::configViewCreatedFor(Latte::View *view) { if (view!=this && m_configView) { @@ -1160,8 +1202,6 @@ void View::configViewCreatedFor(Latte::View *view) void View::hideWindowsForSlidingOut() { - setBlockHiding(false); - if (m_configView) { auto configDialog = qobject_cast(m_configView); @@ -1512,6 +1552,7 @@ void View::mousePressEvent(QMouseEvent *event) if (result) { PlasmaQuick::ContainmentView::mousePressEvent(event); + updateTransientWindowsTracking(); } } //!END overriding context menus behavior diff --git a/app/view/view.h b/app/view/view.h index 0445533e3..cf856c690 100644 --- a/app/view/view.h +++ b/app/view/view.h @@ -41,6 +41,7 @@ // Qt #include #include +#include #include #include #include @@ -244,7 +245,6 @@ public slots: Q_INVOKABLE void deactivateApplets(); Q_INVOKABLE void moveToLayout(QString layoutName); Q_INVOKABLE void removeTasksPlasmoid(); - Q_INVOKABLE void setBlockHiding(bool block); Q_INVOKABLE void toggleAppletExpanded(const int id); Q_INVOKABLE bool appletIsExpandable(const int id); @@ -326,8 +326,12 @@ private slots: void preferredViewForShortcutsChangedSlot(Latte::View *view); void releaseGrab(); void reloadSource(); + void updateTransientWindowsTracking(); void statusChanged(Plasma::Types::ItemStatus); + void addTransientWindow(QWindow *window); + void removeTransientWindow(const bool &visible); + void restoreConfig(); void saveConfig(); @@ -400,6 +404,9 @@ private: //! Connections to release and bound for the assigned layout QList connectionsLayout; + //! track transientWindows + QList m_transientWindows; + QPointer m_corona; KWayland::Client::PlasmaShellSurface *m_shellSurface{nullptr}; diff --git a/app/view/visibilitymanager.cpp b/app/view/visibilitymanager.cpp index 1c0385193..7437f9213 100644 --- a/app/view/visibilitymanager.cpp +++ b/app/view/visibilitymanager.cpp @@ -58,6 +58,8 @@ VisibilityManager::VisibilityManager(PlasmaQuick::ContainmentView *view) m_corona = qobject_cast(view->corona()); m_wm = m_corona->wm(); + connect(this, &VisibilityManager::hidingIsBlockedChanged, this, &VisibilityManager::on_hidingIsBlockedChanged); + connect(this, &VisibilityManager::slideOutFinished, this, &VisibilityManager::updateHiddenState); connect(this, &VisibilityManager::slideInFinished, this, &VisibilityManager::updateHiddenState); @@ -99,7 +101,7 @@ VisibilityManager::VisibilityManager(PlasmaQuick::ContainmentView *view) } }); connect(&m_timerHide, &QTimer::timeout, this, [&]() { - if (!m_blockHiding && !m_isHidden && !m_isBelowLayer && !m_dragEnter) { + if (!hidingIsBlocked() && !m_isHidden && !m_isBelowLayer && !m_dragEnter) { if (m_latteView->isFloatingWindow()) { //! first check if mouse is inside the floating gap checkMouseInFloatingArea(); @@ -418,7 +420,7 @@ void VisibilityManager::setIsHidden(bool isHidden) if (m_isHidden == isHidden) return; - if (m_blockHiding && isHidden) { + if (hidingIsBlocked() && isHidden) { qWarning() << "isHidden property is blocked, ignoring update"; return; } @@ -430,21 +432,48 @@ void VisibilityManager::setIsHidden(bool isHidden) emit isHiddenChanged(); } -bool VisibilityManager::blockHiding() const +bool VisibilityManager::hidingIsBlocked() const { - return m_blockHiding; + return (m_blockHidingEvents.count() > 0); } -void VisibilityManager::setBlockHiding(bool blockHiding) + +void VisibilityManager::addBlockHidingEvent(const QString &type) { - if (m_blockHiding == blockHiding) { + if (m_blockHidingEvents.contains(type) || type.isEmpty()) { return; } - m_blockHiding = blockHiding; - //qDebug() << "blockHiding:" << blockHiding; + qDebug() << " adding block hiding event :: " << type; - if (m_blockHiding) { + bool prevHidingIsBlocked = hidingIsBlocked(); + + m_blockHidingEvents << type; + + if (prevHidingIsBlocked != hidingIsBlocked()) { + emit hidingIsBlockedChanged(); + } +} + +void VisibilityManager::removeBlockHidingEvent(const QString &type) +{ + if (!m_blockHidingEvents.contains(type) || type.isEmpty()) { + return; + } + qDebug() << " remove block hiding event :: " << type; + + bool prevHidingIsBlocked = hidingIsBlocked(); + + m_blockHidingEvents.removeAll(type); + + if (prevHidingIsBlocked != hidingIsBlocked()) { + emit hidingIsBlockedChanged(); + } +} + +void VisibilityManager::on_hidingIsBlockedChanged() +{ + if (hidingIsBlocked()) { m_timerHide.stop(); if (m_isHidden) { @@ -453,8 +482,6 @@ void VisibilityManager::setBlockHiding(bool blockHiding) } else { updateHiddenState(); } - - emit blockHidingChanged(); } int VisibilityManager::timerShow() const @@ -542,7 +569,7 @@ void VisibilityManager::show() void VisibilityManager::raiseView(bool raise) { - if (m_blockHiding || m_mode == Latte::Types::SideBar) + if (hidingIsBlocked() || m_mode == Latte::Types::SideBar) return; if (raise) { @@ -592,7 +619,11 @@ void VisibilityManager::toggleHiddenState() emit mustBeHide(); } } else { - setBlockHiding(!m_blockHiding); + if (!m_blockHidingEvents.contains(Q_FUNC_INFO)) { + addBlockHidingEvent(Q_FUNC_INFO); + } else { + removeBlockHidingEvent(Q_FUNC_INFO); + } } } } diff --git a/app/view/visibilitymanager.h b/app/view/visibilitymanager.h index 7f17d971d..4300c92f3 100644 --- a/app/view/visibilitymanager.h +++ b/app/view/visibilitymanager.h @@ -52,13 +52,13 @@ namespace ViewPart { class VisibilityManager : public QObject { Q_OBJECT + Q_PROPERTY(bool hidingIsBlocked READ hidingIsBlocked NOTIFY hidingIsBlockedChanged) Q_PROPERTY(Latte::Types::Visibility mode READ mode WRITE setMode NOTIFY modeChanged) Q_PROPERTY(bool raiseOnDesktop READ raiseOnDesktop WRITE setRaiseOnDesktop NOTIFY raiseOnDesktopChanged) - Q_PROPERTY(bool raiseOnActivity READ raiseOnActivity WRITE setRaiseOnActivity NOTIFY raiseOnActivityChanged) + Q_PROPERTY(bool raiseOnActivity READ raiseOnActivity WRITE setRaiseOnActivity NOTIFY raiseOnActivityChanged) Q_PROPERTY(bool isHidden READ isHidden WRITE setIsHidden NOTIFY isHiddenChanged) - Q_PROPERTY(bool isBelowLayer READ isBelowLayer NOTIFY isBelowLayerChanged) - Q_PROPERTY(bool blockHiding READ blockHiding WRITE setBlockHiding NOTIFY blockHidingChanged) + Q_PROPERTY(bool isBelowLayer READ isBelowLayer NOTIFY isBelowLayerChanged) Q_PROPERTY(bool containsMouse READ containsMouse NOTIFY containsMouseChanged) //! KWin Edges Support Options @@ -88,8 +88,7 @@ public: bool isHidden() const; void setIsHidden(bool isHidden); - bool blockHiding() const; - void setBlockHiding(bool blockHiding); + bool hidingIsBlocked() const; bool containsMouse() const; @@ -115,6 +114,9 @@ public slots: Q_INVOKABLE void setViewOnBackLayer(); Q_INVOKABLE void setViewOnFrontLayer(); + Q_INVOKABLE void addBlockHidingEvent(const QString &type); + Q_INVOKABLE void removeBlockHidingEvent(const QString &type); + void initViewFlags(); signals: @@ -129,7 +131,7 @@ signals: void raiseOnActivityChanged(); void isBelowLayerChanged(); void isHiddenChanged(); - void blockHidingChanged(); + void hidingIsBlockedChanged(); void containsMouseChanged(); void timerShowChanged(); void timerHideChanged(); @@ -144,6 +146,8 @@ private slots: void setIsBelowLayer(bool below); + void on_hidingIsBlockedChanged(); + //! KWin Edges Support functions void updateKWinEdgesSupport(); @@ -190,13 +194,14 @@ private: bool m_isBelowLayer{false}; bool m_isHidden{false}; bool m_dragEnter{false}; - bool m_blockHiding{false}; bool m_containsMouse{false}; bool m_raiseTemporarily{false}; bool m_raiseOnDesktopChange{false}; bool m_raiseOnActivityChange{false}; bool m_hideNow{false}; + QStringList m_blockHidingEvents; + QRect m_publishedStruts; QRegion m_lastMask; diff --git a/containment/package/contents/ui/DebugWindow.qml b/containment/package/contents/ui/DebugWindow.qml index 7095d1e0a..fb1562a15 100644 --- a/containment/package/contents/ui/DebugWindow.qml +++ b/containment/package/contents/ui/DebugWindow.qml @@ -249,14 +249,6 @@ Window{ } } - Text{ - text: "Actions Block Hiding "+space - } - - Text{ - text: root.actionsBlockHiding - } - Text{ text: "Contains Mouse (flag)"+space } diff --git a/containment/package/contents/ui/applet/AppletItem.qml b/containment/package/contents/ui/applet/AppletItem.qml index 9fdaeaf4a..a33147ace 100644 --- a/containment/package/contents/ui/applet/AppletItem.qml +++ b/containment/package/contents/ui/applet/AppletItem.qml @@ -511,7 +511,6 @@ Item { appletItem.latteApplet.signalAnimationsNeedBothAxis.connect(slotAnimationsNeedBothAxis); appletItem.latteApplet.signalAnimationsNeedLength.connect(slotAnimationsNeedLength); appletItem.latteApplet.signalAnimationsNeedThickness.connect(slotAnimationsNeedThickness); - appletItem.latteApplet.signalActionsBlockHiding.connect(slotActionsBlockHiding); appletItem.latteApplet.signalPreviewsShown.connect(slotPreviewsShown); appletItem.latteApplet.clearZoomSignal.connect(titleTooltipDialog.hide); } @@ -554,7 +553,6 @@ Item { appletItem.latteApplet.signalAnimationsNeedBothAxis.disconnect(slotAnimationsNeedBothAxis); appletItem.latteApplet.signalAnimationsNeedLength.disconnect(slotAnimationsNeedLength); appletItem.latteApplet.signalAnimationsNeedThickness.disconnect(slotAnimationsNeedThickness); - appletItem.latteApplet.signalActionsBlockHiding.disconnect(slotActionsBlockHiding); appletItem.latteApplet.signalPreviewsShown.disconnect(slotPreviewsShown); appletItem.latteApplet.clearZoomSignal.disconnect(titleTooltipDialog.hide); } diff --git a/containment/package/contents/ui/editmode/Visual.qml b/containment/package/contents/ui/editmode/Visual.qml index ebccc0cbb..86b79e254 100644 --- a/containment/package/contents/ui/editmode/Visual.qml +++ b/containment/package/contents/ui/editmode/Visual.qml @@ -238,10 +238,9 @@ Item{ onInEditModeChanged: { if (inEditMode) { - latteView.setBlockHiding(true); + latteView.visibility.addBlockHidingEvent("EditVisual[qml]::inEditMode()"); } else { - latteView.setBlockHiding(false); - + latteView.visibility.removeBlockHidingEvent("EditVisual[qml]::inEditMode()"); if (latteView.visibility.isHidden) { latteView.visibility.mustBeShown(); } diff --git a/containment/package/contents/ui/main.qml b/containment/package/contents/ui/main.qml index fde7d26e6..f807fe39e 100644 --- a/containment/package/contents/ui/main.qml +++ b/containment/package/contents/ui/main.qml @@ -254,8 +254,6 @@ Item { property alias hoveredIndex: layoutsContainer.hoveredIndex property alias directRenderDelayerIsRunning: directRenderDelayerForEnteringTimer.running - property int actionsBlockHiding: 0 //actions that block hiding - property int animationsNeedBothAxis:0 //animations need space in both axes, e.g zooming a task property int animationsNeedLength: 0 // animations need length, e.g. adding a task property int animationsNeedThickness: 0 // animations need thickness, e.g. bouncing animation @@ -1384,27 +1382,6 @@ Item { appletsNeedWindowsTracking = Math.max(appletsNeedWindowsTracking + step, 0); } - //this is used when dragging a task in order to not hide the dock - //and also by the menu appearing from tasks for the same reason - function slotActionsBlockHiding(step) { - //if (root.editMode) { - // return; - // } - - if ((step === 0) || (!latteView)) { - return; - } - - actionsBlockHiding = Math.max(actionsBlockHiding + step, 0); - - if (actionsBlockHiding > 0){ - latteView.setBlockHiding(true); - } else { - if (!root.editMode) - latteView.setBlockHiding(false); - } - } - function slotPreviewsShown(){ if (latteView) { latteView.deactivateApplets(); diff --git a/plasmoid/package/contents/ui/ContextMenu.qml b/plasmoid/package/contents/ui/ContextMenu.qml index da66f803f..aecd1556e 100644 --- a/plasmoid/package/contents/ui/ContextMenu.qml +++ b/plasmoid/package/contents/ui/ContextMenu.qml @@ -83,7 +83,6 @@ PlasmaComponents.ContextMenu { function show() { //trying to use the dragging mechanism in order to not hide the dock root.disableRestoreZoom = true; - root.signalActionsBlockHiding(1); //root.signalDraggingState(true); loadDynamicLaunchActions(visualParent.m.LauncherUrlWithoutIcon); // backend.ungrabMouse(visualParent); @@ -334,7 +333,6 @@ PlasmaComponents.ContextMenu { if (!changingLayout) { root.contextMenu = null; backend.ungrabMouse(visualParent); - root.signalActionsBlockHiding(-1); //root.signalDraggingState(false); root.disableRestoreZoom = false; root.startCheckRestoreZoomTimer(100); diff --git a/plasmoid/package/contents/ui/main.qml b/plasmoid/package/contents/ui/main.qml index fbf6435b0..be9b6e06e 100644 --- a/plasmoid/package/contents/ui/main.qml +++ b/plasmoid/package/contents/ui/main.qml @@ -300,7 +300,6 @@ Item { signal presentWindows(variant winIds); signal requestLayout; signal separatorsUpdated(); - signal signalActionsBlockHiding(int value); signal signalAnimationsNeedBothAxis(int value); signal signalAnimationsNeedLength(int value); signal signalAnimationsNeedThickness(int value); @@ -379,6 +378,12 @@ Item { } } + Binding { + target: plasmoid + property: "status" + value: (tasksModel.anyTaskDemandsAttentionInValidTime || root.dragSource ? + PlasmaCore.Types.NeedsAttentionStatus : PlasmaCore.Types.PassiveStatus); + } ///// PlasmaCore.ColorScope{ @@ -530,13 +535,11 @@ Item { onDragSourceChanged: { if (dragSource == null) { root.draggingFinished(); - root.signalActionsBlockHiding(-1); tasksModel.syncLaunchers(); restoreDraggingPhaseTimer.start(); } else { inDraggingPhase = true; - root.signalActionsBlockHiding(1); } } @@ -569,7 +572,6 @@ Item { if (latteView && signalSent) { //it is used to unblock dock hiding - root.signalActionsBlockHiding(-1); signalSent = false; } @@ -601,7 +603,6 @@ Item { if (latteView && !signalSent) { //it is used to block dock hiding - root.signalActionsBlockHiding(1); signalSent = true; } @@ -703,6 +704,8 @@ Item { groupMode: groupTasksByDefault ? TaskManager.TasksModel.GroupApplications : TaskManager.TasksModel.GroupDisabled sortMode: TaskManager.TasksModel.SortManual + property bool anyTaskDemandsAttentionInValidTime: false + function updateLaunchersList(){ if (latteView.universalSettings && (latteView.launchersGroup === Latte.Types.LayoutLaunchers @@ -771,7 +774,7 @@ Item { onAnyTaskDemandsAttentionChanged: { if (anyTaskDemandsAttention){ - plasmoid.status = PlasmaCore.Types.RequiresAttentionStatus; + anyTaskDemandsAttentionInValidTime = true; attentionTimerComponent.createObject(root); } } @@ -971,7 +974,7 @@ Item { id: attentionTimer interval:8500 onTriggered: { - plasmoid.status = PlasmaCore.Types.PassiveStatus; + tasksModel.anyTaskDemandsAttentionInValidTime = false; destroy(); if (latteView && latteView.debugModeTimers) {