mirror of
https://github.com/kotatogram/kotatogram-desktop
synced 2025-08-31 06:35:14 +00:00
Add option to disable title widget (#44)
This commit is contained in:
@@ -2435,6 +2435,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||||||
"ktg_net_speed_boost_big" = "Big";
|
"ktg_net_speed_boost_big" = "Big";
|
||||||
|
|
||||||
"ktg_settings_system" = "System";
|
"ktg_settings_system" = "System";
|
||||||
|
"ktg_settings_use_native_decorations" = "Native window decorations";
|
||||||
|
|
||||||
"ktg_settings_other" = "Other";
|
"ktg_settings_other" = "Other";
|
||||||
"ktg_profile_copy_id" = "Copy ID";
|
"ktg_profile_copy_id" = "Copy ID";
|
||||||
|
@@ -66,6 +66,7 @@
|
|||||||
"ktg_net_speed_boost_medium": "Среднее",
|
"ktg_net_speed_boost_medium": "Среднее",
|
||||||
"ktg_net_speed_boost_big": "Высокое",
|
"ktg_net_speed_boost_big": "Высокое",
|
||||||
"ktg_settings_system": "Система",
|
"ktg_settings_system": "Система",
|
||||||
|
"ktg_settings_use_native_decorations": "Системные декорации окна",
|
||||||
"ktg_settings_other": "Прочие",
|
"ktg_settings_other": "Прочие",
|
||||||
"ktg_profile_copy_id": "Копировать ID",
|
"ktg_profile_copy_id": "Копировать ID",
|
||||||
"ktg_profile_bot_id": "ID бота",
|
"ktg_profile_bot_id": "ID бота",
|
||||||
|
@@ -185,6 +185,7 @@ QByteArray GenerateSettingsJson(bool areDefault = false) {
|
|||||||
settings.insert(qsl("chat_list_lines"), DialogListLines());
|
settings.insert(qsl("chat_list_lines"), DialogListLines());
|
||||||
settings.insert(qsl("disable_up_edit"), cDisableUpEdit());
|
settings.insert(qsl("disable_up_edit"), cDisableUpEdit());
|
||||||
settings.insert(qsl("confirm_before_calls"), cConfirmBeforeCall());
|
settings.insert(qsl("confirm_before_calls"), cConfirmBeforeCall());
|
||||||
|
settings.insert(qsl("native_decorations"), cUseNativeDecorations());
|
||||||
settings.insert(qsl("recent_stickers_limit"), RecentStickersLimit());
|
settings.insert(qsl("recent_stickers_limit"), RecentStickersLimit());
|
||||||
settings.insert(qsl("userpic_corner_type"), cUserpicCornersType());
|
settings.insert(qsl("userpic_corner_type"), cUserpicCornersType());
|
||||||
settings.insert(qsl("always_show_top_userpic"), cShowTopBarUserpic());
|
settings.insert(qsl("always_show_top_userpic"), cShowTopBarUserpic());
|
||||||
@@ -400,6 +401,10 @@ bool Manager::readCustomFile() {
|
|||||||
cSetConfirmBeforeCall(v);
|
cSetConfirmBeforeCall(v);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ReadBoolOption(settings, "native_decorations", [&](auto v) {
|
||||||
|
cSetUseNativeDecorations(v);
|
||||||
|
});
|
||||||
|
|
||||||
ReadIntOption(settings, "recent_stickers_limit", [&](auto v) {
|
ReadIntOption(settings, "recent_stickers_limit", [&](auto v) {
|
||||||
if (v >= 0 && v <= 200) {
|
if (v >= 0 && v <= 200) {
|
||||||
SetRecentStickersLimit(v);
|
SetRecentStickersLimit(v);
|
||||||
|
@@ -113,6 +113,12 @@ bool AddCustomReplace(QString from, QString to) {
|
|||||||
|
|
||||||
bool gConfirmBeforeCall = false;
|
bool gConfirmBeforeCall = false;
|
||||||
|
|
||||||
|
bool gUseNativeDecorations = false;
|
||||||
|
bool UseNativeDecorations() {
|
||||||
|
static const auto NativeDecorations = cUseNativeDecorations();
|
||||||
|
return NativeDecorations;
|
||||||
|
}
|
||||||
|
|
||||||
rpl::variable<int> gRecentStickersLimit = 20;
|
rpl::variable<int> gRecentStickersLimit = 20;
|
||||||
void SetRecentStickersLimit(int limit) {
|
void SetRecentStickersLimit(int limit) {
|
||||||
if (limit >= 0 || limit <= 200) {
|
if (limit >= 0 || limit <= 200) {
|
||||||
|
@@ -88,6 +88,9 @@ DeclareRefSetting(CustomReplacementsMap, CustomReplaces);
|
|||||||
bool AddCustomReplace(QString from, QString to);
|
bool AddCustomReplace(QString from, QString to);
|
||||||
DeclareSetting(bool, ConfirmBeforeCall);
|
DeclareSetting(bool, ConfirmBeforeCall);
|
||||||
|
|
||||||
|
DeclareSetting(bool, UseNativeDecorations);
|
||||||
|
[[nodiscard]] bool UseNativeDecorations();
|
||||||
|
|
||||||
void SetRecentStickersLimit(int limit);
|
void SetRecentStickersLimit(int limit);
|
||||||
[[nodiscard]] int RecentStickersLimit();
|
[[nodiscard]] int RecentStickersLimit();
|
||||||
[[nodiscard]] rpl::producer<int> RecentStickersLimitChanges();
|
[[nodiscard]] rpl::producer<int> RecentStickersLimitChanges();
|
||||||
|
@@ -370,6 +370,35 @@ void SetupKotatoSystem(not_null<Ui::VerticalLayout*> container) {
|
|||||||
AddSkip(container);
|
AddSkip(container);
|
||||||
AddSubsectionTitle(container, tr::ktg_settings_system());
|
AddSubsectionTitle(container, tr::ktg_settings_system());
|
||||||
|
|
||||||
|
#if defined Q_OS_WIN || defined Q_OS_MAC
|
||||||
|
const auto useNativeDecorationsToggled = Ui::CreateChild<rpl::event_stream<bool>>(
|
||||||
|
container.get());
|
||||||
|
AddButton(
|
||||||
|
container,
|
||||||
|
tr::ktg_settings_use_native_decorations(),
|
||||||
|
st::settingsButton
|
||||||
|
)->toggleOn(
|
||||||
|
useNativeDecorationsToggled->events_starting_with_copy(cUseNativeDecorations())
|
||||||
|
)->toggledValue(
|
||||||
|
) | rpl::filter([](bool enabled) {
|
||||||
|
return (enabled != cUseNativeDecorations());
|
||||||
|
}) | rpl::start_with_next([=](bool enabled) {
|
||||||
|
const auto confirmed = [=] {
|
||||||
|
cSetUseNativeDecorations(enabled);
|
||||||
|
::Kotato::JsonSettings::Write();
|
||||||
|
App::restart();
|
||||||
|
};
|
||||||
|
const auto cancelled = [=] {
|
||||||
|
useNativeDecorationsToggled->fire(cUseNativeDecorations() == true);
|
||||||
|
};
|
||||||
|
Ui::show(Box<ConfirmBox>(
|
||||||
|
tr::lng_settings_need_restart(tr::now),
|
||||||
|
tr::lng_settings_restart_now(tr::now),
|
||||||
|
confirmed,
|
||||||
|
cancelled));
|
||||||
|
}, container->lifetime());
|
||||||
|
#endif // Q_OS_WIN || Q_OS_MAC
|
||||||
|
|
||||||
const QMap<int, QString> trayIconOptions = {
|
const QMap<int, QString> trayIconOptions = {
|
||||||
{ 0, TrayIconLabel(0) },
|
{ 0, TrayIconLabel(0) },
|
||||||
{ 1, TrayIconLabel(1) },
|
{ 1, TrayIconLabel(1) },
|
||||||
|
@@ -633,17 +633,20 @@ UINT MainWindow::_taskbarCreatedMsgId = 0;
|
|||||||
MainWindow::MainWindow(not_null<Window::Controller*> controller)
|
MainWindow::MainWindow(not_null<Window::Controller*> controller)
|
||||||
: Window::MainWindow(controller)
|
: Window::MainWindow(controller)
|
||||||
, ps_tbHider_hWnd(createTaskbarHider()) {
|
, ps_tbHider_hWnd(createTaskbarHider()) {
|
||||||
QCoreApplication::instance()->installNativeEventFilter(
|
if (!UseNativeDecorations()) {
|
||||||
EventFilter::CreateInstance(this));
|
QCoreApplication::instance()->installNativeEventFilter(
|
||||||
|
EventFilter::CreateInstance(this));
|
||||||
|
|
||||||
|
subscribe(Window::Theme::Background(), [this](const Window::Theme::BackgroundUpdate &update) {
|
||||||
|
if (update.paletteChanged()) {
|
||||||
|
_psShadowWindows.setColor(st::windowShadowFg->c);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (!_taskbarCreatedMsgId) {
|
if (!_taskbarCreatedMsgId) {
|
||||||
_taskbarCreatedMsgId = RegisterWindowMessage(L"TaskbarButtonCreated");
|
_taskbarCreatedMsgId = RegisterWindowMessage(L"TaskbarButtonCreated");
|
||||||
}
|
}
|
||||||
subscribe(Window::Theme::Background(), [this](const Window::Theme::BackgroundUpdate &update) {
|
|
||||||
if (update.paletteChanged()) {
|
|
||||||
_psShadowWindows.setColor(st::windowShadowFg->c);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::TaskbarCreated() {
|
void MainWindow::TaskbarCreated() {
|
||||||
@@ -654,16 +657,22 @@ void MainWindow::TaskbarCreated() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::shadowsUpdate(ShadowsChanges changes, WINDOWPOS *position) {
|
void MainWindow::shadowsUpdate(ShadowsChanges changes, WINDOWPOS *position) {
|
||||||
_psShadowWindows.update(changes, position);
|
if (!UseNativeDecorations()) {
|
||||||
|
_psShadowWindows.update(changes, position);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::shadowsActivate() {
|
void MainWindow::shadowsActivate() {
|
||||||
// _psShadowWindows.setColor(_shActive);
|
if (!UseNativeDecorations()) {
|
||||||
shadowsUpdate(ShadowsChange::Activate);
|
// _psShadowWindows.setColor(_shActive);
|
||||||
|
shadowsUpdate(ShadowsChange::Activate);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::shadowsDeactivate() {
|
void MainWindow::shadowsDeactivate() {
|
||||||
// _psShadowWindows.setColor(_shInactive);
|
// if (!UseNativeDecorations()) {
|
||||||
|
// _psShadowWindows.setColor(_shInactive);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::psShowTrayMenu() {
|
void MainWindow::psShowTrayMenu() {
|
||||||
@@ -827,14 +836,16 @@ void MainWindow::initHook() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::initShadows() {
|
void MainWindow::initShadows() {
|
||||||
_psShadowWindows.init(this, st::windowShadowFg->c);
|
if (!UseNativeDecorations()) {
|
||||||
_shadowsWorking = true;
|
_psShadowWindows.init(this, st::windowShadowFg->c);
|
||||||
psUpdateMargins();
|
_shadowsWorking = true;
|
||||||
shadowsUpdate(ShadowsChange::Hidden);
|
psUpdateMargins();
|
||||||
|
shadowsUpdate(ShadowsChange::Hidden);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::firstShadowsUpdate() {
|
void MainWindow::firstShadowsUpdate() {
|
||||||
if (!(windowState() & Qt::WindowMinimized) && !isHidden()) {
|
if (!UseNativeDecorations() && !(windowState() & Qt::WindowMinimized) && !isHidden()) {
|
||||||
shadowsUpdate(ShadowsChange::Moved | ShadowsChange::Resized | ShadowsChange::Shown);
|
shadowsUpdate(ShadowsChange::Moved | ShadowsChange::Resized | ShadowsChange::Shown);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -983,13 +994,17 @@ MainWindow::~MainWindow() {
|
|||||||
taskbarList.Reset();
|
taskbarList.Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
_shadowsWorking = false;
|
|
||||||
if (ps_menu) DestroyMenu(ps_menu);
|
if (ps_menu) DestroyMenu(ps_menu);
|
||||||
psDestroyIcons();
|
psDestroyIcons();
|
||||||
_psShadowWindows.destroy();
|
if (!UseNativeDecorations()) {
|
||||||
|
_shadowsWorking = false;
|
||||||
|
_psShadowWindows.destroy();
|
||||||
|
}
|
||||||
if (ps_tbHider_hWnd) DestroyWindow(ps_tbHider_hWnd);
|
if (ps_tbHider_hWnd) DestroyWindow(ps_tbHider_hWnd);
|
||||||
|
|
||||||
EventFilter::Destroy();
|
if (!UseNativeDecorations()) {
|
||||||
|
EventFilter::Destroy();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Platform
|
} // namespace Platform
|
||||||
|
@@ -357,7 +357,7 @@ void MainWindow::init() {
|
|||||||
|
|
||||||
updatePalette();
|
updatePalette();
|
||||||
|
|
||||||
if ((_title = Platform::CreateTitleWidget(this))) {
|
if (!UseNativeDecorations() && (_title = Platform::CreateTitleWidget(this))) {
|
||||||
_title->init();
|
_title->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user