Add a hook into click handler activation.
This commit is contained in:
parent
8a56048801
commit
fc8d4d25de
3 changed files with 14 additions and 1 deletions
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
#include "base/algorithm.h"
|
#include "base/algorithm.h"
|
||||||
#include "ui/text/text_entity.h"
|
#include "ui/text/text_entity.h"
|
||||||
|
#include "ui/integration.h"
|
||||||
|
|
||||||
#include <QtCore/QPointer>
|
#include <QtCore/QPointer>
|
||||||
|
|
||||||
|
|
@ -170,7 +171,9 @@ void ActivateClickHandler(
|
||||||
ClickContext context) {
|
ClickContext context) {
|
||||||
crl::on_main(guard, [=, weak = std::weak_ptr<ClickHandler>(handler)] {
|
crl::on_main(guard, [=, weak = std::weak_ptr<ClickHandler>(handler)] {
|
||||||
if (const auto strong = weak.lock()) {
|
if (const auto strong = weak.lock()) {
|
||||||
strong->onClick(context);
|
if (Ui::Integration::Instance().allowClickHandlerActivation(strong, context)) {
|
||||||
|
strong->onClick(context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,12 @@ Fn<void()> Integration::createSpoilerRepaint(const std::any &context) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Integration::allowClickHandlerActivation(
|
||||||
|
const std::shared_ptr<ClickHandler> &handler,
|
||||||
|
const ClickContext &context) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool Integration::handleUrlClick(
|
bool Integration::handleUrlClick(
|
||||||
const QString &url,
|
const QString &url,
|
||||||
const QVariant &context) {
|
const QVariant &context) {
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ class QVariant;
|
||||||
|
|
||||||
struct TextParseOptions;
|
struct TextParseOptions;
|
||||||
class ClickHandler;
|
class ClickHandler;
|
||||||
|
struct ClickContext;
|
||||||
struct EntityLinkData;
|
struct EntityLinkData;
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
|
|
@ -64,6 +65,9 @@ public:
|
||||||
const std::any &context) -> std::unique_ptr<Text::CustomEmoji>;
|
const std::any &context) -> std::unique_ptr<Text::CustomEmoji>;
|
||||||
[[nodiscard]] virtual Fn<void()> createSpoilerRepaint(
|
[[nodiscard]] virtual Fn<void()> createSpoilerRepaint(
|
||||||
const std::any &context);
|
const std::any &context);
|
||||||
|
[[nodiscard]] virtual bool allowClickHandlerActivation(
|
||||||
|
const std::shared_ptr<ClickHandler> &handler,
|
||||||
|
const ClickContext &context);
|
||||||
|
|
||||||
[[nodiscard]] virtual rpl::producer<> forcePopupMenuHideRequests();
|
[[nodiscard]] virtual rpl::producer<> forcePopupMenuHideRequests();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue