diff --git a/dots/.config/quickshell/ii/modules/cheatsheet/Cheatsheet.qml b/dots/.config/quickshell/ii/modules/cheatsheet/Cheatsheet.qml index eaa59ee3d..00dac8b89 100644 --- a/dots/.config/quickshell/ii/modules/cheatsheet/Cheatsheet.qml +++ b/dots/.config/quickshell/ii/modules/cheatsheet/Cheatsheet.qml @@ -5,6 +5,7 @@ import QtQuick import QtQuick.Controls import QtQuick.Layouts import Qt5Compat.GraphicalEffects +import Qt.labs.synchronizer import Quickshell.Io import Quickshell import Quickshell.Wayland @@ -22,7 +23,6 @@ Scope { // Scope "name": Translation.tr("Elements") }, ] - property int selectedTab: 0 Loader { id: cheatsheetLoader @@ -31,6 +31,7 @@ Scope { // Scope sourceComponent: PanelWindow { // Window id: cheatsheetRoot visible: cheatsheetLoader.active + property int selectedTab: 0 anchors { top: true @@ -85,16 +86,16 @@ Scope { // Scope } if (event.modifiers === Qt.ControlModifier) { if (event.key === Qt.Key_PageDown) { - root.selectedTab = Math.min(root.selectedTab + 1, root.tabButtonList.length - 1); + cheatsheetRoot.selectedTab = Math.min(cheatsheetRoot.selectedTab + 1, root.tabButtonList.length - 1); event.accepted = true; } else if (event.key === Qt.Key_PageUp) { - root.selectedTab = Math.max(root.selectedTab - 1, 0); + cheatsheetRoot.selectedTab = Math.max(cheatsheetRoot.selectedTab - 1, 0); event.accepted = true; } else if (event.key === Qt.Key_Tab) { - root.selectedTab = (root.selectedTab + 1) % root.tabButtonList.length; + cheatsheetRoot.selectedTab = (cheatsheetRoot.selectedTab + 1) % root.tabButtonList.length; event.accepted = true; } else if (event.key === Qt.Key_Backtab) { - root.selectedTab = (root.selectedTab - 1 + root.tabButtonList.length) % root.tabButtonList.length; + cheatsheetRoot.selectedTab = (cheatsheetRoot.selectedTab - 1 + root.tabButtonList.length) % root.tabButtonList.length; event.accepted = true; } } @@ -140,9 +141,8 @@ Scope { // Scope PrimaryTabBar { // Tab strip id: tabBar tabButtonList: root.tabButtonList - externalTrackedTab: root.selectedTab - function onCurrentIndexChanged(currentIndex) { - root.selectedTab = currentIndex; + Synchronizer on currentIndex { + property alias source: cheatsheetRoot.selectedTab } } @@ -164,12 +164,12 @@ Scope { // Scope animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this) } - currentIndex: tabBar.externalTrackedTab + currentIndex: cheatsheetRoot.selectedTab onCurrentIndexChanged: { contentWidthBehavior.enabled = true; contentHeightBehavior.enabled = true; tabBar.enableIndicatorAnimation = true; - root.selectedTab = currentIndex; + cheatsheetRoot.selectedTab = currentIndex; } clip: true diff --git a/dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabBar.qml b/dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabBar.qml index 7d792de56..474bdc591 100644 --- a/dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabBar.qml +++ b/dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabBar.qml @@ -3,16 +3,20 @@ import qs.services import QtQuick import QtQuick.Controls import QtQuick.Layouts +import Qt.labs.synchronizer ColumnLayout { id: root spacing: 0 required property var tabButtonList // Something like [{"icon": "notifications", "name": Translation.tr("Notifications")}, {"icon": "volume_up", "name": Translation.tr("Volume mixer")}] - required property var externalTrackedTab + property int currentIndex property bool enableIndicatorAnimation: false property color colIndicator: Appearance?.colors.colPrimary ?? "#65558F" property color colBorder: Appearance?.m3colors.m3outlineVariant ?? "#C6C6D0" - signal currentIndexChanged(int index) + + onCurrentIndexChanged: { + enableIndicatorAnimation = true + } property bool centerTabBar: parent.width > 500 Layout.fillWidth: !centerTabBar @@ -22,9 +26,8 @@ ColumnLayout { TabBar { id: tabBar Layout.fillWidth: true - currentIndex: root.externalTrackedTab - onCurrentIndexChanged: { - root.onCurrentIndexChanged(currentIndex) + Synchronizer on currentIndex { + property alias source: root.currentIndex } background: Item { @@ -42,10 +45,11 @@ ColumnLayout { Repeater { model: root.tabButtonList delegate: PrimaryTabButton { - selected: (index == root.externalTrackedTab) + selected: (index == root.currentIndex) buttonText: modelData.name buttonIcon: modelData.icon minimumWidth: 160 + onClicked: root.currentIndex = index } } } @@ -54,12 +58,6 @@ ColumnLayout { id: tabIndicator Layout.fillWidth: true height: 3 - Connections { - target: root - function onExternalTrackedTabChanged() { - root.enableIndicatorAnimation = true - } - } Rectangle { id: indicator diff --git a/dots/.config/quickshell/ii/modules/regionSelector/RegionSelection.qml b/dots/.config/quickshell/ii/modules/regionSelector/RegionSelection.qml index 05610f9dd..5ecce47ba 100644 --- a/dots/.config/quickshell/ii/modules/regionSelector/RegionSelection.qml +++ b/dots/.config/quickshell/ii/modules/regionSelector/RegionSelection.qml @@ -5,11 +5,11 @@ import qs.modules.common.widgets import qs.services import QtQuick import QtQuick.Controls +import Qt.labs.synchronizer import Quickshell import Quickshell.Io import Quickshell.Wayland import Quickshell.Hyprland -import Qt.labs.synchronizer PanelWindow { id: root diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/SidebarLeftContent.qml b/dots/.config/quickshell/ii/modules/sidebarLeft/SidebarLeftContent.qml index ae19f07a8..ff1c34509 100644 --- a/dots/.config/quickshell/ii/modules/sidebarLeft/SidebarLeftContent.qml +++ b/dots/.config/quickshell/ii/modules/sidebarLeft/SidebarLeftContent.qml @@ -5,6 +5,7 @@ import QtQuick import QtQuick.Controls import QtQuick.Layouts import Qt5Compat.GraphicalEffects +import Qt.labs.synchronizer Item { id: root @@ -58,9 +59,8 @@ Item { id: tabBar visible: root.tabButtonList.length > 1 tabButtonList: root.tabButtonList - externalTrackedTab: root.selectedTab - function onCurrentIndexChanged(currentIndex) { - root.selectedTab = currentIndex + Synchronizer on currentIndex { + property alias source: root.selectedTab } } @@ -71,7 +71,7 @@ Item { Layout.fillHeight: true spacing: 10 - currentIndex: tabBar.externalTrackedTab + currentIndex: root.selectedTab onCurrentIndexChanged: { tabBar.enableIndicatorAnimation = true root.selectedTab = currentIndex