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