Switched to qmlformat.

This commit is contained in:
ItsLemmy
2025-11-16 17:07:03 -05:00
parent 32905224b9
commit 3ff5b7639f
223 changed files with 9970 additions and 9658 deletions
+15 -16
View File
@@ -3,13 +3,12 @@ import Quickshell
import Quickshell.Wayland
import qs.Commons
/**
* BarExclusionZone - Invisible PanelWindow that reserves exclusive space for the bar
*
* This is a minimal window that works with the compositor to reserve space,
* while the actual bar UI is rendered in NFullScreenWindow.
*/
* BarExclusionZone - Invisible PanelWindow that reserves exclusive space for the bar
*
* This is a minimal window that works with the compositor to reserve space,
* while the actual bar UI is rendered in NFullScreenWindow.
*/
PanelWindow {
id: root
@@ -46,11 +45,11 @@ PanelWindow {
// Vertical bar: reserve bar height + margin on the anchored edge only
if (barFloating) {
// For left bar, reserve left margin; for right bar, reserve right margin
return Style.barHeight + barMarginH
return Style.barHeight + barMarginH;
}
return Style.barHeight
return Style.barHeight;
}
return 0 // Auto-width when left/right anchors are true
return 0; // Auto-width when left/right anchors are true
}
implicitHeight: {
@@ -58,17 +57,17 @@ PanelWindow {
// Horizontal bar: reserve bar height + margin on the anchored edge only
if (barFloating) {
// For top bar, reserve top margin; for bottom bar, reserve bottom margin
return Style.barHeight + barMarginV
return Style.barHeight + barMarginV;
}
return Style.barHeight
return Style.barHeight;
}
return 0 // Auto-height when top/bottom anchors are true
return 0; // Auto-height when top/bottom anchors are true
}
Component.onCompleted: {
Logger.d("BarExclusionZone", "Created for screen:", screen?.name)
Logger.d("BarExclusionZone", " Position:", barPosition, "Exclusive:", exclusive, "Floating:", barFloating)
Logger.d("BarExclusionZone", " Anchors - top:", anchors.top, "bottom:", anchors.bottom, "left:", anchors.left, "right:", anchors.right)
Logger.d("BarExclusionZone", " Size:", width, "x", height, "implicitWidth:", implicitWidth, "implicitHeight:", implicitHeight)
Logger.d("BarExclusionZone", "Created for screen:", screen?.name);
Logger.d("BarExclusionZone", " Position:", barPosition, "Exclusive:", exclusive, "Floating:", barFloating);
Logger.d("BarExclusionZone", " Anchors - top:", anchors.top, "bottom:", anchors.bottom, "left:", anchors.left, "right:", anchors.right);
Logger.d("BarExclusionZone", " Size:", width, "x", height, "implicitWidth:", implicitWidth, "implicitHeight:", implicitHeight);
}
}
+3 -3
View File
@@ -92,19 +92,19 @@ Item {
function show() {
if (pillLoader.item && pillLoader.item.show) {
pillLoader.item.show()
pillLoader.item.show();
}
}
function hide() {
if (pillLoader.item && pillLoader.item.hide) {
pillLoader.item.hide()
pillLoader.item.hide();
}
}
function showDelayed() {
if (pillLoader.item && pillLoader.item.showDelayed) {
pillLoader.item.showDelayed()
pillLoader.item.showDelayed();
}
}
}
+45 -45
View File
@@ -45,18 +45,18 @@ Item {
readonly property real iconSize: {
switch (root.density) {
case "compact":
return Math.max(1, Math.round(pillHeight * 0.65))
return Math.max(1, Math.round(pillHeight * 0.65));
default:
return Math.max(1, Math.round(pillHeight * 0.48))
return Math.max(1, Math.round(pillHeight * 0.48));
}
}
readonly property real textSize: {
switch (root.density) {
case "compact":
return Math.max(1, Math.round(pillHeight * 0.45))
return Math.max(1, Math.round(pillHeight * 0.45));
default:
return Math.max(1, Math.round(pillHeight * 0.33))
return Math.max(1, Math.round(pillHeight * 0.33));
}
}
@@ -67,7 +67,7 @@ Item {
target: root
function onTooltipTextChanged() {
if (hovered) {
TooltipService.updateText(root.tooltipText)
TooltipService.updateText(root.tooltipText);
}
}
}
@@ -97,13 +97,13 @@ Item {
anchors.verticalCenter: parent.verticalCenter
x: {
// Better text horizontal centering
var centerX = (parent.width - width) / 2
var offset = oppositeDirection ? Style.marginXS : -Style.marginXS
var centerX = (parent.width - width) / 2;
var offset = oppositeDirection ? Style.marginXS : -Style.marginXS;
if (forceOpen) {
// If its force open, the icon disc background is the same color as the bg pill move text slightly
offset += oppositeDirection ? -Style.marginXXS : Style.marginXXS
offset += oppositeDirection ? -Style.marginXXS : Style.marginXXS;
}
return centerX + offset
return centerX + offset;
}
text: root.text + root.suffix
family: Settings.data.ui.fontFixed
@@ -179,11 +179,11 @@ Item {
easing.type: Easing.OutCubic
}
onStarted: {
showPill = true
showPill = true;
}
onStopped: {
delayedHideAnim.start()
root.shown()
delayedHideAnim.start();
root.shown();
}
}
@@ -195,7 +195,7 @@ Item {
}
ScriptAction {
script: if (shouldAnimateHide) {
hideAnim.start()
hideAnim.start();
}
}
}
@@ -220,9 +220,9 @@ Item {
easing.type: Easing.InCubic
}
onStopped: {
showPill = false
shouldAnimateHide = false
root.hidden()
showPill = false;
shouldAnimateHide = false;
root.hidden();
}
}
@@ -231,7 +231,7 @@ Item {
interval: Style.pillDelay
onTriggered: {
if (!showPill) {
showAnim.start()
showAnim.start();
}
}
}
@@ -241,31 +241,31 @@ Item {
hoverEnabled: true
acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton
onEntered: {
hovered = true
root.entered()
TooltipService.show(Screen, pill, root.tooltipText, BarService.getTooltipDirection(), Style.tooltipDelayLong)
hovered = true;
root.entered();
TooltipService.show(Screen, pill, root.tooltipText, BarService.getTooltipDirection(), Style.tooltipDelayLong);
if (forceClose) {
return
return;
}
if (!forceOpen) {
showDelayed()
showDelayed();
}
}
onExited: {
hovered = false
root.exited()
hovered = false;
root.exited();
if (!forceOpen && !forceClose) {
hide()
hide();
}
TooltipService.hide()
TooltipService.hide();
}
onClicked: function (mouse) {
if (mouse.button === Qt.LeftButton) {
root.clicked()
root.clicked();
} else if (mouse.button === Qt.RightButton) {
root.rightClicked()
root.rightClicked();
} else if (mouse.button === Qt.MiddleButton) {
root.middleClicked()
root.middleClicked();
}
}
onWheel: wheel => root.wheel(wheel.angleDelta.y)
@@ -273,43 +273,43 @@ Item {
function show() {
if (!showPill) {
shouldAnimateHide = autoHide
showAnim.start()
shouldAnimateHide = autoHide;
showAnim.start();
} else {
hideAnim.stop()
delayedHideAnim.restart()
hideAnim.stop();
delayedHideAnim.restart();
}
}
function hide() {
if (forceOpen) {
return
return;
}
if (showPill) {
hideAnim.start()
hideAnim.start();
}
showTimer.stop()
showTimer.stop();
}
function showDelayed() {
if (!showPill) {
shouldAnimateHide = autoHide
showTimer.start()
shouldAnimateHide = autoHide;
showTimer.start();
} else {
hideAnim.stop()
delayedHideAnim.restart()
hideAnim.stop();
delayedHideAnim.restart();
}
}
onForceOpenChanged: {
if (forceOpen) {
// Immediately lock open without animations
showAnim.stop()
hideAnim.stop()
delayedHideAnim.stop()
showPill = true
showAnim.stop();
hideAnim.stop();
delayedHideAnim.stop();
showPill = true;
} else {
hide()
hide();
}
}
}
+44 -44
View File
@@ -55,18 +55,18 @@ Item {
readonly property real iconSize: {
switch (root.density) {
case "compact":
return Math.max(1, Math.round(pillHeight * 0.65))
return Math.max(1, Math.round(pillHeight * 0.65));
default:
return Math.max(1, Math.round(pillHeight * 0.48))
return Math.max(1, Math.round(pillHeight * 0.48));
}
}
readonly property real textSize: {
switch (root.density) {
case "compact":
return Math.max(1, Math.round(pillHeight * 0.38))
return Math.max(1, Math.round(pillHeight * 0.38));
default:
return Math.max(1, Math.round(pillHeight * 0.33))
return Math.max(1, Math.round(pillHeight * 0.33));
}
}
@@ -78,7 +78,7 @@ Item {
target: root
function onTooltipTextChanged() {
if (hovered) {
TooltipService.updateText(root.tooltipText)
TooltipService.updateText(root.tooltipText);
}
}
}
@@ -123,11 +123,11 @@ Item {
visible: revealed
function getVerticalCenterOffset() {
var offset = openDownward ? Math.round(pillPaddingVertical * 0.75) : -Math.round(pillPaddingVertical * 0.75)
var offset = openDownward ? Math.round(pillPaddingVertical * 0.75) : -Math.round(pillPaddingVertical * 0.75);
if (forceOpen) {
offset += oppositeDirection ? -Style.marginXXS : Style.marginXXS
offset += oppositeDirection ? -Style.marginXXS : Style.marginXXS;
}
return offset
return offset;
}
}
Behavior on width {
@@ -212,11 +212,11 @@ Item {
easing.type: Easing.OutCubic
}
onStarted: {
showPill = true
showPill = true;
}
onStopped: {
delayedHideAnim.start()
root.shown()
delayedHideAnim.start();
root.shown();
}
}
@@ -228,7 +228,7 @@ Item {
}
ScriptAction {
script: if (shouldAnimateHide) {
hideAnim.start()
hideAnim.start();
}
}
}
@@ -261,9 +261,9 @@ Item {
easing.type: Easing.InCubic
}
onStopped: {
showPill = false
shouldAnimateHide = false
root.hidden()
showPill = false;
shouldAnimateHide = false;
root.hidden();
}
}
@@ -272,7 +272,7 @@ Item {
interval: Style.pillDelay
onTriggered: {
if (!showPill) {
showAnim.start()
showAnim.start();
}
}
}
@@ -282,31 +282,31 @@ Item {
hoverEnabled: true
acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton
onEntered: {
hovered = true
root.entered()
TooltipService.show(Screen, pill, root.tooltipText, BarService.getTooltipDirection(), Style.tooltipDelayLong)
hovered = true;
root.entered();
TooltipService.show(Screen, pill, root.tooltipText, BarService.getTooltipDirection(), Style.tooltipDelayLong);
if (forceClose) {
return
return;
}
if (!forceOpen) {
showDelayed()
showDelayed();
}
}
onExited: {
hovered = false
root.exited()
hovered = false;
root.exited();
if (!forceOpen && !forceClose) {
hide()
hide();
}
TooltipService.hide()
TooltipService.hide();
}
onClicked: function (mouse) {
if (mouse.button === Qt.LeftButton) {
root.clicked()
root.clicked();
} else if (mouse.button === Qt.RightButton) {
root.rightClicked()
root.rightClicked();
} else if (mouse.button === Qt.MiddleButton) {
root.middleClicked()
root.middleClicked();
}
}
onWheel: wheel => root.wheel(wheel.angleDelta.y)
@@ -314,43 +314,43 @@ Item {
function show() {
if (!showPill) {
shouldAnimateHide = autoHide
showAnim.start()
shouldAnimateHide = autoHide;
showAnim.start();
} else {
hideAnim.stop()
delayedHideAnim.restart()
hideAnim.stop();
delayedHideAnim.restart();
}
}
function hide() {
if (forceOpen) {
return
return;
}
if (showPill) {
hideAnim.start()
hideAnim.start();
}
showTimer.stop()
showTimer.stop();
}
function showDelayed() {
if (!showPill) {
shouldAnimateHide = autoHide
showTimer.start()
shouldAnimateHide = autoHide;
showTimer.start();
} else {
hideAnim.stop()
delayedHideAnim.restart()
hideAnim.stop();
delayedHideAnim.restart();
}
}
onForceOpenChanged: {
if (forceOpen) {
// Immediately lock open without animations
showAnim.stop()
hideAnim.stop()
delayedHideAnim.stop()
showPill = true
showAnim.stop();
hideAnim.stop();
delayedHideAnim.stop();
showPill = true;
} else {
hide()
hide();
}
}
}
+12 -13
View File
@@ -1,7 +1,7 @@
import QtQuick
import Quickshell
import qs.Services.UI
import qs.Commons
import qs.Services.UI
Item {
id: root
@@ -25,7 +25,7 @@ Item {
visible: loader.item ? ((loader.item.opacity > 0.0) || (loader.item.hasOwnProperty("hideMode") && loader.item.hideMode === "transparent")) : false
function getImplicitSize(item, prop) {
return (item && item.visible) ? Math.round(item[prop]) : 0
return (item && item.visible) ? Math.round(item[prop]) : 0;
}
Loader {
@@ -36,42 +36,41 @@ Item {
onLoaded: {
if (!item)
return
Logger.d("BarWidgetLoader", "Loading widget", widgetId, "on screen:", widgetScreen.name)
return;
Logger.d("BarWidgetLoader", "Loading widget", widgetId, "on screen:", widgetScreen.name);
// Apply properties to loaded widget
for (var prop in widgetProps) {
if (item.hasOwnProperty(prop)) {
item[prop] = widgetProps[prop]
item[prop] = widgetProps[prop];
}
}
// Set screen property
if (item.hasOwnProperty("screen")) {
item.screen = widgetScreen
item.screen = widgetScreen;
}
// Set scaling property
if (item.hasOwnProperty("scaling")) {
item.scaling = Qt.binding(function () {
return root.scaling
})
return root.scaling;
});
}
// Register this widget instance with BarService
BarService.registerWidget(widgetScreen.name, section, widgetId, sectionIndex, item)
BarService.registerWidget(widgetScreen.name, section, widgetId, sectionIndex, item);
// Call custom onLoaded if it exists
if (item.hasOwnProperty("onLoaded")) {
item.onLoaded()
item.onLoaded();
}
}
Component.onDestruction: {
// Unregister when destroyed
if (widgetScreen && section) {
BarService.unregisterWidget(widgetScreen.name, section, widgetId, sectionIndex)
BarService.unregisterWidget(widgetScreen.name, section, widgetId, sectionIndex);
}
}
}
@@ -79,7 +78,7 @@ Item {
// Error handling
Component.onCompleted: {
if (!BarWidgetRegistry.hasWidget(widgetId)) {
Logger.w("BarWidgetLoader", "Widget not found in registry:", widgetId)
Logger.w("BarWidgetLoader", "Widget not found in registry:", widgetId);
}
}
}
+100 -100
View File
@@ -25,20 +25,20 @@ PopupWindow {
// Compute if current tray item is pinned
readonly property bool isPinned: {
if (!trayItem || widgetSection === "" || widgetIndex < 0)
return false
var widgets = Settings.data.bar.widgets[widgetSection]
return false;
var widgets = Settings.data.bar.widgets[widgetSection];
if (!widgets || widgetIndex >= widgets.length)
return false
var widgetSettings = widgets[widgetIndex]
return false;
var widgetSettings = widgets[widgetIndex];
if (!widgetSettings || widgetSettings.id !== "Tray")
return false
var pinnedList = widgetSettings.pinned || []
const itemName = trayItem.tooltipTitle || trayItem.name || trayItem.id || ""
return false;
var pinnedList = widgetSettings.pinned || [];
const itemName = trayItem.tooltipTitle || trayItem.name || trayItem.id || "";
for (var i = 0; i < pinnedList.length; i++) {
if (pinnedList[i] === itemName)
return true
return true;
}
return false
return false;
}
readonly property int menuWidth: 220
@@ -53,47 +53,47 @@ PopupWindow {
anchor.rect.x: anchorX
anchor.rect.y: {
if (isSubMenu) {
const offsetY = Settings.data.bar.position === "bottom" ? -10 : 10
return anchorY + offsetY
const offsetY = Settings.data.bar.position === "bottom" ? -10 : 10;
return anchorY + offsetY;
}
return anchorY + Settings.data.bar.position === "bottom" ? -implicitHeight : Style.barHeight
return anchorY + Settings.data.bar.position === "bottom" ? -implicitHeight : Style.barHeight;
}
function showAt(item, x, y) {
if (!item) {
Logger.w("TrayMenu", "anchorItem is undefined, won't show menu.")
return
Logger.w("TrayMenu", "anchorItem is undefined, won't show menu.");
return;
}
if (!opener.children || opener.children.values.length === 0) {
//Logger.w("TrayMenu", "Menu not ready, delaying show")
Qt.callLater(() => showAt(item, x, y))
return
Qt.callLater(() => showAt(item, x, y));
return;
}
anchorItem = item
anchorX = x
anchorY = y
anchorItem = item;
anchorX = x;
anchorY = y;
visible = true
forceActiveFocus()
visible = true;
forceActiveFocus();
// Force update after showing.
Qt.callLater(() => {
root.anchor.updateAnchor()
})
root.anchor.updateAnchor();
});
}
function hideMenu() {
visible = false
visible = false;
// Clean up all submenus recursively
for (var i = 0; i < columnLayout.children.length; i++) {
const child = columnLayout.children[i]
const child = columnLayout.children[i];
if (child?.subMenu) {
child.subMenu.hideMenu()
child.subMenu.destroy()
child.subMenu = null
child.subMenu.hideMenu();
child.subMenu.destroy();
child.subMenu = null;
}
}
}
@@ -166,11 +166,11 @@ PopupWindow {
Layout.preferredWidth: parent.width
Layout.preferredHeight: {
if (modelData?.isSeparator) {
return 8
return 8;
} else {
// Calculate based on text content
const textHeight = text.contentHeight || (Style.fontSizeS * 1.2)
return Math.max(28, textHeight + (Style.marginS * 2))
const textHeight = text.contentHeight || (Style.fontSizeS * 1.2);
return Math.max(28, textHeight + (Style.marginS * 2));
}
}
@@ -237,31 +237,31 @@ PopupWindow {
// Click on items with children toggles submenu
if (entry.subMenu) {
// Close existing submenu
entry.subMenu.hideMenu()
entry.subMenu.destroy()
entry.subMenu = null
entry.subMenu.hideMenu();
entry.subMenu.destroy();
entry.subMenu = null;
} else {
// Close any other open submenus first
for (var i = 0; i < columnLayout.children.length; i++) {
const sibling = columnLayout.children[i]
const sibling = columnLayout.children[i];
if (sibling !== entry && sibling.subMenu) {
sibling.subMenu.hideMenu()
sibling.subMenu.destroy()
sibling.subMenu = null
sibling.subMenu.hideMenu();
sibling.subMenu.destroy();
sibling.subMenu = null;
}
}
// Determine submenu opening direction
let openLeft = false
const barPosition = Settings.data.bar.position
const globalPos = entry.mapToItem(null, 0, 0)
let openLeft = false;
const barPosition = Settings.data.bar.position;
const globalPos = entry.mapToItem(null, 0, 0);
if (barPosition === "right") {
openLeft = true
openLeft = true;
} else if (barPosition === "left") {
openLeft = false
openLeft = false;
} else {
openLeft = (root.widgetSection === "right")
openLeft = (root.widgetSection === "right");
}
// Open new submenu
@@ -269,30 +269,30 @@ PopupWindow {
"menu": modelData,
"isSubMenu": true,
"screen": root.screen
})
});
if (entry.subMenu) {
const overlap = 60
entry.subMenu.anchorItem = entry
entry.subMenu.anchorX = openLeft ? -overlap : overlap
entry.subMenu.anchorY = 0
entry.subMenu.visible = true
const overlap = 60;
entry.subMenu.anchorItem = entry;
entry.subMenu.anchorX = openLeft ? -overlap : overlap;
entry.subMenu.anchorY = 0;
entry.subMenu.visible = true;
// Force anchor update with new position
Qt.callLater(() => {
entry.subMenu.anchor.updateAnchor()
})
entry.subMenu.anchor.updateAnchor();
});
}
}
} else {
// Click on regular items triggers them
modelData.triggered()
root.hideMenu()
modelData.triggered();
root.hideMenu();
// Close the drawer if it's open
if (root.screen) {
const panel = PanelService.getPanel("trayDrawerPanel", root.screen)
const panel = PanelService.getPanel("trayDrawerPanel", root.screen);
if (panel && panel.visible) {
panel.close()
panel.close();
}
}
}
@@ -303,8 +303,8 @@ PopupWindow {
Component.onDestruction: {
if (subMenu) {
subMenu.destroy()
subMenu = null
subMenu.destroy();
subMenu = null;
}
}
}
@@ -351,9 +351,9 @@ PopupWindow {
onClicked: {
if (root.isPinned) {
root.removeFromPinned()
root.removeFromPinned();
} else {
root.addToPinned()
root.addToPinned();
}
}
}
@@ -363,72 +363,72 @@ PopupWindow {
function addToPinned() {
if (!trayItem || widgetSection === "" || widgetIndex < 0) {
Logger.w("TrayMenu", "Cannot pin: missing tray item or widget info")
return
Logger.w("TrayMenu", "Cannot pin: missing tray item or widget info");
return;
}
const itemName = trayItem.tooltipTitle || trayItem.name || trayItem.id || ""
const itemName = trayItem.tooltipTitle || trayItem.name || trayItem.id || "";
if (!itemName) {
Logger.w("TrayMenu", "Cannot pin: tray item has no name")
return
Logger.w("TrayMenu", "Cannot pin: tray item has no name");
return;
}
var widgets = Settings.data.bar.widgets[widgetSection]
var widgets = Settings.data.bar.widgets[widgetSection];
if (!widgets || widgetIndex >= widgets.length) {
Logger.w("TrayMenu", "Cannot pin: invalid widget index")
return
Logger.w("TrayMenu", "Cannot pin: invalid widget index");
return;
}
var widgetSettings = widgets[widgetIndex]
var widgetSettings = widgets[widgetIndex];
if (!widgetSettings || widgetSettings.id !== "Tray") {
Logger.w("TrayMenu", "Cannot pin: widget is not a Tray widget")
return
Logger.w("TrayMenu", "Cannot pin: widget is not a Tray widget");
return;
}
var pinnedList = widgetSettings.pinned || []
var newPinned = pinnedList.slice()
newPinned.push(itemName)
var newSettings = Object.assign({}, widgetSettings)
newSettings.pinned = newPinned
widgets[widgetIndex] = newSettings
Settings.data.bar.widgets[widgetSection] = widgets
Settings.saveImmediate()
var pinnedList = widgetSettings.pinned || [];
var newPinned = pinnedList.slice();
newPinned.push(itemName);
var newSettings = Object.assign({}, widgetSettings);
newSettings.pinned = newPinned;
widgets[widgetIndex] = newSettings;
Settings.data.bar.widgets[widgetSection] = widgets;
Settings.saveImmediate();
// Close drawer when pinning (drawer needs to resize)
if (screen) {
const panel = PanelService.getPanel("trayDrawerPanel", screen)
const panel = PanelService.getPanel("trayDrawerPanel", screen);
if (panel)
panel.close()
panel.close();
}
}
function removeFromPinned() {
if (!trayItem || widgetSection === "" || widgetIndex < 0) {
Logger.w("TrayMenu", "Cannot unpin: missing tray item or widget info")
return
Logger.w("TrayMenu", "Cannot unpin: missing tray item or widget info");
return;
}
const itemName = trayItem.tooltipTitle || trayItem.name || trayItem.id || ""
const itemName = trayItem.tooltipTitle || trayItem.name || trayItem.id || "";
if (!itemName) {
Logger.w("TrayMenu", "Cannot unpin: tray item has no name")
return
Logger.w("TrayMenu", "Cannot unpin: tray item has no name");
return;
}
var widgets = Settings.data.bar.widgets[widgetSection]
var widgets = Settings.data.bar.widgets[widgetSection];
if (!widgets || widgetIndex >= widgets.length) {
Logger.w("TrayMenu", "Cannot unpin: invalid widget index")
return
Logger.w("TrayMenu", "Cannot unpin: invalid widget index");
return;
}
var widgetSettings = widgets[widgetIndex]
var widgetSettings = widgets[widgetIndex];
if (!widgetSettings || widgetSettings.id !== "Tray") {
Logger.w("TrayMenu", "Cannot unpin: widget is not a Tray widget")
return
Logger.w("TrayMenu", "Cannot unpin: widget is not a Tray widget");
return;
}
var pinnedList = widgetSettings.pinned || []
var newPinned = []
var pinnedList = widgetSettings.pinned || [];
var newPinned = [];
for (var i = 0; i < pinnedList.length; i++) {
if (pinnedList[i] !== itemName) {
newPinned.push(pinnedList[i])
newPinned.push(pinnedList[i]);
}
}
var newSettings = Object.assign({}, widgetSettings)
newSettings.pinned = newPinned
widgets[widgetIndex] = newSettings
Settings.data.bar.widgets[widgetSection] = widgets
Settings.saveImmediate()
var newSettings = Object.assign({}, widgetSettings);
newSettings.pinned = newPinned;
widgets[widgetIndex] = newSettings;
Settings.data.bar.widgets[widgetSection] = widgets;
Settings.saveImmediate();
}
}