diff --git a/Telegram/SourceFiles/media/stories/media_stories_controller.cpp b/Telegram/SourceFiles/media/stories/media_stories_controller.cpp index e66172ee5..cf411bc7b 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_controller.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_controller.cpp @@ -10,7 +10,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/timer.h" #include "base/power_save_blocker.h" #include "base/qt_signal_producer.h" +#include "boxes/peers/prepare_short_info_box.h" #include "chat_helpers/compose/compose_show.h" +#include "core/application.h" #include "core/update_checker.h" #include "data/stickers/data_custom_emoji.h" #include "data/data_changes.h" @@ -45,6 +47,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/labels.h" #include "ui/round_rect.h" #include "ui/rp_widget.h" +#include "window/window_controller.h" +#include "window/window_session_controller.h" #include "styles/style_chat.h" #include "styles/style_chat_helpers.h" #include "styles/style_media_view.h" @@ -1388,4 +1392,23 @@ void ReportRequested( })); } +object_ptr PrepareShortInfoBox(not_null peer) { + const auto open = [=] { + if (const auto window = Core::App().windowFor(peer)) { + window->invokeForSessionController( + &peer->session().account(), + peer, + [&](not_null controller) { + Core::App().hideMediaView(); + controller->showPeerHistory(peer); + }); + } + }; + return ::PrepareShortInfoBox( + peer, + open, + [] { return false; }, + &st::storiesShortInfoBox); +} + } // namespace Media::Stories diff --git a/Telegram/SourceFiles/media/stories/media_stories_controller.h b/Telegram/SourceFiles/media/stories/media_stories_controller.h index 694082a04..5463cdc83 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_controller.h +++ b/Telegram/SourceFiles/media/stories/media_stories_controller.h @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once +#include "base/object_ptr.h" #include "data/data_stories.h" #include "ui/effects/animations.h" @@ -36,6 +37,7 @@ namespace Ui { class RpWidget; struct MessageSendingAnimationFrom; class EmojiFlyAnimation; +class BoxContent; } // namespace Ui namespace Ui::Toast { @@ -269,5 +271,7 @@ void ReportRequested( std::shared_ptr show, FullStoryId id, const style::ReportBox *stOverride = nullptr); +[[nodiscard]] object_ptr PrepareShortInfoBox( + not_null peer); } // namespace Media::Stories diff --git a/Telegram/SourceFiles/media/stories/media_stories_header.cpp b/Telegram/SourceFiles/media/stories/media_stories_header.cpp index cbd67f5e6..dc33da5f4 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_header.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_header.cpp @@ -8,10 +8,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "media/stories/media_stories_header.h" #include "base/unixtime.h" +#include "chat_helpers/compose/compose_show.h" #include "data/data_user.h" #include "media/stories/media_stories_controller.h" #include "lang/lang_keys.h" #include "ui/controls/userpic_button.h" +#include "ui/layers/box_content.h" #include "ui/text/format_values.h" #include "ui/widgets/labels.h" #include "ui/painter.h" @@ -92,13 +94,16 @@ void Header::show(HeaderData data) { if (userChanged) { _date = nullptr; const auto parent = _controller->wrap(); - auto widget = std::make_unique(parent); + auto widget = std::make_unique(parent); const auto raw = widget.get(); - raw->setAttribute(Qt::WA_TransparentForMouseEvents); + raw->setClickedCallback([=] { + _controller->uiShow()->show(PrepareShortInfoBox(_data->user)); + }); const auto userpic = Ui::CreateChild( raw, data.user, st::storiesHeaderPhoto); + userpic->setAttribute(Qt::WA_TransparentForMouseEvents); userpic->show(); userpic->move( st::storiesHeaderMargin.left(), @@ -107,6 +112,7 @@ void Header::show(HeaderData data) { raw, data.user->firstName, st::storiesHeaderName); + name->setAttribute(Qt::WA_TransparentForMouseEvents); name->setOpacity(kNameOpacity); name->move(st::storiesHeaderNamePosition); raw->show(); @@ -122,6 +128,7 @@ void Header::show(HeaderData data) { _widget.get(), std::move(timestamp.text), st::storiesHeaderDate); + _date->setAttribute(Qt::WA_TransparentForMouseEvents); _date->setOpacity(kDateOpacity); _date->show(); _date->move(st::storiesHeaderDatePosition); diff --git a/Telegram/SourceFiles/media/stories/media_stories_recent_views.cpp b/Telegram/SourceFiles/media/stories/media_stories_recent_views.cpp index 306e1a1f0..5f24fe717 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_recent_views.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_recent_views.cpp @@ -8,8 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "media/stories/media_stories_recent_views.h" #include "api/api_who_reacted.h" // FormatReadDate. -#include "boxes/peers/prepare_short_info_box.h" -#include "core/application.h" +#include "chat_helpers/compose/compose_show.h" #include "data/data_peer.h" #include "data/data_stories.h" #include "main/main_session.h" @@ -22,8 +21,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/painter.h" #include "ui/rp_widget.h" #include "ui/userpic_view.h" -#include "window/window_controller.h" -#include "window/window_session_controller.h" #include "styles/style_chat_helpers.h" #include "styles/style_media_view.h" @@ -332,24 +329,6 @@ void RecentViews::addMenuRow(Data::StoryView entry, const QDateTime &now) { const auto show = _controller->uiShow(); const auto prepare = [&](Ui::PeerUserpicView &view) { const auto size = st::storiesWhoViewed.photoSize; - auto callback = [=] { - const auto open = [=] { - if (const auto window = Core::App().windowFor(peer)) { - window->invokeForSessionController( - &peer->session().account(), - peer, - [&](not_null controller) { - Core::App().hideMediaView(); - controller->showPeerHistory(peer); - }); - } - }; - show->show(PrepareShortInfoBox( - peer, - open, - [] { return false; }, - &st::storiesShortInfoBox)); - }; auto userpic = peer->generateUserpicImage( view, size * style::DevicePixelRatio()); @@ -358,7 +337,7 @@ void RecentViews::addMenuRow(Data::StoryView entry, const QDateTime &now) { .text = peer->name(), .date = date, .userpic = std::move(userpic), - .callback = std::move(callback), + .callback = [=] { show->show(PrepareShortInfoBox(peer)); }, }; }; if (_menuPlaceholderCount > 0) {