@@ -85,6 +85,45 @@ QSharedMemory* guiMutexLock()
8585 return shm;
8686}
8787
88+ QTranslator translator, qtTranslator;
89+
90+ void configureApp (bool gui)
91+ {
92+ if (gui) {
93+ QApplication::setStyle (new StyleOverride);
94+ }
95+
96+ // Configure translations
97+ for (const QString& path : PathInfo::translationsPaths ()) {
98+ bool match = translator.load (QLocale (),
99+ QStringLiteral (" Internationalization" ),
100+ QStringLiteral (" _" ),
101+ path);
102+ if (match) {
103+ break ;
104+ }
105+ }
106+
107+ qtTranslator.load (QLocale::system (),
108+ " qt" ,
109+ " _" ,
110+ QLibraryInfo::location (QLibraryInfo::TranslationsPath));
111+
112+ auto app = QCoreApplication::instance ();
113+ app->installTranslator (&translator);
114+ app->installTranslator (&qtTranslator);
115+ app->setAttribute (Qt::AA_DontCreateNativeWidgetSiblings, true );
116+ }
117+
118+ // TODO find a way so we don't have to do this
119+ // / Recreate the application as a QApplication
120+ void reinitializeAsQApplication (int argc, char * argv[])
121+ {
122+ delete QCoreApplication::instance ();
123+ new QApplication (argc, argv);
124+ configureApp (true );
125+ }
126+
88127int main (int argc, char * argv[])
89128{
90129#ifdef Q_OS_LINUX
@@ -105,31 +144,7 @@ int main(int argc, char* argv[])
105144#else
106145 QtSingleApplication app (argc, argv);
107146#endif
108- QApplication::setStyle (new StyleOverride);
109-
110- QTranslator translator, qtTranslator;
111- QStringList trPaths = PathInfo::translationsPaths ();
112-
113- for (const QString& path : trPaths) {
114- bool match = translator.load (QLocale (),
115- QStringLiteral (" Internationalization" ),
116- QStringLiteral (" _" ),
117- path);
118- if (match) {
119- break ;
120- }
121- }
122-
123- qtTranslator.load (
124- QLocale::system (),
125- " qt" ,
126- " _" ,
127- QLibraryInfo::location (QLibraryInfo::TranslationsPath));
128-
129- qApp->installTranslator (&translator);
130- qApp->installTranslator (&qtTranslator);
131- qApp->setAttribute (Qt::AA_DontCreateNativeWidgetSiblings, true );
132-
147+ configureApp (true );
133148 auto c = Flameshot::instance ();
134149 FlameshotDaemon::start ();
135150
@@ -151,6 +166,7 @@ int main(int argc, char* argv[])
151166 * CLI parsing |
152167 * ------------*/
153168 new QCoreApplication (argc, argv);
169+ configureApp (false );
154170 CommandLineParser parser;
155171 // Add description
156172 parser.setDescription (
@@ -344,14 +360,12 @@ int main(int argc, char* argv[])
344360 Flameshot::setOrigin (Flameshot::CLI);
345361 if (parser.isSet (helpOption) || parser.isSet (versionOption)) {
346362 } else if (parser.isSet (launcherArgument)) { // LAUNCHER
347- delete qApp;
348- new QApplication (argc, argv);
363+ reinitializeAsQApplication (argc, argv);
349364 Flameshot* flameshot = Flameshot::instance ();
350365 flameshot->launcher ();
351366 qApp->exec ();
352367 } else if (parser.isSet (guiArgument)) { // GUI
353- delete qApp;
354- new QApplication (argc, argv);
368+ reinitializeAsQApplication (argc, argv);
355369 // Prevent multiple instances of 'flameshot gui' from running if not
356370 // configured to do so.
357371 if (!ConfigHandler ().allowMultipleGuiInstances ()) {
@@ -414,10 +428,7 @@ int main(int argc, char* argv[])
414428 }
415429 requestCaptureAndWait (req);
416430 } else if (parser.isSet (fullArgument)) { // FULL
417- // Recreate the application as a QApplication
418- // TODO find a way so we don't have to do this
419- delete qApp;
420- new QApplication (argc, argv);
431+ reinitializeAsQApplication (argc, argv);
421432
422433 // Option values
423434 QString path = parser.value (pathOption);
@@ -452,10 +463,7 @@ int main(int argc, char* argv[])
452463 }
453464 requestCaptureAndWait (req);
454465 } else if (parser.isSet (screenArgument)) { // SCREEN
455- // Recreate the application as a QApplication
456- // TODO find a way so we don't have to do this
457- delete qApp;
458- new QApplication (argc, argv);
466+ reinitializeAsQApplication (argc, argv);
459467
460468 QString numberStr = parser.value (screenNumberOption);
461469 // Option values
@@ -526,8 +534,7 @@ int main(int argc, char* argv[])
526534 }
527535 if (!someFlagSet) {
528536 // Open gui when no options are given
529- delete qApp;
530- new QApplication (argc, argv);
537+ reinitializeAsQApplication (argc, argv);
531538 QObject::connect (
532539 qApp, &QApplication::lastWindowClosed, qApp, &QApplication::quit);
533540 Flameshot::instance ()->config ();
0 commit comments