diff --git a/Telegram/SourceFiles/info/info_wrap_widget.cpp b/Telegram/SourceFiles/info/info_wrap_widget.cpp index e76674420e..f306961611 100644 --- a/Telegram/SourceFiles/info/info_wrap_widget.cpp +++ b/Telegram/SourceFiles/info/info_wrap_widget.cpp @@ -19,7 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/discrete_sliders.h" #include "ui/widgets/buttons.h" #include "ui/widgets/shadow.h" -#include "ui/widgets/dropdown_menu.h" +#include "ui/widgets/popup_menu.h" #include "ui/wrap/fade_wrap.h" #include "ui/search_field_controller.h" #include "core/application.h" @@ -489,31 +489,20 @@ void WrapWidget::addProfileCallsButton() { void WrapWidget::showTopBarMenu() { if (_topBarMenu) { - _topBarMenu->hideAnimated( - Ui::InnerDropdown::HideOption::IgnoreShow); + _topBarMenu->hideMenu(true); return; } - _topBarMenu = base::make_unique_q( + _topBarMenu = base::make_unique_q( this, - st::dropdownMenuWithIcons); + st::popupMenuWithIcons); - _topBarMenu->setHiddenCallback([this] { + _topBarMenu->setDestroyedCallback([this] { InvokeQueued(this, [this] { _topBarMenu = nullptr; }); if (auto toggle = _topBarMenuToggle.get()) { toggle->setForceRippled(false); } }); - _topBarMenu->setShowStartCallback([this] { - if (auto toggle = _topBarMenuToggle.get()) { - toggle->setForceRippled(true); - } - }); - _topBarMenu->setHideStartCallback([this] { - if (auto toggle = _topBarMenuToggle.get()) { - toggle->setForceRippled(false); - } - }); - _topBarMenuToggle->installEventFilter(_topBarMenu.get()); + _topBarMenuToggle->setForceRippled(true); const auto addAction = Window::PeerMenuCallback([=]( Window::PeerMenuCallback::Args a) { @@ -547,11 +536,9 @@ void WrapWidget::showTopBarMenu() { _topBarMenu = nullptr; return; } - auto position = (wrap() == Wrap::Layer) - ? st::infoLayerTopBarMenuPosition - : st::infoTopBarMenuPosition; - _topBarMenu->moveToRight(position.x(), position.y()); - _topBarMenu->showAnimated(Ui::PanelAnimation::Origin::TopRight); + _topBarMenu->setForcedOrigin(Ui::PanelAnimation::Origin::TopRight); + _topBarMenu->popup(_topBarMenuToggle->mapToGlobal( + st::infoLayerTopBarMenuPosition)); } void WrapWidget::deleteAllDownloads() { diff --git a/Telegram/SourceFiles/info/info_wrap_widget.h b/Telegram/SourceFiles/info/info_wrap_widget.h index 37b12b6e75..4ed2f6057d 100644 --- a/Telegram/SourceFiles/info/info_wrap_widget.h +++ b/Telegram/SourceFiles/info/info_wrap_widget.h @@ -18,7 +18,7 @@ namespace Ui { class SettingsSlider; class FadeShadow; class PlainShadow; -class DropdownMenu; +class PopupMenu; class IconButton; } // namespace Ui @@ -212,7 +212,7 @@ private: object_ptr _topShadow; base::unique_qptr _topBarMenuToggle; - base::unique_qptr _topBarMenu; + base::unique_qptr _topBarMenu; // Tab _tab = Tab::Profile; // std::shared_ptr _anotherTabMemento;