mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Disable Qt's integration mechanism on GTK-based DE to avoid early GTK loading
This also removes TDESKTOP_USE_GTK_FILE_DIALOG since it doesn't forces GTK dialog for anyone and there is no reason to leave it TDESKTOP_DISABLE_GTK_INTEGRATION can be also tested via action now
This commit is contained in:
parent
1de1747c38
commit
786bedf271
7 changed files with 21 additions and 31 deletions
1
.github/workflows/linux.yml
vendored
1
.github/workflows/linux.yml
vendored
|
@ -54,6 +54,7 @@ jobs:
|
||||||
defines:
|
defines:
|
||||||
- ""
|
- ""
|
||||||
- "DESKTOP_APP_DISABLE_DBUS_INTEGRATION"
|
- "DESKTOP_APP_DISABLE_DBUS_INTEGRATION"
|
||||||
|
- "TDESKTOP_DISABLE_GTK_INTEGRATION"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
GIT: "https://github.com"
|
GIT: "https://github.com"
|
||||||
|
|
|
@ -130,11 +130,12 @@ bool NativeSupported(Type type = Type::ReadFile) {
|
||||||
// or if QT_QPA_PLATFORMTHEME=(gtk2|gtk3)
|
// or if QT_QPA_PLATFORMTHEME=(gtk2|gtk3)
|
||||||
// or if portals is used and operation is to open folder
|
// or if portals is used and operation is to open folder
|
||||||
// and portal doesn't support folder choosing
|
// and portal doesn't support folder choosing
|
||||||
return Platform::UseGtkFileDialog()
|
return (Platform::DesktopEnvironment::IsGtkBased()
|
||||||
&& (Platform::DesktopEnvironment::IsGtkBased()
|
|
||||||
|| Platform::IsGtkIntegrationForced()
|
|| Platform::IsGtkIntegrationForced()
|
||||||
|| Platform::UseXDGDesktopPortal())
|
|| Platform::UseXDGDesktopPortal())
|
||||||
&& (!Platform::UseXDGDesktopPortal()
|
&& ((!Platform::UseXDGDesktopPortal() &&
|
||||||
|
((!Platform::InFlatpak() && !Platform::InSnap())
|
||||||
|
|| Platform::IsGtkIntegrationForced()))
|
||||||
|| (type == Type::ReadFolder && !Platform::CanOpenDirectoryWithPortal()))
|
|| (type == Type::ReadFolder && !Platform::CanOpenDirectoryWithPortal()))
|
||||||
&& Platform::internal::GdkHelperLoaded()
|
&& Platform::internal::GdkHelperLoaded()
|
||||||
&& (Libs::gtk_widget_hide_on_delete != nullptr)
|
&& (Libs::gtk_widget_hide_on_delete != nullptr)
|
||||||
|
|
|
@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
*/
|
*/
|
||||||
#include "platform/linux/linux_libs.h"
|
#include "platform/linux/linux_libs.h"
|
||||||
|
|
||||||
|
#include "base/platform/base_platform_info.h"
|
||||||
#include "platform/linux/linux_xlib_helper.h"
|
#include "platform/linux/linux_xlib_helper.h"
|
||||||
#include "platform/linux/linux_gdk_helper.h"
|
#include "platform/linux/linux_gdk_helper.h"
|
||||||
#include "platform/linux/specific_linux.h"
|
#include "platform/linux/specific_linux.h"
|
||||||
|
@ -114,8 +115,13 @@ bool setupGtkBase(QLibrary &lib_gtk) {
|
||||||
// Otherwise we get segfault in Ubuntu 17.04 in gtk_init_check() call.
|
// Otherwise we get segfault in Ubuntu 17.04 in gtk_init_check() call.
|
||||||
// See https://github.com/telegramdesktop/tdesktop/issues/3176
|
// See https://github.com/telegramdesktop/tdesktop/issues/3176
|
||||||
// See https://github.com/telegramdesktop/tdesktop/issues/3162
|
// See https://github.com/telegramdesktop/tdesktop/issues/3162
|
||||||
DEBUG_LOG(("Limit allowed GDK backends to wayland and x11"));
|
if(Platform::IsWayland()) {
|
||||||
gdk_set_allowed_backends("wayland,x11");
|
DEBUG_LOG(("Limit allowed GDK backends to wayland,x11"));
|
||||||
|
gdk_set_allowed_backends("wayland,x11");
|
||||||
|
} else {
|
||||||
|
DEBUG_LOG(("Limit allowed GDK backends to x11,wayland"));
|
||||||
|
gdk_set_allowed_backends("x11,wayland");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// gtk_init will reset the Xlib error handler, and that causes
|
// gtk_init will reset the Xlib error handler, and that causes
|
||||||
|
|
|
@ -682,14 +682,6 @@ bool IsGtkIntegrationForced() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UseGtkFileDialog() {
|
|
||||||
#ifdef TDESKTOP_USE_GTK_FILE_DIALOG
|
|
||||||
return true;
|
|
||||||
#else // TDESKTOP_USE_GTK_FILE_DIALOG
|
|
||||||
return false;
|
|
||||||
#endif // !TDESKTOP_USE_GTK_FILE_DIALOG
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsQtPluginsBundled() {
|
bool IsQtPluginsBundled() {
|
||||||
#ifdef DESKTOP_APP_USE_PACKAGED_LAZY
|
#ifdef DESKTOP_APP_USE_PACKAGED_LAZY
|
||||||
return true;
|
return true;
|
||||||
|
@ -1210,6 +1202,11 @@ void start() {
|
||||||
|
|
||||||
qunsetenv("QT_QPA_PLATFORMTHEME");
|
qunsetenv("QT_QPA_PLATFORMTHEME");
|
||||||
qunsetenv("QT_STYLE_OVERRIDE");
|
qunsetenv("QT_STYLE_OVERRIDE");
|
||||||
|
|
||||||
|
// Don't allow qgtk3 to init gtk earlier than us
|
||||||
|
if (DesktopEnvironment::IsGtkBased()) {
|
||||||
|
QApplication::setDesktopSettingsAware(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!UseGtkIntegration()) {
|
if (!UseGtkIntegration()) {
|
||||||
|
@ -1241,10 +1238,10 @@ void start() {
|
||||||
|
|
||||||
if((IsStaticBinary()
|
if((IsStaticBinary()
|
||||||
|| InAppImage()
|
|| InAppImage()
|
||||||
|| InSnap()
|
|
||||||
|| UseGtkFileDialog()
|
|
||||||
|| IsQtPluginsBundled())
|
|| IsQtPluginsBundled())
|
||||||
&& !InFlatpak()) {
|
// it is handled by Qt for flatpak and snap
|
||||||
|
&& !InFlatpak()
|
||||||
|
&& !InSnap()) {
|
||||||
LOG(("Checking for XDG Desktop Portal..."));
|
LOG(("Checking for XDG Desktop Portal..."));
|
||||||
// this can give us a chance to use
|
// this can give us a chance to use
|
||||||
// a proper file dialog for current session
|
// a proper file dialog for current session
|
||||||
|
|
|
@ -26,7 +26,6 @@ bool InAppImage();
|
||||||
bool IsStaticBinary();
|
bool IsStaticBinary();
|
||||||
bool UseGtkIntegration();
|
bool UseGtkIntegration();
|
||||||
bool IsGtkIntegrationForced();
|
bool IsGtkIntegrationForced();
|
||||||
bool UseGtkFileDialog();
|
|
||||||
bool IsQtPluginsBundled();
|
bool IsQtPluginsBundled();
|
||||||
|
|
||||||
bool IsXDGDesktopPortalPresent();
|
bool IsXDGDesktopPortalPresent();
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
# https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
# https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
|
|
||||||
option(TDESKTOP_USE_FONTCONFIG_FALLBACK "Use custom fonts.conf (Linux only)." OFF)
|
option(TDESKTOP_USE_FONTCONFIG_FALLBACK "Use custom fonts.conf (Linux only)." OFF)
|
||||||
option(TDESKTOP_USE_GTK_FILE_DIALOG "Use custom code for GTK file dialog (Linux only)." OFF)
|
|
||||||
option(TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME "Disable automatic 'tg://' URL scheme handler registration." ${DESKTOP_APP_USE_PACKAGED})
|
option(TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME "Disable automatic 'tg://' URL scheme handler registration." ${DESKTOP_APP_USE_PACKAGED})
|
||||||
option(TDESKTOP_DISABLE_NETWORK_PROXY "Disable all code for working through Socks5 or MTProxy." OFF)
|
option(TDESKTOP_DISABLE_NETWORK_PROXY "Disable all code for working through Socks5 or MTProxy." OFF)
|
||||||
option(TDESKTOP_DISABLE_GTK_INTEGRATION "Disable all code for GTK integration (Linux only)." OFF)
|
option(TDESKTOP_DISABLE_GTK_INTEGRATION "Disable all code for GTK integration (Linux only)." OFF)
|
||||||
|
@ -43,14 +42,6 @@ if (TDESKTOP_API_ID STREQUAL "0" OR TDESKTOP_API_HASH STREQUAL "")
|
||||||
" ")
|
" ")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT DESKTOP_APP_USE_PACKAGED)
|
|
||||||
set(TDESKTOP_USE_GTK_FILE_DIALOG ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (TDESKTOP_USE_GTK_FILE_DIALOG)
|
|
||||||
set(TDESKTOP_DISABLE_GTK_INTEGRATION OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (DESKTOP_APP_DISABLE_SPELLCHECK)
|
if (DESKTOP_APP_DISABLE_SPELLCHECK)
|
||||||
target_compile_definitions(Telegram PRIVATE TDESKTOP_DISABLE_SPELLCHECK)
|
target_compile_definitions(Telegram PRIVATE TDESKTOP_DISABLE_SPELLCHECK)
|
||||||
else()
|
else()
|
||||||
|
@ -69,10 +60,6 @@ if (TDESKTOP_USE_FONTCONFIG_FALLBACK)
|
||||||
target_compile_definitions(Telegram PRIVATE TDESKTOP_USE_FONTCONFIG_FALLBACK)
|
target_compile_definitions(Telegram PRIVATE TDESKTOP_USE_FONTCONFIG_FALLBACK)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (TDESKTOP_USE_GTK_FILE_DIALOG)
|
|
||||||
target_compile_definitions(Telegram PRIVATE TDESKTOP_USE_GTK_FILE_DIALOG)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME)
|
if (TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME)
|
||||||
target_compile_definitions(Telegram PRIVATE TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME)
|
target_compile_definitions(Telegram PRIVATE TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -101,7 +101,6 @@ parts:
|
||||||
- -DTDESKTOP_API_ID=611335
|
- -DTDESKTOP_API_ID=611335
|
||||||
- -DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c
|
- -DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c
|
||||||
- -DDESKTOP_APP_USE_PACKAGED_LAZY=ON
|
- -DDESKTOP_APP_USE_PACKAGED_LAZY=ON
|
||||||
- -DTDESKTOP_USE_GTK_FILE_DIALOG=ON
|
|
||||||
- -DDESKTOP_APP_QTWAYLANDCLIENT_PRIVATE_HEADERS=$SNAPCRAFT_STAGE/usr/include/$SNAPCRAFT_ARCH_TRIPLET/qt5/QtWaylandClient/5.12.8
|
- -DDESKTOP_APP_QTWAYLANDCLIENT_PRIVATE_HEADERS=$SNAPCRAFT_STAGE/usr/include/$SNAPCRAFT_ARCH_TRIPLET/qt5/QtWaylandClient/5.12.8
|
||||||
override-pull: |
|
override-pull: |
|
||||||
snapcraftctl pull
|
snapcraftctl pull
|
||||||
|
|
Loading…
Add table
Reference in a new issue