diff --git a/containment/package/contents/ui/abilities/AppletsRecords.qml b/containment/package/contents/ui/abilities/AppletsRecords.qml new file mode 100644 index 000000000..afb35f6f9 --- /dev/null +++ b/containment/package/contents/ui/abilities/AppletsRecords.qml @@ -0,0 +1,80 @@ +/* +* Copyright 2020 Michail Vourlakos +* +* This file is part of Latte-Dock +* +* Latte-Dock is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License, or (at your option) any later version. +* +* Latte-Dock is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +import QtQuick 2.0 + +Item { + id: records + + property real maxInnerZoomFactor: 1.0 //! maximum inner zoom factor based on all applets + + property var applets: [] + + function indexOf(applet) { + var len = applets.length; + + for (var i=0; i=0) { + //! remove + applets.splice(ind, 1); + updateInnerZoomFactor(); + } + } + + function setInnerZoomFactor(applet, inner) { + var len = applets.length; + var ind = indexOf(applet); + + if (ind >=0) { + //! update + if(applets[ind].innerZoomFactor !== inner) { + applets[ind].innerZoomFactor = inner; + updateInnerZoomFactor(); + } + } else { + //! add + applets.push({id: applet, innerZoomFactor: inner}); + updateInnerZoomFactor(); + } + } + + function updateInnerZoomFactor() { + var len = applets.length; + var max = 1; + + for (var i=0; i max) { + max = applets[i].innerZoomFactor; + } + } + + maxInnerZoomFactor = max; + } +} diff --git a/containment/package/contents/ui/applet/AppletItem.qml b/containment/package/contents/ui/applet/AppletItem.qml index 61b994a6b..1f1364b5b 100644 --- a/containment/package/contents/ui/applet/AppletItem.qml +++ b/containment/package/contents/ui/applet/AppletItem.qml @@ -224,6 +224,7 @@ Item { property Item wrapperAlias: wrapper property Item animations: null + property Item appletsRecords: null property Item container: null property bool containsMouse: appletMouseArea.containsMouse /*|| appletMouseAreaBottom.containsMouse*/ @@ -525,6 +526,7 @@ Item { Component.onDestruction: { appletItem.animations.needBothAxis.removeEvent(appletItem); + appletItem.appletsRecords.removeApplet(appletItem); if (isSeparator){ parabolicManager.setSeparator(previousIndex, -1); diff --git a/containment/package/contents/ui/applet/communicator/Engine.qml b/containment/package/contents/ui/applet/communicator/Engine.qml index 205380781..cff56d029 100644 --- a/containment/package/contents/ui/applet/communicator/Engine.qml +++ b/containment/package/contents/ui/applet/communicator/Engine.qml @@ -80,6 +80,10 @@ Item{ Connections { target: requires + onInnerZoomFactorChanged: { + appletItem.appletsRecords.setInnerZoomFactor(appletItem, requires.innerZoomFactor); + } + onWindowsTrackingEnabledChanged: { if (requires.windowsTrackingEnabled && !mainCommunicator.windowsTrackingEnabledSent) { mainCommunicator.windowsTrackingEnabledSent = true; diff --git a/containment/package/contents/ui/main.qml b/containment/package/contents/ui/main.qml index 83c908d2c..a5a66a907 100644 --- a/containment/package/contents/ui/main.qml +++ b/containment/package/contents/ui/main.qml @@ -503,7 +503,7 @@ Item { property int tasksCount: latteApplet ? latteApplet.tasksCount : 0 - property real maxZoomFactor: zoomFactor//Math.max(zoomFactor, animations.maxZoomFactor) + property real maxZoomFactor: Math.max(zoomFactor, _appletsRecords.maxInnerZoomFactor) property rect screenGeometry: latteView ? latteView.screenGeometry : plasmoid.screenGeometry @@ -1532,6 +1532,7 @@ Item { id: appletContainerComponent Applet.AppletItem{ animations: _animations + appletsRecords: _appletsRecords container: _container } } @@ -1743,6 +1744,10 @@ Item { settings: universalSettings } + Ability.AppletsRecords { + id: _appletsRecords + } + Ability.AutoSize { id: _autosize container: _container