1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-01 19:18:28 -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
visible: false
onClosed: visible = false
FocusScope {
id: contentFocusScope
anchors.fill: parent
@@ -41,6 +41,8 @@ FloatingWindow {
color: Theme.surfaceContainer
visible: false
onClosed: close()
onVisibleChanged: {
if (visible) {
if (parentModal && "shouldHaveFocus" in parentModal) {
@@ -93,6 +93,8 @@ FloatingWindow {
color: Theme.surfaceContainer
visible: false
onClosed: visible = false
Process {
id: cheatsheetProcess
running: false
+2
View File
@@ -32,6 +32,8 @@ FloatingWindow {
color: Theme.surfaceContainer
visible: false
onClosed: hide()
onVisibleChanged: {
if (visible) {
Qt.callLater(focusContent);
@@ -92,6 +92,8 @@ FloatingWindow {
color: Theme.surfaceContainer
visible: false
onClosed: hide()
onIsCompactModeChanged: {
enableAnimations = false;
if (!isCompactMode) {
+2
View File
@@ -32,6 +32,8 @@ FloatingWindow {
color: Theme.surfaceContainer
visible: false
onClosed: hide()
function resetForm() {
nameInput.text = "";
appIdInput.text = "";
@@ -18,6 +18,8 @@ FloatingWindow {
color: Theme.surfaceContainer
visible: false
onClosed: hide()
function show(name) {
nameInput.text = name;
visible = true;
+6 -5
View File
@@ -48,7 +48,7 @@ Item {
for (var i = 0; i < centerRepeater.count; 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);
totalWidgets++;
totalSize += isVertical ? loader.item.height : loader.item.width;
@@ -105,14 +105,14 @@ Item {
if (!wrapper)
continue;
if (isOddConfigured && i === configuredMiddlePos && wrapper.active && wrapper.item)
if (isOddConfigured && i === configuredMiddlePos && wrapper.active && wrapper.item && wrapper.item.visible)
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;
if (!isOddConfigured && i === configuredRightPos && wrapper.active && wrapper.item)
if (!isOddConfigured && i === configuredRightPos && wrapper.active && wrapper.item && wrapper.item.visible)
configuredRightWidget = wrapper.item;
if (wrapper.active && wrapper.item) {
if (wrapper.active && wrapper.item && wrapper.item.visible) {
centerWidgets.push(wrapper.item);
totalWidgets++;
totalSize += isVertical ? wrapper.item.height : wrapper.item.width;
@@ -372,6 +372,7 @@ Item {
onContentItemReady: contentItem => {
contentItem.widthChanged.connect(() => layoutTimer.restart());
contentItem.heightChanged.connect(() => layoutTimer.restart());
contentItem.visibleChanged.connect(() => layoutTimer.restart());
layoutTimer.restart();
}
@@ -45,6 +45,7 @@ Item {
Item {
readonly property real rowSpacing: parent.widgetSpacing
property var itemData: modelData
visible: widgetLoader.active && widgetLoader.widgetEnabled
width: widgetLoader.item ? widgetLoader.item.width : 0
height: widgetLoader.item ? widgetLoader.item.height : 0
WidgetHost {
@@ -92,6 +93,7 @@ Item {
width: parent.width
readonly property real columnSpacing: parent.widgetSpacing
property var itemData: modelData
visible: widgetLoader.active && widgetLoader.widgetEnabled
height: widgetLoader.item ? widgetLoader.item.height : 0
WidgetHost {
id: widgetLoader
@@ -47,6 +47,7 @@ Item {
Item {
readonly property real rowSpacing: parent.widgetSpacing
property var itemData: modelData
visible: widgetLoader.active && widgetLoader.widgetEnabled
width: widgetLoader.item ? widgetLoader.item.width : 0
height: widgetLoader.item ? widgetLoader.item.height : 0
WidgetHost {
@@ -94,6 +95,7 @@ Item {
width: parent.width
readonly property real columnSpacing: parent.widgetSpacing
property var itemData: modelData
visible: widgetLoader.active && widgetLoader.widgetEnabled
height: widgetLoader.item ? widgetLoader.item.height : 0
WidgetHost {
id: widgetLoader
+5 -2
View File
@@ -26,6 +26,7 @@ Loader {
property bool isTopBarEdge: false
property bool isBottomBarEdge: false
property string _registeredScreenName: ""
property var _registeredItem: null
asynchronous: false
@@ -227,15 +228,17 @@ Loader {
return;
_registeredScreenName = parentScreen.name;
BarWidgetService.registerWidget(widgetId, _registeredScreenName, item);
_registeredItem = item;
BarWidgetService.registerWidget(widgetId, _registeredScreenName, _registeredItem);
}
function unregisterWidget() {
if (!widgetId || !_registeredScreenName)
return;
BarWidgetService.unregisterWidget(widgetId, _registeredScreenName);
BarWidgetService.unregisterWidget(widgetId, _registeredScreenName, _registeredItem);
_registeredScreenName = "";
_registeredItem = null;
}
function getWidgetComponent(widgetId, components) {
@@ -110,6 +110,8 @@ FloatingWindow {
color: Theme.surfaceContainer
visible: false
onClosed: hide()
onVisibleChanged: {
if (visible) {
updateFilteredWidgets();
@@ -482,6 +482,8 @@ FloatingWindow {
color: Theme.surfaceContainer
visible: false
onClosed: hide()
onVisibleChanged: {
if (visible) {
pendingInstallHandled = false;
@@ -115,6 +115,8 @@ FloatingWindow {
color: blurActive ? Theme.withAlpha(Theme.surfaceContainer, 0) : Theme.surfaceContainer
visible: false
onClosed: hide()
onVisibleChanged: {
if (visible) {
Qt.callLater(() => {
@@ -26,6 +26,8 @@ FloatingWindow {
color: "transparent"
visible: false
onClosed: hide()
WindowBlur {
targetWindow: root
blurX: 0
+3 -1
View File
@@ -27,13 +27,15 @@ Singleton {
widgetRegistered(widgetId, screenName);
}
function unregisterWidget(widgetId, screenName) {
function unregisterWidget(widgetId, screenName, widgetRef) {
if (!widgetId || !screenName)
return;
if (typeof widgetRegistry !== "object" || widgetRegistry === null)
return;
if (!widgetRegistry[widgetId])
return;
if (widgetRef && widgetRegistry[widgetId][screenName] !== widgetRef)
return;
const nextRegistry = Object.assign({}, widgetRegistry);
const screenMap = (typeof nextRegistry[widgetId] === "object" && nextRegistry[widgetId] !== null) ? Object.assign({}, nextRegistry[widgetId]) : {};