diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-04-07 17:12:59 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-04-07 17:12:59 +0300 |
commit | 2538267ce30c5cfe3bbf23442e7c3a80e647f260 (patch) | |
tree | 5490d8aa2931645af09e35cee0e6b255592103a9 /src/gui/widgets | |
parent | 7807ed17587b09c39dcd815a554f48e2f6ecb346 (diff) | |
download | manaplus-2538267ce30c5cfe3bbf23442e7c3a80e647f260.tar.gz manaplus-2538267ce30c5cfe3bbf23442e7c3a80e647f260.tar.bz2 manaplus-2538267ce30c5cfe3bbf23442e7c3a80e647f260.tar.xz manaplus-2538267ce30c5cfe3bbf23442e7c3a80e647f260.zip |
For commands in links in chat ask before executing command.
Diffstat (limited to 'src/gui/widgets')
-rw-r--r-- | src/gui/widgets/itemlinkhandler.cpp | 21 | ||||
-rw-r--r-- | src/gui/widgets/itemlinkhandler.h | 9 |
2 files changed, 26 insertions, 4 deletions
diff --git a/src/gui/widgets/itemlinkhandler.cpp b/src/gui/widgets/itemlinkhandler.cpp index a8e90acd7..47314ca5c 100644 --- a/src/gui/widgets/itemlinkhandler.cpp +++ b/src/gui/widgets/itemlinkhandler.cpp @@ -42,6 +42,7 @@ #include "resources/db/itemdb.h" +#include "listeners/inputactionremotelistener.h" #include "listeners/openurllistener.h" #include "debug.h" @@ -52,7 +53,8 @@ namespace } // namespace ItemLinkHandler::ItemLinkHandler() : - LinkHandler() + LinkHandler(), + mAllowCommands(true) { } @@ -72,7 +74,22 @@ void ItemLinkHandler::handleCommandLink(const std::string &link, cmd = cmdStr; args.clear(); } - inputManager.executeRemoteChatCommand(cmd, args, nullptr); + if (mAllowCommands) + { + inputManager.executeRemoteChatCommand(cmd, args, nullptr); + } + else + { + inputActionRemoteListener.setCommand(cmd, args); + ConfirmDialog *const confirmDlg = CREATEWIDGETR(ConfirmDialog, + // TRANSLATORS: dialog message + _("Run command"), + strprintf("/%s %s", cmd.c_str(), args.c_str()), + SOUND_REQUEST, + false, + Modal_true); + confirmDlg->addActionListener(&inputActionRemoteListener); + } } void ItemLinkHandler::handleHelpLink(const std::string &link) diff --git a/src/gui/widgets/itemlinkhandler.h b/src/gui/widgets/itemlinkhandler.h index 6350b9fc3..6a0f87cb7 100644 --- a/src/gui/widgets/itemlinkhandler.h +++ b/src/gui/widgets/itemlinkhandler.h @@ -39,9 +39,12 @@ class ItemLinkHandler final : public LinkHandler void handleLink(const std::string &link, MouseEvent *event) override final; + void setAllowCommands(const bool b) + { mAllowCommands = b; } + private: - static void handleCommandLink(const std::string &link, - const std::string &prefix); + void handleCommandLink(const std::string &link, + const std::string &prefix); static void handleHelpLink(const std::string &link); @@ -51,6 +54,8 @@ class ItemLinkHandler final : public LinkHandler static void handleItemLink(const std::string &link); static void handleSearchLink(const std::string &link); + + bool mAllowCommands; }; #endif // GUI_WIDGETS_ITEMLINKHANDLER_H |