1
0
mirror of https://github.com/KDE/latte-dock.git synced 2025-08-21 13:49:29 +03:00

do not enable spacers for hidden separators

This commit is contained in:
Michail Vourlakos
2021-02-15 18:56:52 +02:00
parent cecaad2d92
commit 122ce05944
4 changed files with 107 additions and 47 deletions

View File

@ -33,6 +33,8 @@ AbilityDefinition.Indexer {
readonly property bool headAppletIsSeparator: isActive ? bridge.indexer.headAppletIsSeparator : false
readonly property bool isReady: !updateIsBlocked
readonly property int maxIndex: 99999
readonly property alias firstTailItemIsSeparator: _privates.firstTailItemIsSeparator
readonly property alias lastHeadItemIsSeparator: _privates.lastHeadItemIsSeparator
readonly property alias itemsCount: _privates.itemsCount
readonly property alias visibleItemsCount: _privates.visibleItemsCount
readonly property alias firstVisibleItemIndex: _privates.firstVisibleItemIndex
@ -40,55 +42,14 @@ AbilityDefinition.Indexer {
QtObject {
id: _privates
property bool firstTailItemIsSeparator: false
property bool lastHeadItemIsSeparator: false
property int firstVisibleItemIndex: -1
property int lastVisibleItemIndex: -1
property int itemsCount: 0
property int visibleItemsCount: 0
}
hidden: {
var hdns = [];
for (var i=0; i<layout.children.length; ++i){
var item = layout.children[i];
if (item && item.isHidden && item.itemIndex>=0) {
hdns.push(item.itemIndex);
}
}
return hdns;
}
readonly property bool firstTailItemIsSeparator: {
if (visibleItemsCount === layout.children.length) {
return false;
}
for(var i=0; i<firstVisibleItemIndex; ++i) {
if (separators.indexOf(i)>=0) {
return true;
}
}
return false;
}
readonly property bool lastHeadItemIsSeparator: {
if (visibleItemsCount === layout.children.length) {
return false;
}
var len = layout.children.length;
for(var i=len-1; i>lastVisibleItemIndex; --i) {
if (separators.indexOf(i)>=0) {
return true;
}
}
return false;
}
onIsActiveChanged: {
if (isActive) {
bridge.indexer.client = indexer;
@ -107,6 +68,46 @@ AbilityDefinition.Indexer {
}
}
Binding {
target: _privates
property: "firstTailItemIsSeparator"
when: isReady
value: {
if (_indexer.visibleItemsCount === _indexer.layout.children.length) {
return false;
}
for(var i=0; i<_indexer.firstVisibleItemIndex; ++i) {
if (_indexer.separators.indexOf(i)>=0 && _indexer.hidden.indexOf(i)<0) {
return true;
}
}
return false;
}
}
Binding {
target: _privates
property: "lastHeadItemIsSeparator"
when: isReady
value: {
if (_indexer.visibleItemsCount === _indexer.layout.children.length) {
return false;
}
var len = _indexer.layout.children.length;
for(var i=len-1; i>_indexer.lastVisibleItemIndex; --i) {
if (_indexer.separators.indexOf(i)>=0 && _indexer.hidden.indexOf(i)<0) {
return true;
}
}
return false;
}
}
Binding {
target: _privates
property: "firstVisibleItemIndex"
@ -140,8 +141,7 @@ AbilityDefinition.Indexer {
&& separators.indexOf(item.itemIndex)<0
&& hidden.indexOf(item.itemIndex)<0
&& item.itemIndex > ind) {
//console.log("org.kde.latte SETTING UP ::: " + item.itemIndex + " / " + layout.children.length);
//console.log("org/kde/latte SETTING UP ::: " + item.itemIndex + " / " + layout.children.length);
ind = item.itemIndex;
}
}
@ -184,6 +184,24 @@ AbilityDefinition.Indexer {
}
}
Binding {
target: _indexer
property: "hidden"
when: isReady
value: {
var hdns = [];
for (var i=0; i<layout.children.length; ++i){
var item = layout.children[i];
if (item && (item.isHidden || item.isSeparatorHidden) && item.itemIndex>=0) {
hdns.push(item.itemIndex);
}
}
return hdns;
}
}
Binding {
target: _indexer
property: "separators"

View File

@ -186,6 +186,26 @@ Item{
return hasTailItemSeparator;
}
readonly property bool tailItemIsVisibleSeparator: {
if (isSeparator || index < 0 || !tailItemIsSeparator ) {
return false;
}
var tail = index - 1;
while(tail>=0 && abilityItem.abilities.indexer.hidden.indexOf(tail)>=0) {
tail = tail - 1;
}
var hasTailItemSeparator = abilityItem.abilities.indexer.separators.indexOf(tail)>=0 && abilityItem.abilities.indexer.hidden.indexOf(tail)<0;
if (!hasTailItemSeparator && itemIndex === abilityItem.abilities.indexer.firstVisibleItemIndex){
return abilityItem.abilities.indexer.tailAppletIsSeparator;
}
return hasTailItemSeparator;
}
readonly property bool headItemIsSeparator: {
if (isSeparator || index < 0 ) {
return false;
@ -206,6 +226,28 @@ Item{
return hasHeadItemSeparator;
}
readonly property bool headItemIsVisibleSeparator: {
if (isSeparator || index < 0 || !headItemIsSeparator) {
return false;
}
var head = index + 1;
while(head>=0 && abilityItem.abilities.indexer.hidden.indexOf(head)>=0) {
head = head + 1;
}
var hasHeadItemSeparator = abilityItem.abilities.indexer.separators.indexOf(head)>=0 && abilityItem.abilities.indexer.hidden.indexOf(head)<0;
if (!hasHeadItemSeparator && itemIndex === abilityItem.abilities.indexer.lastVisibleItemIndex){
return abilityItem.abilities.indexer.headAppletIsSeparator;
}
return hasHeadItemSeparator;
}
Behavior on opacity {
NumberAnimation { duration: abilityItem.abilities.animations.speedFactor.current * abilityItem.abilities.animations.duration.large }
}

View File

@ -32,7 +32,7 @@ Item{
|| (separatorSpace > 0)
|| abilityItem.isHiddenSpacerForcedShow
property bool neighbourSeparator: rightSpacer ? abilityItem.headItemIsSeparator : abilityItem.tailItemIsSeparator
property bool neighbourSeparator: rightSpacer ? abilityItem.headItemIsVisibleSeparator : abilityItem.tailItemIsVisibleSeparator
property bool rightSpacer: false
property int separatorSpace: neighbourSeparator && !abilityItem.isSeparator && abilityItem.abilities.parabolic.isEnabled

View File

@ -51,7 +51,7 @@ AbilityItem.BasicItem {
isMonochromaticForcedContentItem: plasmoid.configuration.forceMonochromaticIcons
isSeparatorHidden: isSeparator && (itemIndex > taskItem.abilities.indexer.lastVisibleItemIndex)
isSeparatorHidden: isSeparator && (lastValidIndex > taskItem.abilities.indexer.lastVisibleItemIndex)
isSeparatorInRealLength: isSeparator && root.dragSource
containsMouse: taskMouseArea.containsMouse || parabolicAreaContainsMouse