1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-06 05:28:29 -04:00

dankbar: fix widget registration during visibility changes

fixes #1956
This commit is contained in:
bbedward
2026-07-02 15:07:43 -04:00
parent db3615805c
commit 70fa0ec903
16 changed files with 40 additions and 8 deletions
@@ -24,6 +24,8 @@ FloatingWindow {
color: Theme.surfaceContainer color: Theme.surfaceContainer
visible: false visible: false
onClosed: visible = false
FocusScope { FocusScope {
id: contentFocusScope id: contentFocusScope
anchors.fill: parent anchors.fill: parent
@@ -41,6 +41,8 @@ FloatingWindow {
color: Theme.surfaceContainer color: Theme.surfaceContainer
visible: false visible: false
onClosed: close()
onVisibleChanged: { onVisibleChanged: {
if (visible) { if (visible) {
if (parentModal && "shouldHaveFocus" in parentModal) { if (parentModal && "shouldHaveFocus" in parentModal) {
@@ -93,6 +93,8 @@ FloatingWindow {
color: Theme.surfaceContainer color: Theme.surfaceContainer
visible: false visible: false
onClosed: visible = false
Process { Process {
id: cheatsheetProcess id: cheatsheetProcess
running: false running: false
+2
View File
@@ -32,6 +32,8 @@ FloatingWindow {
color: Theme.surfaceContainer color: Theme.surfaceContainer
visible: false visible: false
onClosed: hide()
onVisibleChanged: { onVisibleChanged: {
if (visible) { if (visible) {
Qt.callLater(focusContent); Qt.callLater(focusContent);
@@ -92,6 +92,8 @@ FloatingWindow {
color: Theme.surfaceContainer color: Theme.surfaceContainer
visible: false visible: false
onClosed: hide()
onIsCompactModeChanged: { onIsCompactModeChanged: {
enableAnimations = false; enableAnimations = false;
if (!isCompactMode) { if (!isCompactMode) {
+2
View File
@@ -32,6 +32,8 @@ FloatingWindow {
color: Theme.surfaceContainer color: Theme.surfaceContainer
visible: false visible: false
onClosed: hide()
function resetForm() { function resetForm() {
nameInput.text = ""; nameInput.text = "";
appIdInput.text = ""; appIdInput.text = "";
@@ -18,6 +18,8 @@ FloatingWindow {
color: Theme.surfaceContainer color: Theme.surfaceContainer
visible: false visible: false
onClosed: hide()
function show(name) { function show(name) {
nameInput.text = name; nameInput.text = name;
visible = true; visible = true;
+6 -5
View File
@@ -48,7 +48,7 @@ Item {
for (var i = 0; i < centerRepeater.count; i++) { for (var i = 0; i < centerRepeater.count; i++) {
const loader = centerRepeater.itemAt(i); const loader = centerRepeater.itemAt(i);
if (loader && loader.active && loader.item) { if (loader && loader.active && loader.item && loader.item.visible) {
centerWidgets.push(loader.item); centerWidgets.push(loader.item);
totalWidgets++; totalWidgets++;
totalSize += isVertical ? loader.item.height : loader.item.width; totalSize += isVertical ? loader.item.height : loader.item.width;
@@ -105,14 +105,14 @@ Item {
if (!wrapper) if (!wrapper)
continue; continue;
if (isOddConfigured && i === configuredMiddlePos && wrapper.active && wrapper.item) if (isOddConfigured && i === configuredMiddlePos && wrapper.active && wrapper.item && wrapper.item.visible)
configuredMiddleWidget = wrapper.item; configuredMiddleWidget = wrapper.item;
if (!isOddConfigured && i === configuredLeftPos && wrapper.active && wrapper.item) if (!isOddConfigured && i === configuredLeftPos && wrapper.active && wrapper.item && wrapper.item.visible)
configuredLeftWidget = wrapper.item; configuredLeftWidget = wrapper.item;
if (!isOddConfigured && i === configuredRightPos && wrapper.active && wrapper.item) if (!isOddConfigured && i === configuredRightPos && wrapper.active && wrapper.item && wrapper.item.visible)
configuredRightWidget = wrapper.item; configuredRightWidget = wrapper.item;
if (wrapper.active && wrapper.item) { if (wrapper.active && wrapper.item && wrapper.item.visible) {
centerWidgets.push(wrapper.item); centerWidgets.push(wrapper.item);
totalWidgets++; totalWidgets++;
totalSize += isVertical ? wrapper.item.height : wrapper.item.width; totalSize += isVertical ? wrapper.item.height : wrapper.item.width;
@@ -372,6 +372,7 @@ Item {
onContentItemReady: contentItem => { onContentItemReady: contentItem => {
contentItem.widthChanged.connect(() => layoutTimer.restart()); contentItem.widthChanged.connect(() => layoutTimer.restart());
contentItem.heightChanged.connect(() => layoutTimer.restart()); contentItem.heightChanged.connect(() => layoutTimer.restart());
contentItem.visibleChanged.connect(() => layoutTimer.restart());
layoutTimer.restart(); layoutTimer.restart();
} }
@@ -45,6 +45,7 @@ Item {
Item { Item {
readonly property real rowSpacing: parent.widgetSpacing readonly property real rowSpacing: parent.widgetSpacing
property var itemData: modelData property var itemData: modelData
visible: widgetLoader.active && widgetLoader.widgetEnabled
width: widgetLoader.item ? widgetLoader.item.width : 0 width: widgetLoader.item ? widgetLoader.item.width : 0
height: widgetLoader.item ? widgetLoader.item.height : 0 height: widgetLoader.item ? widgetLoader.item.height : 0
WidgetHost { WidgetHost {
@@ -92,6 +93,7 @@ Item {
width: parent.width width: parent.width
readonly property real columnSpacing: parent.widgetSpacing readonly property real columnSpacing: parent.widgetSpacing
property var itemData: modelData property var itemData: modelData
visible: widgetLoader.active && widgetLoader.widgetEnabled
height: widgetLoader.item ? widgetLoader.item.height : 0 height: widgetLoader.item ? widgetLoader.item.height : 0
WidgetHost { WidgetHost {
id: widgetLoader id: widgetLoader
@@ -47,6 +47,7 @@ Item {
Item { Item {
readonly property real rowSpacing: parent.widgetSpacing readonly property real rowSpacing: parent.widgetSpacing
property var itemData: modelData property var itemData: modelData
visible: widgetLoader.active && widgetLoader.widgetEnabled
width: widgetLoader.item ? widgetLoader.item.width : 0 width: widgetLoader.item ? widgetLoader.item.width : 0
height: widgetLoader.item ? widgetLoader.item.height : 0 height: widgetLoader.item ? widgetLoader.item.height : 0
WidgetHost { WidgetHost {
@@ -94,6 +95,7 @@ Item {
width: parent.width width: parent.width
readonly property real columnSpacing: parent.widgetSpacing readonly property real columnSpacing: parent.widgetSpacing
property var itemData: modelData property var itemData: modelData
visible: widgetLoader.active && widgetLoader.widgetEnabled
height: widgetLoader.item ? widgetLoader.item.height : 0 height: widgetLoader.item ? widgetLoader.item.height : 0
WidgetHost { WidgetHost {
id: widgetLoader id: widgetLoader
+5 -2
View File
@@ -26,6 +26,7 @@ Loader {
property bool isTopBarEdge: false property bool isTopBarEdge: false
property bool isBottomBarEdge: false property bool isBottomBarEdge: false
property string _registeredScreenName: "" property string _registeredScreenName: ""
property var _registeredItem: null
asynchronous: false asynchronous: false
@@ -227,15 +228,17 @@ Loader {
return; return;
_registeredScreenName = parentScreen.name; _registeredScreenName = parentScreen.name;
BarWidgetService.registerWidget(widgetId, _registeredScreenName, item); _registeredItem = item;
BarWidgetService.registerWidget(widgetId, _registeredScreenName, _registeredItem);
} }
function unregisterWidget() { function unregisterWidget() {
if (!widgetId || !_registeredScreenName) if (!widgetId || !_registeredScreenName)
return; return;
BarWidgetService.unregisterWidget(widgetId, _registeredScreenName); BarWidgetService.unregisterWidget(widgetId, _registeredScreenName, _registeredItem);
_registeredScreenName = ""; _registeredScreenName = "";
_registeredItem = null;
} }
function getWidgetComponent(widgetId, components) { function getWidgetComponent(widgetId, components) {
@@ -110,6 +110,8 @@ FloatingWindow {
color: Theme.surfaceContainer color: Theme.surfaceContainer
visible: false visible: false
onClosed: hide()
onVisibleChanged: { onVisibleChanged: {
if (visible) { if (visible) {
updateFilteredWidgets(); updateFilteredWidgets();
@@ -482,6 +482,8 @@ FloatingWindow {
color: Theme.surfaceContainer color: Theme.surfaceContainer
visible: false visible: false
onClosed: hide()
onVisibleChanged: { onVisibleChanged: {
if (visible) { if (visible) {
pendingInstallHandled = false; pendingInstallHandled = false;
@@ -115,6 +115,8 @@ FloatingWindow {
color: blurActive ? Theme.withAlpha(Theme.surfaceContainer, 0) : Theme.surfaceContainer color: blurActive ? Theme.withAlpha(Theme.surfaceContainer, 0) : Theme.surfaceContainer
visible: false visible: false
onClosed: hide()
onVisibleChanged: { onVisibleChanged: {
if (visible) { if (visible) {
Qt.callLater(() => { Qt.callLater(() => {
@@ -26,6 +26,8 @@ FloatingWindow {
color: "transparent" color: "transparent"
visible: false visible: false
onClosed: hide()
WindowBlur { WindowBlur {
targetWindow: root targetWindow: root
blurX: 0 blurX: 0
+3 -1
View File
@@ -27,13 +27,15 @@ Singleton {
widgetRegistered(widgetId, screenName); widgetRegistered(widgetId, screenName);
} }
function unregisterWidget(widgetId, screenName) { function unregisterWidget(widgetId, screenName, widgetRef) {
if (!widgetId || !screenName) if (!widgetId || !screenName)
return; return;
if (typeof widgetRegistry !== "object" || widgetRegistry === null) if (typeof widgetRegistry !== "object" || widgetRegistry === null)
return; return;
if (!widgetRegistry[widgetId]) if (!widgetRegistry[widgetId])
return; return;
if (widgetRef && widgetRegistry[widgetId][screenName] !== widgetRef)
return;
const nextRegistry = Object.assign({}, widgetRegistry); const nextRegistry = Object.assign({}, widgetRegistry);
const screenMap = (typeof nextRegistry[widgetId] === "object" && nextRegistry[widgetId] !== null) ? Object.assign({}, nextRegistry[widgetId]) : {}; const screenMap = (typeof nextRegistry[widgetId] === "object" && nextRegistry[widgetId] !== null) ? Object.assign({}, nextRegistry[widgetId]) : {};