mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-14 21:27:07 +02:00
fix: refactor popup
decouple it from submenu, because submenu causes issues with reactions lol
This commit is contained in:
parent
a67655a532
commit
d3ab1d60ce
4 changed files with 33 additions and 52 deletions
|
@ -21,26 +21,22 @@
|
|||
namespace AyuUi
|
||||
{
|
||||
|
||||
AyuPopupMenu::AyuPopupMenu(HistoryInner *parent)
|
||||
{
|
||||
_ayuSubMenu = std::make_unique<Ui::PopupMenu>(parent, st::popupMenuWithIcons);
|
||||
}
|
||||
|
||||
void AyuPopupMenu::addHistoryAction(HistoryItem *item)
|
||||
void AddHistoryAction(not_null<Ui::PopupMenu *> menu, HistoryItem *item)
|
||||
{
|
||||
if (AyuMessages::getInstance().hasRevisions(item)) {
|
||||
_ayuSubMenu->addAction(tr::ayu_EditsHistoryMenuText(tr::now), [=]
|
||||
menu->addAction(tr::ayu_EditsHistoryMenuText(tr::now), [=]
|
||||
{
|
||||
item->history()->session().tryResolveWindow()->showSection(std::make_shared<EditedLog::SectionMemento>(item->history()->peer, item));
|
||||
item->history()->session().tryResolveWindow()
|
||||
->showSection(std::make_shared<EditedLog::SectionMemento>(item->history()->peer, item));
|
||||
}, &st::menuIconInfo);
|
||||
}
|
||||
}
|
||||
|
||||
void AyuPopupMenu::addHideMessageAction(HistoryItem *item) const
|
||||
void AddHideMessageAction(not_null<Ui::PopupMenu *> menu, HistoryItem *item)
|
||||
{
|
||||
const auto settings = &AyuSettings::getInstance();
|
||||
const auto history = item->history();
|
||||
_ayuSubMenu->addAction(tr::ayu_ContextHideMessage(tr::now), [=]()
|
||||
menu->addAction(tr::ayu_ContextHideMessage(tr::now), [=]()
|
||||
{
|
||||
const auto initSaveDeleted = settings->saveDeletedMessages;
|
||||
|
||||
|
@ -50,10 +46,15 @@ void AyuPopupMenu::addHideMessageAction(HistoryItem *item) const
|
|||
}, &st::menuIconClear);
|
||||
}
|
||||
|
||||
void AyuPopupMenu::addReadUntilAction(HistoryItem *item) const
|
||||
void AddReadUntilAction(not_null<Ui::PopupMenu *> menu, HistoryItem *item)
|
||||
{
|
||||
const auto settings = &AyuSettings::getInstance();
|
||||
if (settings->sendReadMessages) {
|
||||
return;
|
||||
}
|
||||
|
||||
const auto history = item->history();
|
||||
_ayuSubMenu->addAction(tr::ayu_ReadUntilMenuText(tr::now), [=]()
|
||||
menu->addAction(tr::ayu_ReadUntilMenuText(tr::now), [=]()
|
||||
{
|
||||
AyuState::setAllowSendReadPacket(true);
|
||||
history->session().data().histories().readInboxOnNewMessage(item);
|
||||
|
|
|
@ -83,18 +83,10 @@
|
|||
namespace AyuUi
|
||||
{
|
||||
|
||||
class AyuPopupMenu
|
||||
{
|
||||
public:
|
||||
AyuPopupMenu(HistoryInner *parent);
|
||||
void AddHistoryAction(not_null<Ui::PopupMenu *>menu, HistoryItem *item);
|
||||
|
||||
void addHistoryAction(HistoryItem *item);
|
||||
void AddHideMessageAction(not_null<Ui::PopupMenu *>menu, HistoryItem *item);
|
||||
|
||||
void addHideMessageAction(HistoryItem *item) const;
|
||||
|
||||
void addReadUntilAction(HistoryItem *item) const;
|
||||
|
||||
std::unique_ptr<Ui::PopupMenu> _ayuSubMenu;
|
||||
};
|
||||
void AddReadUntilAction(not_null<Ui::PopupMenu *>menu, HistoryItem *item);
|
||||
|
||||
}
|
||||
|
|
|
@ -2225,13 +2225,8 @@ void HistoryInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
|
|||
}), isPinned ? &st::menuIconUnpin : &st::menuIconPin);
|
||||
}
|
||||
|
||||
// ayu context menu options
|
||||
auto ayuSubMenu = AyuUi::AyuPopupMenu(this);
|
||||
ayuSubMenu.addHistoryAction(item);
|
||||
ayuSubMenu.addHideMessageAction(item);
|
||||
ayuSubMenu.addReadUntilAction(item);
|
||||
|
||||
_menu->addAction(QString("Ayu"), std::move(ayuSubMenu._ayuSubMenu), &st::ayuMenuIcon, &st::ayuMenuIcon);
|
||||
AyuUi::AddHistoryAction(_menu, item);
|
||||
AyuUi::AddHideMessageAction(_menu, item);
|
||||
};
|
||||
const auto addPhotoActions = [&](not_null<PhotoData*> photo, HistoryItem *item) {
|
||||
const auto media = photo->activeMediaView();
|
||||
|
@ -2327,6 +2322,8 @@ void HistoryInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
|
|||
}
|
||||
}, &st::menuIconSelect);
|
||||
}
|
||||
|
||||
AyuUi::AddReadUntilAction(_menu, item);
|
||||
};
|
||||
|
||||
const auto lnkPhoto = link
|
||||
|
|
|
@ -75,13 +75,16 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include <QtGui/QGuiApplication>
|
||||
#include <QtGui/QClipboard>
|
||||
|
||||
|
||||
// AyuGram includes
|
||||
#include "ayu/ayu_settings.h"
|
||||
#include "ayu/database/ayu_database.h"
|
||||
#include "ayu/messages/ayu_messages_controller.h"
|
||||
#include "ayu/ui/context_menu/context_menu.h"
|
||||
#include "ayu/ui/boxes/message_history_box.h"
|
||||
#include "ayu/ui/sections/edited/edited_log_section.h"
|
||||
|
||||
|
||||
namespace HistoryView {
|
||||
namespace {
|
||||
|
||||
|
@ -941,6 +944,11 @@ void AddMessageActions(
|
|||
not_null<Ui::PopupMenu*> menu,
|
||||
const ContextMenuRequest &request,
|
||||
not_null<ListWidget*> list) {
|
||||
if (request.item) {
|
||||
AyuUi::AddHistoryAction(menu, request.item);
|
||||
AyuUi::AddHideMessageAction(menu, request.item);
|
||||
}
|
||||
|
||||
AddPostLinkAction(menu, request);
|
||||
AddForwardAction(menu, request, list);
|
||||
AddSendNowAction(menu, request, list);
|
||||
|
@ -949,6 +957,11 @@ void AddMessageActions(
|
|||
AddReportAction(menu, request, list);
|
||||
AddSelectionAction(menu, request, list);
|
||||
AddRescheduleAction(menu, request, list);
|
||||
|
||||
if (request.item)
|
||||
{
|
||||
AyuUi::AddReadUntilAction(menu, request.item);
|
||||
}
|
||||
}
|
||||
|
||||
void AddCopyLinkAction(
|
||||
|
@ -1086,28 +1099,6 @@ base::unique_qptr<Ui::PopupMenu> FillContextMenu(
|
|||
}
|
||||
}
|
||||
|
||||
if (item)
|
||||
{
|
||||
if (AyuMessages::getInstance().hasRevisions(item))
|
||||
{
|
||||
result->addAction(tr::ayu_EditsHistoryMenuText(tr::now), [=]
|
||||
{
|
||||
item->history()->session().tryResolveWindow()->showSection(std::make_shared<EditedLog::SectionMemento>(item->history()->peer, item));
|
||||
}, &st::menuIconInfo);
|
||||
}
|
||||
|
||||
const auto settings = &AyuSettings::getInstance();
|
||||
const auto history = item->history();
|
||||
result->addAction(tr::ayu_ContextHideMessage(tr::now), [=]()
|
||||
{
|
||||
const auto initKeepDeleted = settings->saveDeletedMessages;
|
||||
|
||||
settings->set_keepDeletedMessages(false);
|
||||
history->destroyMessage(item);
|
||||
settings->set_keepDeletedMessages(initKeepDeleted);
|
||||
}, &st::menuIconClear);
|
||||
}
|
||||
|
||||
if (!view || !list->hasCopyRestriction(view->data())) {
|
||||
AddCopyLinkAction(result, link);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue