Clearing GTK integration leftovers

This commit is contained in:
Eric Kotato 2021-09-20 19:42:26 +03:00
parent 4313414048
commit c9dc0bf115
9 changed files with 1 additions and 145 deletions

View file

@ -63,7 +63,6 @@
"ktg_net_speed_boost_big": "Big",
"ktg_settings_system": "System",
"ktg_settings_qt_scale": "Qt scaling engine",
"ktg_settings_gtk_integration": "GTK integration",
"ktg_settings_file_dialog_type": "File chooser dialog",
"ktg_file_dialog_type_default": "Default",
"ktg_file_dialog_disabled_on_build": "Disabled on build time",

View file

@ -38,8 +38,4 @@ void BaseIntegration::logAssertionViolation(const QString &info) {
CrashReports::SetAnnotation("Assertion", info);
}
bool BaseIntegration::gtkIntegrationEnabled() const {
return cGtkIntegration();
}
} // namespace Core

View file

@ -20,7 +20,6 @@ public:
void logMessageDebug(const QString &message) override;
void logMessage(const QString &message) override;
void logAssertionViolation(const QString &info) override;
[[nodiscard]] bool gtkIntegrationEnabled() const override;
};

View file

@ -380,7 +380,6 @@ QByteArray GenerateSettingsJson(bool areDefault = false) {
settings.insert(qsl("userpic_corner_type"), cUserpicCornersType());
settings.insert(qsl("always_show_top_userpic"), cShowTopBarUserpic());
settings.insert(qsl("qt_scale"), cQtScale());
settings.insert(qsl("gtk_integration"), cGtkIntegration());
settings.insert(qsl("file_dialog_type"), int(FileDialogType()));
settings.insert(qsl("disable_tray_counter"), cDisableTrayCounter());
settings.insert(qsl("use_telegram_panel_icon"), cUseTelegramPanelIcon());
@ -651,10 +650,6 @@ bool Manager::readCustomFile() {
cSetQtScale(v);
});
ReadBoolOption(settings, "gtk_integration", [&](auto v) {
cSetGtkIntegration(v);
});
ReadIntOption(settings, "file_dialog_type", [&](auto v) {
using Platform::FileDialog::ImplementationType;
if (v >= int(ImplementationType::Default)

View file

@ -166,7 +166,6 @@ int gUserpicCornersType = 3;
bool gShowTopBarUserpic = false;
bool gQtScale = false;
bool gGtkIntegration = false;
rpl::variable<Platform::FileDialog::ImplementationType> gFileDialogType = Platform::FileDialog::ImplementationType::Default;
void SetFileDialogType(Platform::FileDialog::ImplementationType t) {

View file

@ -120,7 +120,6 @@ DeclareSetting(int, UserpicCornersType);
DeclareSetting(bool, ShowTopBarUserpic);
DeclareSetting(bool, QtScale);
DeclareSetting(bool, GtkIntegration);
void SetFileDialogType(Platform::FileDialog::ImplementationType t);
[[nodiscard]] Platform::FileDialog::ImplementationType FileDialogType();

View file

@ -595,37 +595,6 @@ void SetupKotatoSystem(
cancelled));
}, container->lifetime());
#ifndef DESKTOP_APP_DISABLE_GTK_INTEGRATION
if (Platform::IsLinux()) {
const auto gtkIntegrationToggled = Ui::CreateChild<rpl::event_stream<bool>>(
container.get());
AddButton(
container,
rktr("ktg_settings_gtk_integration"),
st::settingsButton
)->toggleOn(
gtkIntegrationToggled->events_starting_with_copy(cGtkIntegration())
)->toggledValue(
) | rpl::filter([](bool enabled) {
return (enabled != cGtkIntegration());
}) | rpl::start_with_next([=](bool enabled) {
const auto confirmed = [=] {
cSetGtkIntegration(enabled);
::Kotato::JsonSettings::Write();
App::restart();
};
const auto cancelled = [=] {
gtkIntegrationToggled->fire(cGtkIntegration() == true);
};
Ui::show(Box<ConfirmBox>(
tr::lng_settings_need_restart(tr::now),
tr::lng_settings_restart_now(tr::now),
confirmed,
cancelled));
}, container->lifetime());
}
#endif // !DESKTOP_APP_DISABLE_GTK_INTEGRATION
if (Platform::IsLinux()) {
auto fileDialogTypeText = rpl::single(
FileDialogType()

View file

@ -1,100 +0,0 @@
/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#include "platform/linux/linux_gtk_integration.h"
#ifdef DESKTOP_APP_DISABLE_DBUS_INTEGRATION
#error "GTK integration depends on D-Bus integration."
#endif // DESKTOP_APP_DISABLE_DBUS_INTEGRATION
#include "base/platform/linux/base_linux_gtk_integration.h"
#include "base/platform/linux/base_linux_dbus_utilities.h"
#include "base/platform/base_platform_info.h"
#include <QtCore/QProcess>
#include <glibmm.h>
namespace Platform {
namespace internal {
namespace {
constexpr auto kBaseService = "io.github.kotatogram.BaseGtkIntegration-%1"_cs;
using BaseGtkIntegration = base::Platform::GtkIntegration;
} // namespace
QString GtkIntegration::AllowedBackends() {
return Platform::IsWayland()
? qsl("wayland,x11")
: Platform::IsX11()
? qsl("x11,wayland")
: QString();
}
void GtkIntegration::Start(Type type) {
if (type != Type::Base) {
return;
}
const auto d = QFile::encodeName(QDir(cWorkingDir()).absolutePath());
char h[33] = { 0 };
hashMd5Hex(d.constData(), d.size(), h);
BaseGtkIntegration::SetServiceName(kBaseService.utf16().arg(h));
const auto dbusName = [] {
try {
static const auto connection = Gio::DBus::Connection::get_sync(
Gio::DBus::BusType::BUS_TYPE_SESSION);
return QString::fromStdString(connection->get_unique_name());
} catch (...) {
return QString();
}
}();
if (dbusName.isEmpty()) {
return;
}
QProcess::startDetached(cExeDir() + cExeName(), {
qsl("-basegtkintegration"),
dbusName,
kBaseService.utf16().arg(h),
});
}
void GtkIntegration::Autorestart(Type type) {
if (type != Type::Base) {
return;
}
try {
static const auto connection = Gio::DBus::Connection::get_sync(
Gio::DBus::BusType::BUS_TYPE_SESSION);
base::Platform::DBus::RegisterServiceWatcher(
connection,
Glib::ustring(BaseGtkIntegration::ServiceName().toStdString()),
[=](
const Glib::ustring &service,
const Glib::ustring &oldOwner,
const Glib::ustring &newOwner) {
if (newOwner.empty()) {
Start(type);
} else if (const auto integration = BaseGtkIntegration::Instance()) {
integration->load(AllowedBackends());
}
});
} catch (...) {
}
}
} // namespace internal
} // namespace Platform

@ -1 +1 @@
Subproject commit 27dfac9006bd863c3ad5dc3799d96c49ea9bf7eb
Subproject commit 5ccf8c9a1eafbdd3cae98e53885a92cfb8b01431