mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-07 23:53:58 +02:00
Added ability to copy monospace text via click.
This commit is contained in:
parent
4ee9751feb
commit
d4afba3a24
4 changed files with 64 additions and 0 deletions
|
@ -1972,6 +1972,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
"lng_formatting_link_url" = "URL";
|
"lng_formatting_link_url" = "URL";
|
||||||
"lng_formatting_link_create" = "Create";
|
"lng_formatting_link_create" = "Create";
|
||||||
|
|
||||||
|
"lng_text_copied" = "Text copied to clipboard.";
|
||||||
|
|
||||||
"lng_spellchecker_submenu" = "Spelling";
|
"lng_spellchecker_submenu" = "Spelling";
|
||||||
"lng_spellchecker_add" = "Add to Dictionary";
|
"lng_spellchecker_add" = "Add to Dictionary";
|
||||||
"lng_spellchecker_remove" = "Remove from Dictionary";
|
"lng_spellchecker_remove" = "Remove from Dictionary";
|
||||||
|
|
|
@ -14,6 +14,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
#include "ui/boxes/confirm_box.h"
|
#include "ui/boxes/confirm_box.h"
|
||||||
|
#include "ui/text/text_entity.h"
|
||||||
|
#include "ui/toast/toast.h"
|
||||||
#include "base/qthelp_regex.h"
|
#include "base/qthelp_regex.h"
|
||||||
#include "storage/storage_account.h"
|
#include "storage/storage_account.h"
|
||||||
#include "history/history.h"
|
#include "history/history.h"
|
||||||
|
@ -266,3 +268,41 @@ void BotCommandClickHandler::onClick(ClickContext context) const {
|
||||||
auto BotCommandClickHandler::getTextEntity() const -> TextEntity {
|
auto BotCommandClickHandler::getTextEntity() const -> TextEntity {
|
||||||
return { EntityType::BotCommand };
|
return { EntityType::BotCommand };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MonospaceClickHandler::MonospaceClickHandler(
|
||||||
|
const QString &text,
|
||||||
|
EntityType type)
|
||||||
|
: _text(text)
|
||||||
|
, _entity({ type }) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void MonospaceClickHandler::onClick(ClickContext context) const {
|
||||||
|
const auto button = context.button;
|
||||||
|
if (button != Qt::LeftButton && button != Qt::MiddleButton) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const auto my = context.other.value<ClickHandlerContext>();
|
||||||
|
if (const auto controller = my.sessionWindow.get()) {
|
||||||
|
auto &data = controller->session().data();
|
||||||
|
const auto item = data.message(my.itemId);
|
||||||
|
const auto hasCopyRestriction = item
|
||||||
|
&& (!item->history()->peer->allowsForwarding()
|
||||||
|
|| item->forbidsForward());
|
||||||
|
if (hasCopyRestriction) {
|
||||||
|
Ui::Toast::Show(item->history()->peer->isBroadcast()
|
||||||
|
? tr::lng_error_nocopy_channel(tr::now)
|
||||||
|
: tr::lng_error_nocopy_group(tr::now));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ui::Toast::Show(tr::lng_text_copied(tr::now));
|
||||||
|
TextUtilities::SetClipboardText(TextForMimeData::Simple(_text.trimmed()));
|
||||||
|
}
|
||||||
|
|
||||||
|
auto MonospaceClickHandler::getTextEntity() const -> TextEntity {
|
||||||
|
return _entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString MonospaceClickHandler::url() const {
|
||||||
|
return _text;
|
||||||
|
}
|
||||||
|
|
|
@ -195,3 +195,20 @@ private:
|
||||||
QString _cmd;
|
QString _cmd;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MonospaceClickHandler : public TextClickHandler {
|
||||||
|
public:
|
||||||
|
MonospaceClickHandler(const QString &text, EntityType type);
|
||||||
|
|
||||||
|
void onClick(ClickContext context) const override;
|
||||||
|
|
||||||
|
TextEntity getTextEntity() const override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QString url() const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
const QString _text;
|
||||||
|
const TextEntity _entity;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
|
@ -202,6 +202,11 @@ std::shared_ptr<ClickHandler> UiIntegration::createLinkHandler(
|
||||||
LOG(("Bad mention name: %1").arg(data.data));
|
LOG(("Bad mention name: %1").arg(data.data));
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
case EntityType::Code:
|
||||||
|
return std::make_shared<MonospaceClickHandler>(data.text, data.type);
|
||||||
|
case EntityType::Pre:
|
||||||
|
return std::make_shared<MonospaceClickHandler>(data.text, data.type);
|
||||||
}
|
}
|
||||||
return Integration::createLinkHandler(data, context);
|
return Integration::createLinkHandler(data, context);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue