diff --git a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp index 985fde209..ee7ee0ad3 100644 --- a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp +++ b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp @@ -33,6 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/history_view_cursor_state.h" #include "history/view/history_view_service_message.h" #include "media/stories/media_stories_controller.h" // ...TogglePinnedToast. +#include "media/stories/media_stories_share.h" // PrepareShareBox. #include "window/window_session_controller.h" #include "window/window_peer_menu.h" #include "ui/widgets/popup_menu.h" @@ -1104,7 +1105,16 @@ void ListWidget::contextMenuEvent(QContextMenuEvent *e) { } void ListWidget::forwardSelected() { - if (auto items = collectSelectedIds(); !items.empty()) { + if (_controller->storiesPeer()) { + const auto ids = collectSelectedIds(); + if (ids.size() == 1 && IsStoryMsgId(ids.front().msg)) { + const auto id = ids.front(); + _controller->parentController()->show( + ::Media::Stories::PrepareShareBox( + _controller->parentController()->uiShow(), + { id.peer, StoryIdFromMsgId(id.msg) })); + } + } else if (auto items = collectSelectedIds(); !items.empty()) { forwardItems(std::move(items)); } } diff --git a/Telegram/SourceFiles/media/stories/media_stories_controller.cpp b/Telegram/SourceFiles/media/stories/media_stories_controller.cpp index 7ae534475..555611ea4 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_controller.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_controller.cpp @@ -1245,7 +1245,7 @@ void Controller::unfocusReply() { void Controller::shareRequested() { const auto show = _delegate->storiesShow(); - if (auto box = PrepareShareBox(show, _shown)) { + if (auto box = PrepareShareBox(show, _shown, true)) { show->show(std::move(box)); } } diff --git a/Telegram/SourceFiles/media/stories/media_stories_share.cpp b/Telegram/SourceFiles/media/stories/media_stories_share.cpp index 4d1774ff8..0a9b87df5 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_share.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_share.cpp @@ -32,7 +32,8 @@ namespace Media::Stories { [[nodiscard]] object_ptr PrepareShareBox( std::shared_ptr show, - FullStoryId id) { + FullStoryId id, + bool viewerStyle) { const auto session = &show->session(); const auto resolve = [=] { const auto maybeStory = session->data().stories().lookup(id); @@ -170,7 +171,7 @@ namespace Media::Stories { } }; - const auto scheduleStyle = [&] { + const auto viewerScheduleStyle = [&] { auto date = Ui::ChooseDateTimeStyleArgs(); date.labelStyle = &st::groupCallBoxLabel; date.dateFieldStyle = &st::groupCallScheduleDateField; @@ -191,11 +192,13 @@ namespace Media::Stories { .copyCallback = std::move(copyLinkCallback), .submitCallback = std::move(submitCallback), .filterCallback = std::move(filterCallback), - .stMultiSelect = &st::groupCallMultiSelect, - .stComment = &st::groupCallShareBoxComment, - .st = &st::groupCallShareBoxList, - .stLabel = &st::groupCallField, - .scheduleBoxStyle = scheduleStyle(), + .stMultiSelect = viewerStyle ? &st::groupCallMultiSelect : nullptr, + .stComment = viewerStyle ? &st::groupCallShareBoxComment : nullptr, + .st = viewerStyle ? &st::groupCallShareBoxList : nullptr, + .stLabel = viewerStyle ? &st::groupCallField : nullptr, + .scheduleBoxStyle = (viewerStyle + ? viewerScheduleStyle() + : HistoryView::ScheduleBoxStyleArgs()), }); } diff --git a/Telegram/SourceFiles/media/stories/media_stories_share.h b/Telegram/SourceFiles/media/stories/media_stories_share.h index e3dab6245..efb633930 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_share.h +++ b/Telegram/SourceFiles/media/stories/media_stories_share.h @@ -21,6 +21,7 @@ namespace Media::Stories { [[nodiscard]] object_ptr PrepareShareBox( std::shared_ptr show, - FullStoryId id); + FullStoryId id, + bool viewerStyle = false); } // namespace Media::Stories