Peter Kümmel wrote: > Now I see the next bug: > > When you often open and close lyx in the > normal mode the windows moves down on > the screen. > So the stored coordinates are not that > of the upper left corner. > > I will have a look an this, and will also > post a 'final patch' :-) > > Peter > >
Here the patch for this issue. lyx_gui.C - start: - set size and position at one place: start - we must use setGeometry - init() first than show() - position is always available QtView: - QtView doesn't need the maximize parameter any more - qt3 doesn't have normalGeometry - remove 'this->' Index: qt3/lyx_gui.C =================================================================== --- qt3/lyx_gui.C (revision 14094) +++ qt3/lyx_gui.C (working copy) @@ -227,16 +227,19 @@ // this can't be done before because it needs the Languages object initEncodings(); - boost::shared_ptr<QtView> view_ptr(new QtView(width, height, maximize)); + boost::shared_ptr<QtView> view_ptr(new QtView(width, height)); LyX::ref().addLyXView(view_ptr); QtView & view = *view_ptr.get(); - if (posx != -1 && posy != -1) - view.move(QPoint(posx, posy)); + view.init(); + + view.setGeometry(posx, posy, width, height); + if (maximize) + view.setWindowState(WindowMaximized); + view.show(); - view.init(); // FIXME: some code below needs moving Index: qt3/QtView.C =================================================================== --- qt3/QtView.C (revision 14094) +++ qt3/QtView.C (working copy) @@ -55,14 +55,9 @@ -QtView::QtView(unsigned int width, unsigned int height, bool maximize) +QtView::QtView(unsigned int width, unsigned int height) : QMainWindow(), LyXView(), commandbuffer_(0) { - resize(width, height); - - if (maximize) - this->setWindowState(WindowMaximized); - qApp->setMainWidget(this); bufferview_.reset(new BufferView(this, width, height)); @@ -163,9 +158,9 @@ void QtView::closeEvent(QCloseEvent *) { - LyX::ref().session().saveSessionInfo("WindowIsMaximized", (this->isMaximized() ? "yes" : "no")); + LyX::ref().session().saveSessionInfo("WindowIsMaximized", (isMaximized() ? "yes" : "no")); // don't save maximized values - this->showNormal(); + showNormal(); // save windows size and position LyX::ref().session().saveSessionInfo("WindowWidth", convert<string>(width())); LyX::ref().session().saveSessionInfo("WindowHeight", convert<string>(height())); Index: qt3/QtView.h =================================================================== --- qt3/QtView.h (revision 14094) +++ qt3/QtView.h (working copy) @@ -37,7 +37,7 @@ Q_OBJECT public: /// create a main window of the given dimensions - QtView(unsigned int w, unsigned int h, bool maximize); + QtView(unsigned int w, unsigned int h); ~QtView(); Index: qt4/lyx_gui.C =================================================================== --- qt4/lyx_gui.C (revision 14094) +++ qt4/lyx_gui.C (working copy) @@ -233,16 +233,19 @@ // this can't be done before because it needs the Languages object initEncodings(); - boost::shared_ptr<QtView> view_ptr(new QtView(width, height, maximize)); + boost::shared_ptr<QtView> view_ptr(new QtView(width, height)); LyX::ref().addLyXView(view_ptr); QtView & view = *view_ptr.get(); - if (posx != -1 && posy != -1) - view.move(QPoint(posx, posy)); + view.init(); + + view.setGeometry(posx, posy, width, height); + if (maximize) + view.setWindowState(Qt::WindowMaximized); + view.show(); - view.init(); // FIXME: some code below needs moving Index: qt4/QtView.C =================================================================== --- qt4/QtView.C (revision 14094) +++ qt4/QtView.C (working copy) @@ -70,14 +70,9 @@ } // namespace anon -QtView::QtView(unsigned int width, unsigned int height, bool maximize) +QtView::QtView(unsigned int width, unsigned int height) : QMainWindow(), LyXView(), commandbuffer_(0) { - resize(width, height); - - if (maximize) - this->setWindowState(Qt::WindowMaximized); - mainWidget_ = this; // setToolButtonStyle(Qt::ToolButtonIconOnly); @@ -185,12 +180,12 @@ void QtView::closeEvent(QCloseEvent *) { // save windows size and position - LyX::ref().session().saveSessionInfo("WindowWidth", convert<string>(this->normalGeometry().width())); - LyX::ref().session().saveSessionInfo("WindowHeight", convert<string>(this->normalGeometry().height())); - LyX::ref().session().saveSessionInfo("WindowIsMaximized", (this->isMaximized() ? "yes" : "no")); + LyX::ref().session().saveSessionInfo("WindowWidth", convert<string>(normalGeometry().width())); + LyX::ref().session().saveSessionInfo("WindowHeight", convert<string>(normalGeometry().height())); + LyX::ref().session().saveSessionInfo("WindowIsMaximized", (isMaximized() ? "yes" : "no")); if (lyxrc.geometry_xysaved) { - LyX::ref().session().saveSessionInfo("WindowPosX", convert<string>(this->normalGeometry().x())); - LyX::ref().session().saveSessionInfo("WindowPosY", convert<string>(this->normalGeometry().y())); + LyX::ref().session().saveSessionInfo("WindowPosX", convert<string>(normalGeometry().x())); + LyX::ref().session().saveSessionInfo("WindowPosY", convert<string>(normalGeometry().y())); } // trigger LFUN_LYX_QUIT instead of quit directly // since LFUN_LYX_QUIT may have more cleanup stuff Index: qt4/QtView.h =================================================================== --- qt4/QtView.h (revision 14094) +++ qt4/QtView.h (working copy) @@ -47,7 +47,7 @@ Q_OBJECT public: /// create a main window of the given dimensions - QtView(unsigned int w, unsigned int h, bool maximize); + QtView(unsigned int w, unsigned int h); ~QtView();