From: Peter Kümmel Date: Wed, 29 Nov 2006 16:45:38 +0000 (+0000) Subject: also support the geometry option on Windows + Qt/Windows X-Git-Tag: 1.6.10~11711 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=9dfe4a10d359d4cb3ccfbf7ad908d4b7e6f43c2a;p=features.git also support the geometry option on Windows + Qt/Windows git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16105 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/Application.C b/src/frontends/Application.C index 7d2dc98552..2ed3a01bea 100644 --- a/src/frontends/Application.C +++ b/src/frontends/Application.C @@ -52,7 +52,8 @@ LyXView & Application::createView(unsigned int width, 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 @@ LyXView & Application::createView(unsigned int width, /*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); diff --git a/src/frontends/Application.h b/src/frontends/Application.h index 76031a4a0c..3bd0c226ae 100644 --- a/src/frontends/Application.h +++ b/src/frontends/Application.h @@ -172,7 +172,8 @@ public: /// 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; diff --git a/src/frontends/LyXView.h b/src/frontends/LyXView.h index 5a2bfadeaa..49f40ede96 100644 --- a/src/frontends/LyXView.h +++ b/src/frontends/LyXView.h @@ -88,7 +88,8 @@ public: 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; diff --git a/src/frontends/qt4/GuiView.C b/src/frontends/qt4/GuiView.C index b6e93c5a38..981cb515c3 100644 --- a/src/frontends/qt4/GuiView.C +++ b/src/frontends/qt4/GuiView.C @@ -244,7 +244,8 @@ void GuiView::setGeometry(unsigned int width, 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,21 @@ void GuiView::setGeometry(unsigned int width, if (maximize) setWindowState(Qt::WindowMaximized); } + else + { + // FIXME: move this code into parse_geometry() (lyx_main.C) +#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(); diff --git a/src/frontends/qt4/GuiView.h b/src/frontends/qt4/GuiView.h index 40adbb420c..83c8f6ba17 100644 --- a/src/frontends/qt4/GuiView.h +++ b/src/frontends/qt4/GuiView.h @@ -61,7 +61,8 @@ public: 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); diff --git a/src/lyx_main.C b/src/lyx_main.C index 7d97fac6a1..35abe992ec 100644 --- a/src/lyx_main.C +++ b/src/lyx_main.C @@ -116,6 +116,8 @@ namespace { string cl_system_support; string cl_user_support; +std::string geometryArg; + LyX * singleton_ = 0; void showFileError(string const & error) @@ -193,10 +195,11 @@ LyX const & LyX::cref() LyX::LyX() - : first_start(false), geometryOption_(false) + : first_start(false) { singleton_ = this; pimpl_.reset(new Singletons); + geometryArg.clear(); } @@ -603,12 +606,14 @@ LyXView * LyX::newLyXView() posy = convert(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 @@ int parse_import(string const & type, string const & file) return 2; } +int parse_geometry(string const & arg1, string const &) +{ + geometryArg = arg1; +#if defined(_WIN32) || (defined(__CYGWIN__) && defined(X_DISPLAY_MISSING)) + // remove also the arg + return 1; +#else + // don't remove "-geometry" + return -1; +#endif +} + + } // namespace anon @@ -1293,15 +1311,12 @@ void LyX::easyParse(int & argc, char * argv[]) 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::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; diff --git a/src/lyx_main.h b/src/lyx_main.h index a0b74578ac..9f698d82a3 100644 --- a/src/lyx_main.h +++ b/src/lyx_main.h @@ -163,9 +163,6 @@ private: /// Use the Pimpl idiom to hide the internals. struct Singletons; boost::scoped_ptr pimpl_; - - /// - bool geometryOption_; }; } // namespace lyx