-rw-r--r-- | core/launcher/desktop.cpp | 31 | ||||
-rw-r--r-- | core/launcher/desktop.h | 2 | ||||
-rw-r--r-- | core/launcher/taskbar.h | 3 |
3 files changed, 28 insertions, 8 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp index 86527f6..6def126 100644 --- a/core/launcher/desktop.cpp +++ b/core/launcher/desktop.cpp @@ -502,33 +502,34 @@ Desktop::Desktop() : int displayw = qApp->desktop() ->width(); int displayh = qApp->desktop() ->height(); QSize sz = tb->sizeHint(); setGeometry( 0, displayh - sz.height(), displayw, sz.height() ); - tb->setGeometry( 0, displayh - sz.height(), displayw, sz.height() ); + layout(); tb->show(); launcher->showMaximized(); launcher->show(); launcher->raise(); #if defined(QPE_HAVE_MEMALERTER) initMemalerter(); #endif // start services startTransferServer(); ( void ) new IrServer( this ); packageSlave = new PackageSlave( this ); qApp->installEventFilter( this ); + qApp->desktop()->installEventFilter( this ); qApp-> setMainWidget ( launcher ); } void Desktop::show() { login( TRUE ); QWidget::show(); @@ -727,22 +728,17 @@ void Desktop::toggleNumLockState() void Desktop::toggleCapsLockState() { tb->toggleCapsLockState(); } void Desktop::styleChange( QStyle &s ) { QWidget::styleChange( s ); - int displayw = qApp->desktop() ->width(); - int displayh = qApp->desktop() ->height(); - - QSize sz = tb->sizeHint(); - - tb->setGeometry( 0, displayh - sz.height(), displayw, sz.height() ); + layout(); } void DesktopApplication::shutdown() { if ( type() != GuiServer ) return ; ShutdownImpl *sd = new ShutdownImpl( 0, 0, WDestructiveClose ); connect( sd, SIGNAL( shutdown( ShutdownImpl::Type ) ), @@ -801,16 +797,27 @@ void DesktopApplication::restart() execl( ( qpeDir() + "/bin/qpe" ).latin1(), "qpe", 0 ); #endif exit( 1 ); #endif } +void Desktop::layout() +{ + int displayw = qApp->desktop() ->width(); + int displayh = qApp->desktop() ->height(); + + QSize sz = tb->sizeHint(); + + tb->setGeometry( 0, displayh - sz.height(), displayw, sz.height() ); + tb->calcMaxWindowRect(); +} + void Desktop::startTransferServer() { // start qcop bridge server qcopBridge = new QCopBridge( 4243 ); if ( !qcopBridge->ok() ) { delete qcopBridge; qcopBridge = 0; } @@ -825,16 +832,26 @@ void Desktop::startTransferServer() } void Desktop::timerEvent( QTimerEvent *e ) { killTimer( e->timerId() ); startTransferServer(); } +bool Desktop::eventFilter( QObject *o, QEvent *ev ) +{ + if ( o != qApp->desktop() || ev->type() != QEvent::Resize ) + return QWidget::eventFilter( o, ev ); + + layout(); + + return QWidget::eventFilter( o, ev ); +} + void Desktop::terminateServers() { delete transferServer; delete qcopBridge; transferServer = 0; qcopBridge = 0; } diff --git a/core/launcher/desktop.h b/core/launcher/desktop.h index 4024c38..86d8aa8 100644 --- a/core/launcher/desktop.h +++ b/core/launcher/desktop.h @@ -129,22 +129,24 @@ public slots: void toggleCapsLockState(); void toggleSymbolInput(); void terminateServers(); protected: void executeOrModify( const QString& appLnkFile ); void styleChange( QStyle & ); void timerEvent( QTimerEvent *e ); + virtual bool eventFilter( QObject *o, QEvent *ev ); QWidget *bg; Launcher *launcher; TaskBar *tb; private: + void layout(); void startTransferServer(); bool recoverMemory(); QCopBridge *qcopBridge; TransferServer *transferServer; PackageSlave *packageSlave; QDateTime suspendTime; diff --git a/core/launcher/taskbar.h b/core/launcher/taskbar.h index cd631ef..a0bf395 100644 --- a/core/launcher/taskbar.h +++ b/core/launcher/taskbar.h @@ -56,18 +56,19 @@ public slots: void toggleCapsLockState(); void toggleSymbolInput(); protected: void resizeEvent( QResizeEvent * ); void styleChange( QStyle & ); void setStatusMessage( const QString &text ); -private slots: +public slots: void calcMaxWindowRect(); +private slots: void receive( const QCString &msg, const QByteArray &data ); private: QTimer *waitTimer; Wait *waitIcon; InputMethods *inputMethods; SysTray *sysTray; |