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:
@ -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"
|
||||
|
@ -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 }
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user