On 6/18/06, Peter Kümmel <[EMAIL PROTECTED]> wrote:
The added event handlers of QtView are needed to remember
the last geometry values)
This part I trust you.
Index: frontends/gtk/lyx_gui.C
===================================================================
Index: frontends/gt3/lyx_gui.C
===================================================================
Index: frontends/xforms/lyx_gui.C
===================================================================
--- frontends/xforms/lyx_gui.C (revision 14139)
+++ frontends/xforms/lyx_gui.C (working copy)
So they are totally untouched, right? I mean geometry is still
working, and isMaximized is not implemented.
Index: frontends/qt4/lyx_gui.C
===================================================================
--- frontends/qt4/lyx_gui.C (revision 14139)
+++ frontends/qt4/lyx_gui.C (working copy)
@@ -228,24 +228,32 @@
+ if (!geometryOption)
+ if (posx != -1 && posy != -1) {
+#ifndef Q_OS_WIN32
+ // X11: use frameGeometry position
+ view.setGeometry(0, 0, width, height);
+ view.move(posx, posy);
+#else
+ view.setGeometry(posx, posy, width, height);
+#endif
+ if (maximize)
+ view.setWindowState(Qt::WindowMaximized);
+ }
So geometry option will be handled automatically in QtView? I see.
Index: frontends/qt4/QtView.C
===================================================================
--- frontends/qt4/QtView.C (revision 14139)
+++ frontends/qt4/QtView.C (working copy)
@@ -70,7 +70,7 @@
} // namespace anon
-QtView::QtView(unsigned int width, unsigned int height)
+QtView::QtView()
: QMainWindow(), LyXView(), commandbuffer_(0)
{
mainWidget_ = this;
@@ -78,7 +78,8 @@
// setToolButtonStyle(Qt::ToolButtonIconOnly);
// setIconSize(QSize(12,12));
- bufferview_.reset(new BufferView(this, width, height));
+ // -geometry could set the width and hight
+ bufferview_.reset(new BufferView(this, geometry().width(),
geometry().height()));
OK.
+#ifndef Q_OS_WIN32
+QRect QtView::qtViewGeometry() const
+{
+ QRect rec;
+ // setX/Y changes the size!
+ rec.setX(frameGeometry().x());
+ rec.setY(frameGeometry().y());
+ rec.setWidth(geometry().width());
+ rec.setHeight(geometry().height());
+ return rec;
+}
+
+void QtView::resizeEvent(QResizeEvent *)
+{
+ if(!isMaximized())
+ showGeometry_ = qtViewGeometry();
+}
+
+void QtView::moveEvent(QMoveEvent *)
+{
+ if(!isMaximized())
+ showGeometry_ = qtViewGeometry();
+}
+#endif
+
void QtView::closeEvent(QCloseEvent *)
{
+#ifndef Q_OS_WIN32
+ QRect geometry;
+ if (isMaximized())
+ geometry = showGeometry_;
+ else
+ geometry = qtViewGeometry();
+#else
QRect geometry = normalGeometry();
+#endif
This, plus several event handlers, do look like an overkill for such a
simple problem. Should they be considered as a QT/win32 bug?
Index: frontends/lyx_gui.h
===================================================================
--- frontends/lyx_gui.h (revision 14139)
+++ frontends/lyx_gui.h (working copy)
@@ -57,7 +57,8 @@
* batch commands, and loading the given documents
*/
void start(std::string const & batch, std::vector<std::string> const & files,
- unsigned int width, unsigned int height, int posx, int posy, bool
maximize);
+ unsigned int width, unsigned int height, int posx, int posy, bool
maximize,
+ bool geometryOption);
/**
* Enter the main event loop (\sa LyX::exec2)
Index: lyx_main.C
===================================================================
--- lyx_main.C (revision 14139)
+++ lyx_main.C (working copy)
@@ -170,7 +170,7 @@
LyX::LyX()
- : first_start(false)
+ : first_start(false), geometryOption_(false)
{}
@@ -335,7 +335,7 @@
if (!val.empty())
posy = convert<int>(val);
}
- lyx_gui::start(batch_command, files, width, height, posx, posy,
maximize);
+ lyx_gui::start(batch_command, files, width, height, posx, posy,
maximize, geometryOption_);
} else {
// Something went wrong above
quitLyX(false);
@@ -995,6 +995,10 @@
std::map<string, cmd_helper>::const_iterator it
= cmdmap.find(argv[i]);
+ // check for X11 -geometry option
+ if (argv[i] == string("-geometry"))
+ geometryOption_ = true;
+
// don't complain if not found - may be parsed later
if (it == cmdmap.end())
continue;
Index: lyx_main.h
===================================================================
--- lyx_main.h (revision 14139)
+++ lyx_main.h (working copy)
@@ -107,6 +107,10 @@
///
typedef std::list<boost::shared_ptr<LyXView> > ViewList;
ViewList views_;
+
+ ///
+ bool geometryOption_;
+
};
As far as I can see geometryOption_ is used only once. Cannot it be
simplifed to something like
lyx_gui::start(batch_command, files, width, height, posx, posy,
maximize, argv.find('-geometry') != argv.end())?
Bo