Enrico Forestieri wrote: > On Wed, Nov 29, 2006 at 03:49:31PM +0100, Peter Kümmel wrote: >> Enrico Forestieri wrote: >>> I am not so sure, but yes, now that I know it is a Qt4 limitation I >>> could try to implement it. After all, I don't want that you make the >>> work for me ;-) >> But I have done. ;-) > > I owe you a beer, Peter!
Next time when I'm in Italy ;) > > Please, find attached a revised version also taking into account cygwin > builds without X11. I simply changed the #ifdef's. > > > > ------------------------------------------------------------------------ > > Index: src/frontends/Application.h > =================================================================== > --- src/frontends/Application.h (Revision 16100) > +++ src/frontends/Application.h (Arbeitskopie) > @@ -172,7 +172,8 @@ > > /// Create the main window with given geometry settings. > LyXView & createView(unsigned int width, unsigned int height, > - int posx, int posy, bool maximize, unsigned int iconSizeXY); > + int posx, int posy, bool maximize, unsigned int iconSizeXY, > + const std::string & geometryArg); > > /// > LyXView const & currentView() const; > Index: src/frontends/LyXView.h > =================================================================== > --- src/frontends/LyXView.h (Revision 16100) > +++ src/frontends/LyXView.h (Arbeitskopie) > @@ -88,7 +88,8 @@ > unsigned int height, > int posx, int posy, > bool maximize, > - unsigned int iconSizeXY) = 0; > + unsigned int iconSizeXY, > + const std::string & geometryArg) = 0; > > /// save the geometry state in the session manager. > virtual void saveGeometry() = 0; > Index: src/frontends/qt4/GuiView.h > =================================================================== > --- src/frontends/qt4/GuiView.h (Revision 16100) > +++ src/frontends/qt4/GuiView.h (Arbeitskopie) > @@ -61,7 +61,8 @@ > unsigned int height, > int posx, int posy, > bool maximize, > - unsigned int iconSizeXY); > + unsigned int iconSizeXY, > + const std::string & geometryArg); > virtual void saveGeometry(); > virtual void busy(bool); > Toolbars::ToolbarPtr makeToolbar(ToolbarBackend::Toolbar const & tbb); > Index: src/frontends/qt4/GuiView.C > =================================================================== > --- src/frontends/qt4/GuiView.C (Revision 16102) > +++ src/frontends/qt4/GuiView.C (Arbeitskopie) > @@ -244,7 +244,8 @@ > unsigned int > height, > int posx, int > posy, > bool maximize, > - unsigned int > iconSizeXY) > + unsigned int > iconSizeXY, > + const > std::string & geometryArg) > { > // use last value (not at startup) > if (d.lastIconSize != 0) > @@ -278,6 +279,20 @@ > if (maximize) > setWindowState(Qt::WindowMaximized); > } > + else > + { > +#ifdef Q_WS_WIN > + int x, y; > + int w, h; > + QRegExp re( "[=]*(?:([0-9]+)[xX]([0-9]+)){0,1}[ > ]*(?:([+-][0-9]*)([+-][0-9]*)){0,1}" ); > + re.indexIn( toqstr(geometryArg.c_str())); > + w = re.cap( 1 ).toInt(); > + h = re.cap( 2 ).toInt(); > + x = re.cap( 3 ).toInt(); > + y = re.cap( 4 ).toInt(); > + QWidget::setGeometry( x, y, w, h ); > +#endif > + } > > show(); > > Index: src/frontends/Application.C > =================================================================== > --- src/frontends/Application.C (Revision 16100) > +++ src/frontends/Application.C (Arbeitskopie) > @@ -52,7 +52,8 @@ > unsigned int > height, > int posx, int > posy, > bool maximize, > - unsigned int > iconSizeXY) > + unsigned int > iconSizeXY, > + const > std::string & geometryArg) > { > int view_id = gui().newView(); > LyXView & view = gui().view(view_id); > @@ -62,7 +63,7 @@ > /*int workArea_id_ =*/ gui().newWorkArea(width, height, view_id); > > view.init(); > - view.setGeometry(width, height, posx, posy, maximize, iconSizeXY); > + view.setGeometry(width, height, posx, posy, maximize, iconSizeXY, > geometryArg); > > setCurrentView(view); > > Index: src/lyx_main.C > =================================================================== > --- src/lyx_main.C (Revision 16100) > +++ src/lyx_main.C (Arbeitskopie) > @@ -116,6 +116,8 @@ > string cl_system_support; > string cl_user_support; > > +std::string geometryArg; > + > LyX * singleton_ = 0; > > void showFileError(string const & error) > @@ -193,10 +195,11 @@ > > > LyX::LyX() > - : first_start(false), geometryOption_(false) > + : first_start(false) > { > singleton_ = this; > pimpl_.reset(new Singletons); > + geometryArg.clear(); > } > > > @@ -603,12 +606,14 @@ > posy = convert<int>(val); > } > > - if (geometryOption_) { > + if (!geometryArg.empty()) > + { > width = 0; > height = 0; > } > + > // create the main window > - LyXView * view = &pimpl_->application_->createView(width, height, posx, > posy, maximize, iconSizeXY); > + LyXView * view = &pimpl_->application_->createView(width, height, posx, > posy, maximize, iconSizeXY, geometryArg); > > return view; > } > @@ -1273,6 +1278,19 @@ > return 2; > } > > +int parse_geometry(string const & arg1, string const &) > +{ > + geometryArg = arg1; > +#if defined(_WIN32) || (defined(__CYGWIN__) && defined(X_DISPLAY_MISSING)) AH, here shell_type shell() does not work. Should we add something like usingWin32Frontend() to os.h? > + // remove also the arg > + return 1; > +#else > + // don't remove "-geometry" > + return -1; > +#endif > +} > + > + > } // namespace anon > > > @@ -1293,15 +1311,12 @@ > cmdmap["--export"] = parse_export; > cmdmap["-i"] = parse_import; > cmdmap["--import"] = parse_import; > + cmdmap["-geometry"] = parse_geometry; > > for (int i = 1; i < argc; ++i) { > std::map<string, cmd_helper>::const_iterator it > = cmdmap.find(argv[i]); > > - // check for X11 -geometry option > - if (support::compare(argv[i], "-geometry") == 0) > - geometryOption_ = true; > - > // don't complain if not found - may be parsed later > if (it == cmdmap.end()) > continue; > Index: src/lyx_main.h > =================================================================== > --- src/lyx_main.h (Revision 16100) > +++ src/lyx_main.h (Arbeitskopie) > @@ -163,9 +163,6 @@ > /// Use the Pimpl idiom to hide the internals. > struct Singletons; > boost::scoped_ptr<Singletons> pimpl_; > - > - /// > - bool geometryOption_; > }; > > } // namespace lyx -- Peter Kümmel