[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