author | sandman <sandman> | 2002-07-28 00:44:43 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-07-28 00:44:43 (UTC) |
commit | 72081cbfef03a69ed6f9ca7826854b6cf10dc2fe (patch) (side-by-side diff) | |
tree | 43e67bdc7cbb972f431b3912e2f068df3d2c97bf | |
parent | 4baf36396739502c5471950e29f18954cca4517b (diff) | |
download | opie-72081cbfef03a69ed6f9ca7826854b6cf10dc2fe.zip opie-72081cbfef03a69ed6f9ca7826854b6cf10dc2fe.tar.gz opie-72081cbfef03a69ed6f9ca7826854b6cf10dc2fe.tar.bz2 |
Workaround for a weird Qt/E bug, resulting in qpe hanging if clipboard
applet is loaded and qpe is terminated via shutdown applet.
-rw-r--r-- | core/applets/clipboardapplet/clipboard.cpp | 15 | ||||
-rw-r--r-- | core/applets/clipboardapplet/clipboard.h | 4 | ||||
-rw-r--r-- | core/launcher/desktop.cpp | 6 |
3 files changed, 22 insertions, 3 deletions
diff --git a/core/applets/clipboardapplet/clipboard.cpp b/core/applets/clipboardapplet/clipboard.cpp index 5848d0f..4fbdf6f 100644 --- a/core/applets/clipboardapplet/clipboard.cpp +++ b/core/applets/clipboardapplet/clipboard.cpp @@ -124,8 +124,9 @@ ClipboardApplet::ClipboardApplet( QWidget *parent, const char *name ) : QWidget( - QTimer *timer = new QTimer ( this ); + m_timer = new QTimer ( this ); connect ( QApplication::clipboard ( ), SIGNAL( dataChanged ( )), this, SLOT( newData ( ))); - connect ( timer, SIGNAL( timeout ( )), this, SLOT( newData ( ))); + connect ( m_timer, SIGNAL( timeout ( )), this, SLOT( newData ( ))); + connect ( qApp, SIGNAL( aboutToQuit ( )), this, SLOT( shutdown ( ))); - timer-> start ( 1000 ); + m_timer-> start ( 1500 ); @@ -140,2 +141,10 @@ ClipboardApplet::~ClipboardApplet ( ) +void ClipboardApplet::shutdown ( ) +{ + // the timer has to be stopped, or Qt/E will hang on quit() + // see launcher/desktop.cpp + + m_timer-> stop ( ); +} + void ClipboardApplet::mousePressEvent ( QMouseEvent *) diff --git a/core/applets/clipboardapplet/clipboard.h b/core/applets/clipboardapplet/clipboard.h index 84743d9..ec87d39 100644 --- a/core/applets/clipboardapplet/clipboard.h +++ b/core/applets/clipboardapplet/clipboard.h @@ -26,2 +26,4 @@ +class QTimer; + class ClipboardApplet : public QWidget @@ -40,2 +42,3 @@ private slots: void newData ( ); + void shutdown ( ); @@ -46,2 +49,3 @@ private: QString m_lasttext; + QTimer * m_timer; diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp index e58b08c..f90da1a 100644 --- a/core/launcher/desktop.cpp +++ b/core/launcher/desktop.cpp @@ -688,2 +688,8 @@ void DesktopApplication::shutdown( ShutdownImpl::Type t ) prepareForTermination(FALSE); + + // This is a workaround for a Qt bug + // clipboard applet has to stop its poll timer, or Qt/E + // will hang on quit() right before it emits aboutToQuit() + emit aboutToQuit ( ); + quit(); |