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();






Reply via email to