From c2f64700c1bbcb2c3f9cf0e94183ac3f9aeffc09 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Sat, 7 Mar 2026 00:27:20 +0000 Subject: [PATCH] Move external video player option handling to SessionController::openDocument --- .../data/data_document_resolver.cpp | 16 +--------------- .../SourceFiles/data/data_document_resolver.h | 2 -- .../settings/settings_experimental.cpp | 3 +-- .../window/window_session_controller.cpp | 18 ++++++++++++++++++ .../window/window_session_controller.h | 2 ++ 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/Telegram/SourceFiles/data/data_document_resolver.cpp b/Telegram/SourceFiles/data/data_document_resolver.cpp index 57ffe8f9e4..47d58a1636 100644 --- a/Telegram/SourceFiles/data/data_document_resolver.cpp +++ b/Telegram/SourceFiles/data/data_document_resolver.cpp @@ -7,7 +7,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "data/data_document_resolver.h" -#include "base/options.h" #include "base/platform/base_platform_info.h" #include "boxes/abstract_box.h" // Ui::show(). #include "chat_helpers/ttl_media_layer_widget.h" @@ -39,13 +38,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace Data { namespace { -base::options::toggle OptionExternalVideoPlayer({ - .id = kOptionExternalVideoPlayer, - .name = "External video player", - .description = "Use system video player instead of the internal one. " - "This disabes video playback in messages.", -}); - void ConfirmDontWarnBox( not_null box, rpl::producer &&text, @@ -153,8 +145,6 @@ void LaunchWithWarning( } // namespace -const char kOptionExternalVideoPlayer[] = "external-video-player"; - base::binary_guard ReadBackgroundImageAsync( not_null media, FnMut postprocess, @@ -199,11 +189,7 @@ void ResolveDocument( const auto msgId = item ? item->fullId() : FullMsgId(); const auto showDocument = [&] { - if (OptionExternalVideoPlayer.value() - && document->isVideoFile() - && !document->filepath().isEmpty()) { - File::Launch(document->location(false).fname); - } else if (controller) { + if (controller) { controller->openDocument( document, true, diff --git a/Telegram/SourceFiles/data/data_document_resolver.h b/Telegram/SourceFiles/data/data_document_resolver.h index de9327312f..077a795476 100644 --- a/Telegram/SourceFiles/data/data_document_resolver.h +++ b/Telegram/SourceFiles/data/data_document_resolver.h @@ -20,8 +20,6 @@ namespace Data { class DocumentMedia; -extern const char kOptionExternalVideoPlayer[]; - base::binary_guard ReadBackgroundImageAsync( not_null media, FnMut postprocess, diff --git a/Telegram/SourceFiles/settings/settings_experimental.cpp b/Telegram/SourceFiles/settings/settings_experimental.cpp index 07a48ffe70..5a9129a01f 100644 --- a/Telegram/SourceFiles/settings/settings_experimental.cpp +++ b/Telegram/SourceFiles/settings/settings_experimental.cpp @@ -38,7 +38,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "window/window_controller.h" #include "window/notifications_manager.h" #include "storage/localimageloader.h" -#include "data/data_document_resolver.h" #include "info/info_flexible_scroll.h" #include "chat_helpers/stickers_list_widget.h" #include "styles/style_settings.h" @@ -168,7 +167,7 @@ void SetupExperimental( addToggle(Core::kOptionFreeType); addToggle(Core::kOptionSkipUrlSchemeRegister); addToggle(Core::kOptionDeadlockDetector); - addToggle(Data::kOptionExternalVideoPlayer); + addToggle(Window::kOptionExternalVideoPlayer); addToggle(Window::kOptionNewWindowsSizeAsFirst); addToggle(MTP::details::kOptionPreferIPv6); if (base::options::lookup(kOptionFastButtonsMode).value()) { diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index e1e49fa9c4..8a06e4ddde 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -69,7 +69,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "core/shortcuts.h" #include "core/application.h" #include "core/click_handler_types.h" +#include "core/file_utilities.h" #include "core/ui_integration.h" +#include "base/options.h" #include "base/unixtime.h" #include "info/channel_statistics/earn/earn_icons.h" #include "ui/controls/userpic_button.h" @@ -127,6 +129,13 @@ namespace { constexpr auto kCustomThemesInMemory = 5; constexpr auto kMaxChatEntryHistorySize = 50; +base::options::toggle OptionExternalVideoPlayer({ + .id = kOptionExternalVideoPlayer, + .name = "External video player", + .description = "Use system video player instead of the internal one. " + "This disabes video playback in messages.", +}); + class MainWindowShow final : public ChatHelpers::Show { public: explicit MainWindowShow(not_null controller); @@ -313,6 +322,8 @@ void MainWindowShow::processChosenSticker( } // namespace +const char kOptionExternalVideoPlayer[] = "external-video-player"; + void ActivateWindow(not_null controller) { Ui::ActivateWindow(controller->widget()); } @@ -3196,6 +3207,13 @@ void SessionController::openDocument( if (openSharedStory(item) || openFakeItemStory(message.id, stories)) { return; } else if (showInMediaView) { + const auto filepath = document->filepath(); + if (OptionExternalVideoPlayer.value() + && document->isVideoFile() + && !filepath.isEmpty()) { + File::Launch(filepath); + return; + } using namespace Media::View; const auto saved = session().local().mediaLastPlaybackPosition( document->id); diff --git a/Telegram/SourceFiles/window/window_session_controller.h b/Telegram/SourceFiles/window/window_session_controller.h index fed0de87c9..915b909719 100644 --- a/Telegram/SourceFiles/window/window_session_controller.h +++ b/Telegram/SourceFiles/window/window_session_controller.h @@ -108,6 +108,8 @@ class ChatSwitchProcess; struct PeerByLinkInfo; struct SeparateId; +extern const char kOptionExternalVideoPlayer[]; + struct PeerThemeOverride { PeerData *peer = nullptr; std::shared_ptr theme;