From 85269ffd3b602ddf8c447ea283f4e7c10c4b4562 Mon Sep 17 00:00:00 2001
From: Marco Martin <notmart@gmail.com>
Date: Wed, 20 May 2026 11:45:40 +0200
Subject: [PATCH] Applet: bookeeping of applet's uiReady

When a containment adds an applet, it should put it in loadingApplets
only if the applet's ui is not ready, not its own.

This is actually a Plasma 6 porting issue and the problem is being present for all Plasma 6 releases so far.

BUG:512005


(cherry picked from commit db10a9d15ab056c8c6d82ecd69ff7614ae616d38)

c09707b4 Applet: bookeeping of applet's uiReady

Co-authored-by: Marco Martin <notmart@gmail.com>
---
 src/plasma/containment.cpp      | 3 ++-
 src/plasma/private/applet_p.cpp | 1 +
 src/plasma/private/applet_p.h   | 1 +
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/plasma/containment.cpp b/src/plasma/containment.cpp
index 6185f683f..6cb03c772 100644
--- a/src/plasma/containment.cpp
+++ b/src/plasma/containment.cpp
@@ -419,7 +419,8 @@ void Containment::addApplet(Applet *applet, const QRectF &geometryHint)
     Q_EMIT appletAboutToBeAdded(applet, geometryHint);
     d->applets.insert(position, applet);
 
-    if (!d->uiReady) {
+    // We need to check Applet's ui readiness, not ours
+    if (!applet->d->uiReady) {
         d->loadingApplets << applet;
     }
 
diff --git a/src/plasma/private/applet_p.cpp b/src/plasma/private/applet_p.cpp
index 4b3c9ec97..324d41f19 100644
--- a/src/plasma/private/applet_p.cpp
+++ b/src/plasma/private/applet_p.cpp
@@ -423,6 +423,7 @@ void AppletPrivate::propagateConfigChanged()
 
 void AppletPrivate::setUiReady()
 {
+    uiReady = true;
     // If we a re a containment, call setUiReady
     Containment *thisContainment = qobject_cast<Containment *>(q);
     if (thisContainment && thisContainment->isContainment()) {
diff --git a/src/plasma/private/applet_p.h b/src/plasma/private/applet_p.h
index ec1b073b7..f114abb85 100644
--- a/src/plasma/private/applet_p.h
+++ b/src/plasma/private/applet_p.h
@@ -118,6 +118,7 @@ public:
     bool globalShortcutEnabled : 1;
     bool userConfiguring : 1;
     bool busy : 1;
+    bool uiReady : 1 = false;
 };
 
 } // Plasma namespace
-- 
2.54.0

