Version: 1.0 (using KDE 3.5.4 Level "a" , unofficial build of SUSE ) Compiler: Target: i586-suse-linux OS: Linux (i686) release 2.6.16.21-0.13-default How to reproduce: Enable systray blinking and OSD for incoming messages. Receive a message. Click OSD to hide it. Expected behavior: Systray icon doesn't keep blinking.
SVN commit 590822 by hein: Stop systray flashing when cancelling a notification by clicking the OSD. BUG:134931 M +2 -0 ChangeLog M +1 -1 src/commit.h M +1 -0 src/konversationapplication.cpp M +1 -0 src/osd.cpp M +5 -1 src/osd.h --- trunk/extragear/network/konversation/ChangeLog #590821:590822 @@ -21,6 +21,8 @@ - Add a new preference [OSD]OSDCheckDesktopLock to be set in the config file allowing to disable the DCOP-based screensaver check that pre- vents the OSD from being shown in non-KDE environments. +- Stop systray flashing when cancelling a notification by clicking the + OSD. ------------------------------------------------------------------------------- --- trunk/extragear/network/konversation/src/commit.h #590821:590822 @@ -1,4 +1,4 @@ // This COMMIT number is added to version string to be used as "patch level" #ifndef COMMIT -#define COMMIT 3178 +#define COMMIT 3179 #endif --- trunk/extragear/network/konversation/src/konversationapplication.cpp #590821:590822 @@ -119,6 +119,7 @@ connect(mainWindow, SIGNAL(showQuickConnectDialog()), this, SLOT(openQuickConnectDialog()) ); connect(Preferences::self(), SIGNAL(updateTrayIcon()), mainWindow, SLOT(updateTrayIcon()) ); connect(this, SIGNAL(prefsChanged()), mainWindow, SIGNAL(prefsChanged()) ); + connect(osd, SIGNAL(hidden()), mainWindow, SIGNAL(endNotification())); // take care of user style changes, setting back colors and stuff // apply GUI settings --- trunk/extragear/network/konversation/src/osd.cpp #590821:590822 @@ -234,6 +234,7 @@ void OSDWidget::mousePressEvent( QMouseEvent* ) { hide(); + emit hidden(); } void OSDWidget::show() --- trunk/extragear/network/konversation/src/osd.h #590821:590822 @@ -28,7 +28,8 @@ class OSDWidget : public QWidget { Q_OBJECT - public: + + public: enum Alignment { Left, Middle, Center, Right }; explicit OSDWidget(const QString &appName, QWidget *parent = 0, const char *name = "osd"); @@ -48,6 +49,9 @@ int alignment() { return m_alignment; } int y() { return m_y; } + signals: + void hidden(); + public slots: //TODO rename show, scrap removeOSD, just use hide() <- easier to learn void showOSD(const QString&, bool preemptive=false );