X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyX.cpp;h=f9c3c2ddad946dfd97a9e5ef0ad7c6a5bd62205d;hb=28be7d552f62cc02fa86d7f79201d089bfb2d7b5;hp=0f6b9b6acb45497873240cd060a5267aa4d47789;hpb=90e2004fde2bc1b2bb310499411a2f49bc3514be;p=lyx.git diff --git a/src/LyX.cpp b/src/LyX.cpp index 0f6b9b6acb..f9c3c2ddad 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -52,6 +52,7 @@ #include "frontends/Application.h" #include "support/ConsoleApplication.h" +#include "support/convert.h" #include "support/lassert.h" #include "support/debug.h" #include "support/environment.h" @@ -73,6 +74,8 @@ #include #include +#include // For QT_VERSION + using namespace std; using namespace lyx::support; @@ -121,6 +124,14 @@ RunMode run_mode = PREFERRED; OverwriteFiles force_overwrite = UNSPECIFIED; +// Scale the GUI by this factor. This works whether we have a HiDpi screen +// or not and scales everything, also fonts. Can only be changed by setting +// the QT_SCALE_FACTOR environment variable before launching LyX and only +// works properly with Qt 5.6 or higher. + +double qt_scale_factor = 1.0; + + namespace { // Filled with the command line arguments "foo" of "-sysdir foo" or @@ -179,9 +190,14 @@ struct LyX::Impl { /// The file converters. Converters converters_; - - // The system converters copy after reading lyxrc.defaults. + /// The system converters after reading lyxrc.defaults. Converters system_converters_; + + /// Global format information + Formats formats_; + /// The system formats after reading lyxrc.defaults. + Formats system_formats_; + /// Movers movers_; @@ -303,6 +319,17 @@ int LyX::exec(int & argc, char * argv[]) // we need to parse for "-dbg" and "-help" easyParse(argc, argv); +#if QT_VERSION >= 0x050600 + // Check whether Qt will scale all GUI elements and accordingly + // set the scale factor so that to avoid blurred images and text + char const * const scale_factor = getenv("QT_SCALE_FACTOR"); + if (scale_factor) { + qt_scale_factor = convert(scale_factor); + if (qt_scale_factor < 1.0) + qt_scale_factor = 1.0; + } +#endif + try { init_package(os::utf8_argv(0), cl_system_support, cl_user_support); } catch (ExceptionMessage const & message) { @@ -367,7 +394,7 @@ int LyX::exec(int & argc, char * argv[]) FileName(package().temp_dir().absFileName() + "/lyxsocket"))); // Start the real execution loop. - if (!theServer().deferredLoadingToOtherInstance()) + if (!pimpl_->lyx_server_->deferredLoadingToOtherInstance()) exit_status = pimpl_->application_->exec(); else if (!pimpl_->files_to_load_.empty()) { vector::const_iterator it = pimpl_->files_to_load_.begin(); @@ -838,7 +865,7 @@ bool LyX::init() #endif lyxrc.tempdir_path = package().temp_dir().absFileName(); - lyxrc.document_path = "."; + lyxrc.document_path = package().document_dir().absFileName(); if (lyxrc.example_path.empty()) { lyxrc.example_path = addPath(package().system_support().absFileName(), @@ -916,13 +943,13 @@ bool LyX::init() return false; // Query the OS to know what formats are viewed natively - formats.setAutoOpen(); + theFormats().setAutoOpen(); // Read lyxrc.dist again to be able to override viewer auto-detection. readRcFile("lyxrc.dist"); system_lyxrc = lyxrc; - system_formats = formats; + theSystemFormats() = theFormats(); pimpl_->system_converters_ = pimpl_->converters_; pimpl_->system_movers_ = pimpl_->movers_; system_lcolor = lcolor; @@ -1030,7 +1057,8 @@ bool LyX::queryUserLyXDir(bool explicit_userdir) || configFileNeedsUpdate("lyxmodules.lst") || configFileNeedsUpdate("textclass.lst") || configFileNeedsUpdate("packages.lst") - || configFileNeedsUpdate("lyxciteengines.lst"); + || configFileNeedsUpdate("lyxciteengines.lst") + || configFileNeedsUpdate("xtemplates.lst"); } first_start = !explicit_userdir; @@ -1159,7 +1187,8 @@ int parse_help(string const &, string const &, string &) " where fmt is the export format of choice. Look in\n" " Tools->Preferences->File Handling->File Formats->Short Name\n" " to see which parameter (which differs from the format name\n" - " in the File->Export menu) should be passed.\n" + " in the File->Export menu) should be passed. To export to\n" + " the document's default output format, use 'default'.\n" " Note that the order of -e and -x switches matters.\n" "\t-E [--export-to] fmt filename\n" " where fmt is the export format of choice (see --export),\n" @@ -1476,17 +1505,31 @@ KeyMap & theTopLevelKeymap() } +Formats & theFormats() +{ + LAPPERR(singleton_); + return singleton_->pimpl_->formats_; +} + + +Formats & theSystemFormats() +{ + LAPPERR(singleton_); + return singleton_->pimpl_->system_formats_; +} + + Converters & theConverters() { LAPPERR(singleton_); - return singleton_->pimpl_->converters_; + return singleton_->pimpl_->converters_; } Converters & theSystemConverters() { LAPPERR(singleton_); - return singleton_->pimpl_->system_converters_; + return singleton_->pimpl_->system_converters_; }