[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    =?utf-8?q?=5Bkdelibs=5D_plasma=3A_save/track/restore_ItemStatus_?=
From:       Aaron Seigo <aseigo () kde ! org>
Date:       2011-02-05 1:52:18
Message-ID: 20110205015218.7CEF1A60A9 () git ! kde ! org
[Download RAW message or body]

Git commit ffea5e40ce4a56a479bb62bf0aa04dcf93930290 by Aaron Seigo.
Committed on 05/02/11 at 02:51.
Pushed by aseigo into branch 'master'.

save/track/restore ItemStatus properly

M  +19   -3    plasma/popupapplet.cpp     
M  +1    -0    plasma/popupapplet.h     
M  +3    -0    plasma/private/popupapplet_p.h     

http://commits.kde.org/kdelibs/ffea5e40ce4a56a479bb62bf0aa04dcf93930290

diff --git a/plasma/popupapplet.cpp b/plasma/popupapplet.cpp
index fdd54a7..3cb8f99 100644
--- a/plasma/popupapplet.cpp
+++ b/plasma/popupapplet.cpp
@@ -803,10 +803,26 @@ void PopupAppletPrivate::dialogSizeChanged()
     }
 }
 
-void PopupAppletPrivate::dialogStatusChanged(bool status)
+void PopupAppletPrivate::dialogStatusChanged(bool shown)
+{
+    if (shown) {
+        preShowStatus = q->status();
+        q->setStatus(NeedsAttentionStatus);
+        QObject::connect(q, SIGNAL(newStatus(Plasma::ItemStatus)),
+                         q, SLOT(statusChangeWhileShown(Plasma::ItemStatus)),
+                Qt::UniqueConnection);
+    } else {
+        QObject::disconnect(q, SIGNAL(newStatus(Plasma::ItemStatus)),
+                            q, SLOT(statusChangeWhileShown(Plasma::ItemStatus)));
+        q->setStatus(preShowStatus);
+    }
+
+    q->popupEvent(shown);
+}
+
+void PopupAppletPrivate::statusChangeWhileShown(Plasma::ItemStatus status)
 {
-    q->setStatus(status ? NeedsAttentionStatus : PassiveStatus);
-    q->popupEvent(status);
+    preShowStatus = status;
 }
 
 void PopupAppletPrivate::restoreDialogSize()
diff --git a/plasma/popupapplet.h b/plasma/popupapplet.h
index 9dbba38..cc80625 100644
--- a/plasma/popupapplet.h
+++ b/plasma/popupapplet.h
@@ -230,6 +230,7 @@ private:
     Q_PRIVATE_SLOT(d, void updateDialogPosition())
     Q_PRIVATE_SLOT(d, void appletActivated())
     Q_PRIVATE_SLOT(d, void iconSizeChanged(int))
+    Q_PRIVATE_SLOT(d, void statusChangeWhileShown(Plasma::ItemStatus status))
 
     friend class Applet;
     friend class AppletPrivate;
diff --git a/plasma/private/popupapplet_p.h b/plasma/private/popupapplet_p.h
index 023b90b..63253d6 100644
--- a/plasma/private/popupapplet_p.h
+++ b/plasma/private/popupapplet_p.h
@@ -46,6 +46,8 @@ public:
     void checkExtenderAppearance(Plasma::FormFactor f);
     KConfigGroup popupConfigGroup();
     void appletActivated();
+    void statusChangeWhileShown(Plasma::ItemStatus status);
+
 
     PopupApplet *q;
     Plasma::IconWidget *icon;
@@ -59,6 +61,7 @@ public:
     QTimer *autohideTimer;
     QBasicTimer delayedShowTimer;
     QPoint clicked;
+    ItemStatus preShowStatus;
     bool popupLostFocus : 1;
     bool passive : 1;
 };

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic