author | sandman <sandman> | 2002-12-17 00:20:01 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-12-17 00:20:01 (UTC) |
commit | 70090722d240bed8c390281e072c9bcfc5ba7782 (patch) (side-by-side diff) | |
tree | 453b4715acff74889655877a491c6cc3791d5de0 | |
parent | 79b94019014efe998b126219827f3050395beea7 (diff) | |
download | opie-70090722d240bed8c390281e072c9bcfc5ba7782.zip opie-70090722d240bed8c390281e072c9bcfc5ba7782.tar.gz opie-70090722d240bed8c390281e072c9bcfc5ba7782.tar.bz2 |
small additions to support grabbing the buttons back from a crashed
application
-rw-r--r-- | library/qpeapplication.cpp | 11 | ||||
-rw-r--r-- | library/qpeapplication.h | 2 |
2 files changed, 13 insertions, 0 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index 852671a..b26933b 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp @@ -90,32 +90,33 @@ class QPEApplicationData { public: QPEApplicationData() : presstimer( 0 ), presswidget( 0 ), kbgrabber( 0 ), rightpressed( FALSE ), kbregrab( FALSE ), notbusysent( FALSE ), preloaded( FALSE ), forceshow( FALSE ), nomaximize( FALSE ), keep_running( TRUE ), qpe_main_widget( 0 ) { qcopq.setAutoDelete( TRUE ); } int presstimer; QWidget* presswidget; int kbgrabber; + QString kbgrabber_appname; QPoint presspos; bool rightpressed : 1; bool kbregrab : 1; bool notbusysent : 1; bool preloaded : 1; bool forceshow : 1; bool nomaximize : 1; bool keep_running : 1; QString appName; struct QCopRec { QCopRec( const QCString &ch, const QCString &msg, const QByteArray &d ) : channel( ch ), message( msg ), data( d ) @@ -1051,32 +1052,34 @@ void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data if ( type() != GuiServer ) quit(); } else if ( msg == "restart()" ) { if ( type() == GuiServer ) restart(); } else if ( msg == "grabKeyboard(QString)" ) { QString who; stream >> who; if ( who.isEmpty() ) d->kbgrabber = 0; else if ( who != d->appName ) d->kbgrabber = 1; else d->kbgrabber = 2; + + d-> kbgrabber_appname = who; } else if ( msg == "language(QString)" ) { if ( type() == GuiServer ) { QString l; stream >> l; QString cl = getenv( "LANG" ); if ( cl != l ) { if ( l.isNull() ) unsetenv( "LANG" ); else setenv( "LANG", l.latin1(), 1 ); restart(); } } } else if ( msg == "timeChange(QString)" ) { @@ -1611,32 +1614,40 @@ void QPEApplication::timerEvent( QTimerEvent *e ) void QPEApplication::removeSenderFromStylusDict() { stylusDict->remove ( ( void* ) sender() ); if ( d->presswidget == sender() ) d->presswidget = 0; } /*! \internal */ bool QPEApplication::keyboardGrabbed() const { return d->kbgrabber; } +/*! + \internal +*/ +QString QPEApplication::keyboardGrabbedBy() const +{ + return d->kbgrabber_appname; +} + /*! Reverses the effect of grabKeyboard(). This is called automatically on program exit. */ void QPEApplication::ungrabKeyboard() { QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d; if ( d->kbgrabber == 2 ) { #ifndef QT_NO_COP QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" ); e << QString::null; #endif d->kbregrab = FALSE; d->kbgrabber = 0; diff --git a/library/qpeapplication.h b/library/qpeapplication.h index 86affa6..f712077 100644 --- a/library/qpeapplication.h +++ b/library/qpeapplication.h @@ -21,32 +21,33 @@ #define __QPE_APPLICATION_H__ #include <qapplication.h> #include <qdialog.h> #if defined(_WS_QWS_) && !defined(Q_WS_QWS) #define Q_WS_QWS #endif #include "qpedecoration_qws.h" #include "timestring.h" class QCopChannel; class QPEApplicationData; class QWSEvent; class QWSKeyEvent; + class QPEApplication : public QApplication { Q_OBJECT public: QPEApplication( int& argc, char **argv, Type=GuiClient ); ~QPEApplication(); static QString qpeDir(); static QString documentDir(); void applyStyle(); static int defaultRotation(); static void setDefaultRotation(int r); static void grabKeyboard(); static void ungrabKeyboard(); enum StylusMode { @@ -69,32 +70,33 @@ public: DisableSuspend = 2, Enable = 100 }; static void setInputMethodHint( QWidget *, InputMethodHint ); static InputMethodHint inputMethodHint( QWidget * ); void showMainWidget( QWidget*, bool nomax=FALSE ); void showMainDocumentWidget( QWidget*, bool nomax=FALSE ); static void showDialog( QDialog*, bool nomax=FALSE ); static int execDialog( QDialog*, bool nomax=FALSE ); static void setKeepRunning(); bool keepRunning() const; bool keyboardGrabbed() const; + QString keyboardGrabbedBy ( ) const; int exec(); signals: void clientMoused(); void timeChanged(); void clockChanged( bool pm ); void micChanged( bool muted ); void volumeChanged( bool muted ); void appMessage( const QCString& msg, const QByteArray& data); void weekChanged( bool startOnMonday ); void dateFormatChanged( DateFormat ); void flush(); void reload(); private slots: |