-rw-r--r-- | library/qpeapplication.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index 90cd5f1..ae1632e 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp @@ -170,37 +170,41 @@ public: #endif delete r; } } static void show_mx(QWidget* mw, bool nomaximize, QString &strName/* = QString::null */) { - if ( mw->isVisible() ) { - mw->raise(); - } else { QPoint p; QSize s; + bool max; + if ( mw->isVisible() ) { + if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { + mw->resize(s); + mw->move(p); + } + mw->raise(); + } else { if ( mw->layout() && mw->inherits("QDialog") ) { - bool max; if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { mw->resize(s); mw->move(p); - if ( max && !nomaximize ) + if ( max && !nomaximize ) { mw->showMaximized(); - else + } else { mw->show(); + } } else { - qpe_show_dialog((QDialog*)mw,nomaximize); + qpe_show_dialog((QDialog*)mw,nomaximize); } } else { - bool max; if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { mw->resize(s); mw->move(p); } else { //no stored rectangle, make an estimation int x = (qApp->desktop()->width()-mw->frameGeometry().width())/2; int y = (qApp->desktop()->height()-mw->frameGeometry().height())/2; mw->move( QMAX(x,0), QMAX(y,0) ); #ifdef Q_WS_QWS @@ -297,17 +301,17 @@ static void qpe_show_dialog( QDialog* d, bool nomax ) d->show(); } } static bool read_widget_rect(const QString &app, bool &maximized, QPoint &p, QSize &s) { maximized = TRUE; - + qDebug("read_widget_rect"); // 350 is the trigger in qwsdefaultdecoration for providing a resize button if ( qApp->desktop()->width() <= 350 ) return FALSE; Config cfg( "qpe" ); cfg.setGroup("ApplicationPositions"); QString str = cfg.readEntry( app, QString::null ); QStringList l = QStringList::split(",", str); @@ -369,17 +373,17 @@ static void qpe_show_dialog( QDialog* d, bool nomax ) return TRUE; } static void store_widget_rect(QWidget *w, QString &app) { // 350 is the trigger in qwsdefaultdecoration for providing a resize button if ( qApp->desktop()->width() <= 350 ) return; - + qDebug("store_widget_rect"); // we use these to map the offset of geometry and pos. ( we can only use normalGeometry to // get the non-maximized version, so we have to do it the hard way ) int offsetX = w->x() - w->geometry().left(); int offsetY = w->y() - w->geometry().top(); QRect r; if ( w->isMaximized() ) r = ( (HackWidget *) w)->normalGeometry(); |