summaryrefslogtreecommitdiff
path: root/src/gui/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/widgets')
-rw-r--r--src/gui/widgets/browserbox.cpp1
-rw-r--r--src/gui/widgets/itemlinkhandler.cpp20
2 files changed, 17 insertions, 4 deletions
diff --git a/src/gui/widgets/browserbox.cpp b/src/gui/widgets/browserbox.cpp
index 26d446060..34dfb50bf 100644
--- a/src/gui/widgets/browserbox.cpp
+++ b/src/gui/widgets/browserbox.cpp
@@ -355,6 +355,7 @@ void BrowserBox::mousePressed(gcn::MouseEvent &event)
if (i != mLinks.end())
mLinkHandler->handleLink(i->link, &event);
+ event.consume();
}
void BrowserBox::mouseMoved(gcn::MouseEvent &event)
diff --git a/src/gui/widgets/itemlinkhandler.cpp b/src/gui/widgets/itemlinkhandler.cpp
index 293eb5237..4c5baa8a5 100644
--- a/src/gui/widgets/itemlinkhandler.cpp
+++ b/src/gui/widgets/itemlinkhandler.cpp
@@ -35,6 +35,7 @@
#include <string>
#include <guichan/actionlistener.hpp>
+#include <guichan/mouseinput.hpp>
#include "debug.h"
@@ -61,7 +62,7 @@ ItemLinkHandler::~ItemLinkHandler()
}
void ItemLinkHandler::handleLink(const std::string &link,
- gcn::MouseEvent *event A_UNUSED)
+ gcn::MouseEvent *event)
{
if (!strStartWith(link, "http://"))
{
@@ -92,11 +93,22 @@ void ItemLinkHandler::handleLink(const std::string &link,
}
else
{
+ if (!event)
+ return;
std::string url = link;
replaceAll(url, " ", "");
listener.url = url;
- ConfirmDialog *const confirmDlg = new ConfirmDialog(
- _("Open url"), url, false, true);
- confirmDlg->addActionListener(&listener);
+ const int button = event->getButton();
+ if (button == gcn::MouseInput::LEFT)
+ {
+ ConfirmDialog *const confirmDlg = new ConfirmDialog(
+ _("Open url"), url, false, true);
+ confirmDlg->addActionListener(&listener);
+ }
+ else if (button == gcn::MouseInput::RIGHT)
+ {
+ if (viewport)
+ viewport->showLinkPopup(url);
+ }
}
}