diff --git a/applets/systemtray/package/contents/ui/items/AbstractItem.qml b/applets/systemtray/package/contents/ui/items/AbstractItem.qml --- a/applets/systemtray/package/contents/ui/items/AbstractItem.qml +++ b/applets/systemtray/package/contents/ui/items/AbstractItem.qml @@ -47,6 +47,15 @@ property bool forcedShown: plasmoid.configuration.showAllItems || plasmoid.configuration.shownItems.indexOf(itemId) !== -1 property bool categoryShown: shownCategories.indexOf(category) != -1; + readonly property int effectiveStatus: { + if (!categoryShown) { + return PlasmaCore.Types.HiddenStatus + } else if (forcedShown || (!forcedHidden && status !== PlasmaCore.Types.PassiveStatus)) { + return PlasmaCore.Types.ActiveStatus + } else { + return PlasmaCore.Types.PassiveStatus + } + } /* subclasses need to assign to this tiiltip properties mainText: @@ -68,18 +77,15 @@ //BEGIN CONNECTIONS - onStatusChanged: updateItemVisibility(abstractItem); + onEffectiveStatusChanged: updateItemVisibility(abstractItem); onContainsMouseChanged: { if (hidden && containsMouse) { root.hiddenLayout.hoveredItem = abstractItem } } Component.onCompleted: updateItemVisibility(abstractItem); - onForcedHiddenChanged: updateItemVisibility(abstractItem); - onForcedShownChanged: updateItemVisibility(abstractItem); - onCategoryShownChanged: updateItemVisibility(abstractItem); //dangerous but needed due how repeater reparents onParentChanged: updateItemVisibility(abstractItem); diff --git a/applets/systemtray/package/contents/ui/main.qml b/applets/systemtray/package/contents/ui/main.qml --- a/applets/systemtray/package/contents/ui/main.qml +++ b/applets/systemtray/package/contents/ui/main.qml @@ -53,18 +53,16 @@ property Component plasmoidItemComponent function updateItemVisibility(item) { - - //Invisible - if (!item.categoryShown) { + switch (item.effectiveStatus) { + case PlasmaCore.Types.HiddenStatus: if (item.parent == invisibleEntriesContainer) { return; } item.parent = invisibleEntriesContainer; + break; - //visible - } else if (item.forcedShown || !(item.forcedHidden || item.status == PlasmaCore.Types.PassiveStatus)) { - + case PlasmaCore.Types.ActiveStatus: if (visibleLayout.children.length == 0) { item.parent = visibleLayout; //notifications is always the first @@ -74,9 +72,9 @@ } else if (visibleLayout.children[0] != item) { plasmoid.nativeInterface.reorderItemBefore(item, visibleLayout.children[0]); } + break; - //hidden - } else { + case PlasmaCore.Types.PassiveStatus: if (hiddenLayout.children.length == 0) { item.parent = hiddenLayout; @@ -88,6 +86,7 @@ plasmoid.nativeInterface.reorderItemBefore(item, hiddenLayout.children[0]); } item.x = 0; + break; } }