diff --git a/src/lib/app/mainapplication.cpp b/src/lib/app/mainapplication.cpp index 0e2826551..b1866afb1 100644 --- a/src/lib/app/mainapplication.cpp +++ b/src/lib/app/mainapplication.cpp @@ -266,7 +266,7 @@ MainApplication::MainApplication(int &argc, char** argv) translateApp(); QupZilla* qupzilla = new QupZilla(Qz::BW_FirstAppWindow, startUrl); - m_mainWindows.append(qupzilla); + m_mainWindows.prepend(qupzilla); connect(qupzilla, SIGNAL(message(Qz::AppMessageType,bool)), this, SLOT(sendMessages(Qz::AppMessageType,bool))); connect(qupzilla, SIGNAL(startingCompleted()), this, SLOT(restoreCursor())); @@ -636,7 +636,7 @@ QupZilla* MainApplication::makeNewWindow(Qz::BrowserWindow type, const QUrl &sta } QupZilla* newWindow = new QupZilla(type, startUrl); - m_mainWindows.append(newWindow); + m_mainWindows.prepend(newWindow); return newWindow; } diff --git a/src/lib/app/qupzilla.cpp b/src/lib/app/qupzilla.cpp index e66743f77..1d2ccd95c 100644 --- a/src/lib/app/qupzilla.cpp +++ b/src/lib/app/qupzilla.cpp @@ -84,6 +84,7 @@ #include #include #include +#include #if QT_VERSION < 0x050000 #include "qwebkitversion.h" @@ -266,17 +267,30 @@ void QupZilla::setupUi() setWindowState(Qt::WindowMaximized); } else { - if (!restoreGeometry(settings.value("WindowGeometry").toByteArray())) { - setGeometry(QRect(20, 20, 800, 550)); + // Let the WM decides where to put new browser window + if (m_windowType == Qz::BW_NewWindow && mApp->getWindow()) { +#ifdef Q_WS_WIN + // Windows WM places every new window in the middle of screen .. for some reason + QPoint p = mApp->getWindow()->geometry().topLeft(); + p.setX(p.x() + 30); + p.setY(p.y() + 30); + + if (!mApp->desktop()->availableGeometry(this).contains(p)) { + p.setX(mApp->desktop()->availableGeometry(this).x() + 30); + p.setY(mApp->desktop()->availableGeometry(this).y() + 30); + } + setGeometry(QRect(p, mApp->getWindow()->size())); +#else + resize(mApp->getWindow()->size()); +#endif } - - if (m_windowType == Qz::BW_NewWindow) { - // Moving window +40 x,y to be visible that this is new window - QPoint p = pos(); - p.setX(p.x() + 40); - p.setY(p.y() + 40); - - move(p); + else if (!restoreGeometry(settings.value("WindowGeometry").toByteArray())) { +#ifdef Q_WS_WIN + setGeometry(QRect(mApp->desktop()->availableGeometry(this).x() + 30, + mApp->desktop()->availableGeometry(this).y() + 30, 800, 550)); +#else + resize(800, 550); +#endif } }