From 3a4ee8d8a53ca17703b34f84e1a411056ee7e50f Mon Sep 17 00:00:00 2001 From: simon Date: Tue, 25 Mar 2003 20:30:12 +0000 Subject: - keep an eye on resize events on the desktop widget, which are an indication for things like life rotation. upon a resize re-layout things (taskbar, tabs and maxwindow rect) --- (limited to 'core') 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 @@ -507,7 +507,7 @@ Desktop::Desktop() : 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(); @@ -524,6 +524,7 @@ Desktop::Desktop() : packageSlave = new PackageSlave( this ); qApp->installEventFilter( this ); + qApp->desktop()->installEventFilter( this ); qApp-> setMainWidget ( launcher ); } @@ -732,12 +733,7 @@ void Desktop::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() @@ -806,6 +802,17 @@ void DesktopApplication::restart() #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 @@ -830,6 +837,16 @@ void Desktop::timerEvent( QTimerEvent *e ) 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; 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 @@ -134,12 +134,14 @@ 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(); 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 @@ -61,8 +61,9 @@ protected: 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: -- cgit v0.9.0.2