summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlya Fedin <fedin-ilja2010@ya.ru>2021-02-22 06:41:26 +0400
committerJohn Preston <johnprestonmail@gmail.com>2021-02-22 23:38:09 +0400
commit53fd3fce84c722ac52ff9e6fe0032cc637dee3d1 (patch)
treee47b6df27259a2e6eaf77849f2d9874465c9056e
parent19b6f6e9a193ba38ae0ad265d51f2b3398d2d476 (diff)
Allow initializing gtk integration before QApplication
-rw-r--r--Telegram/SourceFiles/platform/linux/linux_gtk_integration.cpp47
-rw-r--r--Telegram/SourceFiles/platform/linux/specific_linux.cpp48
2 files changed, 44 insertions, 51 deletions
diff --git a/Telegram/SourceFiles/platform/linux/linux_gtk_integration.cpp b/Telegram/SourceFiles/platform/linux/linux_gtk_integration.cpp
index 4aa024d563..ae178a81bc 100644
--- a/Telegram/SourceFiles/platform/linux/linux_gtk_integration.cpp
+++ b/Telegram/SourceFiles/platform/linux/linux_gtk_integration.cpp
@@ -13,11 +13,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "platform/linux/linux_gdk_helper.h"
#include "platform/linux/linux_gtk_file_dialog.h"
#include "platform/linux/linux_open_with_dialog.h"
-#include "platform/linux/specific_linux.h"
-#include "ui/platform/ui_platform_utility.h"
-#include "core/sandbox.h"
-#include "core/core_settings.h"
-#include "core/application.h"
namespace Platform {
namespace internal {
@@ -47,30 +42,6 @@ bool GetImageFromClipboardSupported() {
&& (gdk_atom_intern != nullptr);
}
-void SetScaleFactor() {
- Core::Sandbox::Instance().customEnterFromEventLoop([] {
- const auto integration = GtkIntegration::Instance();
- const auto ratio = Core::Sandbox::Instance().devicePixelRatio();
- if (!integration || ratio > 1.) {
- return;
- }
-
- const auto scaleFactor = integration->scaleFactor().value_or(1);
- if (scaleFactor == 1) {
- return;
- }
-
- LOG(("GTK scale factor: %1").arg(scaleFactor));
- cSetScreenScale(style::CheckScale(scaleFactor * 100));
- });
-}
-
-void DarkModeChanged() {
- Core::Sandbox::Instance().customEnterFromEventLoop([] {
- Core::App().settings().setSystemDarkMode(IsDarkMode());
- });
-}
-
} // namespace
GtkIntegration::GtkIntegration() {
@@ -161,24 +132,6 @@ void GtkIntegration::load() {
LOAD_GTK_SYMBOL(Library(), "gtk_app_chooser_get_type", gtk_app_chooser_get_type);
Loaded = true;
-
- SetScaleFactor();
-
- BaseGtkIntegration::Instance()->connectToSetting(
- "gtk-theme-name",
- DarkModeChanged);
-
- if (BaseGtkIntegration::Instance()->checkVersion(3, 0, 0)) {
- BaseGtkIntegration::Instance()->connectToSetting(
- "gtk-application-prefer-dark-theme",
- DarkModeChanged);
- }
-
- if (BaseGtkIntegration::Instance()->checkVersion(3, 12, 0)) {
- BaseGtkIntegration::Instance()->connectToSetting(
- "gtk-decoration-layout",
- Ui::Platform::NotifyTitleControlsLayoutChanged);
- }
}
bool GtkIntegration::loaded() const {
diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.cpp b/Telegram/SourceFiles/platform/linux/specific_linux.cpp
index a7c343ff0d..73d1f94b51 100644
--- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp
+++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp
@@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "base/platform/base_platform_info.h"
#include "base/platform/linux/base_linux_xcb_utilities.h"
#include "base/platform/linux/base_linux_gtk_integration.h"
+#include "ui/platform/ui_platform_utility.h"
#include "platform/linux/linux_desktop_environment.h"
#include "platform/linux/linux_gtk_integration.h"
#include "platform/linux/linux_wayland_integration.h"
@@ -17,9 +18,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h"
#include "mainwindow.h"
#include "storage/localstorage.h"
+#include "core/sandbox.h"
+#include "core/application.h"
+#include "core/core_settings.h"
#include "core/update_checker.h"
#include "window/window_controller.h"
-#include "core/application.h"
#ifndef DESKTOP_APP_DISABLE_DBUS_INTEGRATION
#include "platform/linux/linux_notification_service_watcher.h"
@@ -347,6 +350,28 @@ bool GenerateDesktopFile(
}
}
+void SetGtkScaleFactor() {
+ const auto integration = GtkIntegration::Instance();
+ const auto ratio = Core::Sandbox::Instance().devicePixelRatio();
+ if (!integration || ratio > 1.) {
+ return;
+ }
+
+ const auto scaleFactor = integration->scaleFactor().value_or(1);
+ if (scaleFactor == 1) {
+ return;
+ }
+
+ LOG(("GTK scale factor: %1").arg(scaleFactor));
+ cSetScreenScale(style::CheckScale(scaleFactor * 100));
+}
+
+void DarkModeChanged() {
+ Core::Sandbox::Instance().customEnterFromEventLoop([] {
+ Core::App().settings().setSystemDarkMode(IsDarkMode());
+ });
+}
+
} // namespace
void SetWatchingMediaKeys(bool watching) {
@@ -851,9 +876,6 @@ bool OpenSystemSettings(SystemSettingsType type) {
namespace ThirdParty {
void start() {
- DEBUG_LOG(("Icon theme: %1").arg(QIcon::themeName()));
- DEBUG_LOG(("Fallback icon theme: %1").arg(QIcon::fallbackThemeName()));
-
if (const auto integration = BaseGtkIntegration::Instance()) {
integration->load();
}
@@ -862,6 +884,24 @@ void start() {
integration->load();
}
+ SetGtkScaleFactor();
+
+ BaseGtkIntegration::Instance()->connectToSetting(
+ "gtk-theme-name",
+ DarkModeChanged);
+
+ if (BaseGtkIntegration::Instance()->checkVersion(3, 0, 0)) {
+ BaseGtkIntegration::Instance()->connectToSetting(
+ "gtk-application-prefer-dark-theme",
+ DarkModeChanged);
+ }
+
+ if (BaseGtkIntegration::Instance()->checkVersion(3, 12, 0)) {
+ BaseGtkIntegration::Instance()->connectToSetting(
+ "gtk-decoration-layout",
+ Ui::Platform::NotifyTitleControlsLayoutChanged);
+ }
+
// wait for interface announce to know if native window frame is supported
if (const auto integration = WaylandIntegration::Instance()) {
integration->waitForInterfaceAnnounce();