diff --git a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp index 4fc4d060d..7dd61c6da 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp @@ -1150,7 +1150,19 @@ object_ptr DetailsFiller::setupInfo() { PhoneOrHiddenValue(user), tr::lng_profile_copy_phone(tr::now)).text; const auto hook = [=](Ui::FlatLabel::ContextMenuRequest request) { - phoneLabel->fillContextMenu(request); + if (request.selection.empty()) { + const auto callback = [=] { + auto phone = rpl::variable( + PhoneOrHiddenValue(user)).current().text; + phone.replace(' ', QString()).replace('-', QString()); + TextUtilities::SetClipboardText({ phone }); + }; + request.menu->addAction( + tr::lng_profile_copy_phone(tr::now), + callback); + } else { + phoneLabel->fillContextMenu(request); + } AddPhoneMenu(request.menu, user); }; phoneLabel->setContextMenuHook(hook); diff --git a/Telegram/SourceFiles/settings/settings_main.cpp b/Telegram/SourceFiles/settings/settings_main.cpp index 685f3ae57..47aafcdaa 100644 --- a/Telegram/SourceFiles/settings/settings_main.cpp +++ b/Telegram/SourceFiles/settings/settings_main.cpp @@ -35,6 +35,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/wrap/slide_wrap.h" #include "ui/widgets/menu/menu_add_action_callback.h" #include "ui/widgets/continuous_sliders.h" +#include "ui/widgets/popup_menu.h" #include "ui/text/text_utilities.h" #include "ui/toast/toast.h" #include "ui/new_badges.h" @@ -144,6 +145,20 @@ Cover::Cover( _phone->setSelectable(true); _phone->setContextCopyText(tr::lng_profile_copy_phone(tr::now)); + const auto hook = [=](Ui::FlatLabel::ContextMenuRequest request) { + if (request.selection.empty()) { + const auto c = [=] { + auto phone = rpl::variable( + Info::Profile::PhoneValue(_user)).current().text; + phone.replace(' ', QString()).replace('-', QString()); + TextUtilities::SetClipboardText({ phone }); + }; + request.menu->addAction(tr::lng_profile_copy_phone(tr::now), c); + } else { + _phone->fillContextMenu(request); + } + }; + _phone->setContextMenuHook(hook); initViewers(); setupChildGeometry();