summaryrefslogtreecommitdiffstats
path: root/Swift
diff options
context:
space:
mode:
Diffstat (limited to 'Swift')
-rw-r--r--Swift/Controllers/EventNotifier.cpp1
-rw-r--r--Swift/QtUI/WindowsNotifier.cpp4
-rw-r--r--Swift/QtUI/WindowsNotifier.h3
3 files changed, 7 insertions, 1 deletions
diff --git a/Swift/Controllers/EventNotifier.cpp b/Swift/Controllers/EventNotifier.cpp
index 7ecc27c..e643ab3 100644
--- a/Swift/Controllers/EventNotifier.cpp
+++ b/Swift/Controllers/EventNotifier.cpp
@@ -21,18 +21,19 @@
#include "Swift/Controllers/Settings/SettingsProvider.h"
namespace Swift {
EventNotifier::EventNotifier(EventController* eventController, Notifier* notifier, AvatarManager* avatarManager, NickResolver* nickResolver) : eventController(eventController), notifier(notifier), avatarManager(avatarManager), nickResolver(nickResolver) {
eventController->onEventQueueEventAdded.connect(boost::bind(&EventNotifier::handleEventAdded, this, _1));
}
EventNotifier::~EventNotifier() {
+ notifier->purgeCallbacks();
eventController->onEventQueueEventAdded.disconnect(boost::bind(&EventNotifier::handleEventAdded, this, _1));
}
void EventNotifier::handleEventAdded(boost::shared_ptr<StanzaEvent> event) {
if (event->getConcluded()) {
return;
}
if (boost::shared_ptr<MessageEvent> messageEvent = boost::dynamic_pointer_cast<MessageEvent>(event)) {
JID jid = messageEvent->getStanza()->getFrom();
diff --git a/Swift/QtUI/WindowsNotifier.cpp b/Swift/QtUI/WindowsNotifier.cpp
index 1789451..212f0ca 100644
--- a/Swift/QtUI/WindowsNotifier.cpp
+++ b/Swift/QtUI/WindowsNotifier.cpp
@@ -41,10 +41,14 @@ void WindowsNotifier::showMessage(Type type, const std::string& subject, const s
tray->showMessage(P2QSTRING(subject), P2QSTRING(description), type == SystemMessage ? QSystemTrayIcon::Information : QSystemTrayIcon::NoIcon, timeout * 1000);
}
void WindowsNotifier::handleMessageClicked() {
if (lastCallback) {
lastCallback();
}
}
+void WindowsNotifier::purgeCallbacks() {
+ lastCallback = boost::function<void()>();
+}
+
}
diff --git a/Swift/QtUI/WindowsNotifier.h b/Swift/QtUI/WindowsNotifier.h
index 062b76f..b2b5577 100644
--- a/Swift/QtUI/WindowsNotifier.h
+++ b/Swift/QtUI/WindowsNotifier.h
@@ -17,19 +17,20 @@ class QSystemTrayIcon;
namespace Swift {
class WindowsNotifier : public QObject, public Notifier {
Q_OBJECT
public:
WindowsNotifier(const std::string& name, const boost::filesystem::path& icon, QSystemTrayIcon* tray);
~WindowsNotifier();
virtual void showMessage(Type type, const std::string& subject, const std::string& description, const boost::filesystem::path& picture, boost::function<void()> callback);
-
+ virtual void purgeCallbacks();
+
private slots:
void handleMessageClicked();
private:
QSystemTrayIcon* tray;
Win32NotifierWindow* notifierWindow;
SnarlNotifier* snarlNotifier;
boost::function<void()> lastCallback;
};