summaryrefslogtreecommitdiff
path: root/src/gui/popups
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-09-07 20:02:02 +0300
committerAndrei Karas <akaras@inbox.ru>2014-09-07 20:02:02 +0300
commit4fc40c384a3423e43f2e589809c9bc9aa8bda495 (patch)
treebe68429d688d6ef7bcba72c865ebcd080db871c6 /src/gui/popups
parent249d59d10905f46ee91683d08386c7bc9936bc4b (diff)
downloadmv-4fc40c384a3423e43f2e589809c9bc9aa8bda495.tar.gz
mv-4fc40c384a3423e43f2e589809c9bc9aa8bda495.tar.bz2
mv-4fc40c384a3423e43f2e589809c9bc9aa8bda495.tar.xz
mv-4fc40c384a3423e43f2e589809c9bc9aa8bda495.zip
For some popup menus use current mouse position.
Diffstat (limited to 'src/gui/popups')
-rw-r--r--src/gui/popups/popupmenu.cpp55
-rw-r--r--src/gui/popups/popupmenu.h13
2 files changed, 38 insertions, 30 deletions
diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp
index b3569488e..14f3cf495 100644
--- a/src/gui/popups/popupmenu.cpp
+++ b/src/gui/popups/popupmenu.cpp
@@ -40,6 +40,7 @@
#include "input/inputmanager.h"
#include "gui/buttontext.h"
+#include "gui/gui.h"
#include "gui/viewport.h"
#include "gui/windows/chatwindow.h"
@@ -317,6 +318,19 @@ void PopupMenu::showPopup(const int x, const int y, const Being *const being)
showPopup(x, y);
}
+void PopupMenu::setMousePos()
+{
+ if (viewport)
+ {
+ mX = viewport->mMouseX;
+ mY = viewport->mMouseY;
+ }
+ else
+ {
+ Gui::getMouseState(&mX, &mY);
+ }
+}
+
void PopupMenu::showPopup(const int x, const int y,
const std::vector<ActorSprite*> &beings)
{
@@ -351,17 +365,15 @@ void PopupMenu::showPopup(const int x, const int y,
showPopup(x, y);
}
-void PopupMenu::showPlayerPopup(const int x, const int y,
- const std::string &nick)
+void PopupMenu::showPlayerPopup(const std::string &nick)
{
if (nick.empty() || !localPlayer)
return;
+ setMousePos();
mNick = nick;
mBeingId = 0;
mType = static_cast<int>(ActorType::PLAYER);
- mX = x;
- mY = y;
mBrowserBox->clearRows();
const std::string &name = mNick;
@@ -447,7 +459,7 @@ void PopupMenu::showPlayerPopup(const int x, const int y,
// TRANSLATORS: close menu
mBrowserBox->addRow("cancel", _("Cancel"));
- showPopup(x, y);
+ showPopup(mX, mY);
}
void PopupMenu::showPopup(const int x, const int y,
@@ -456,9 +468,9 @@ void PopupMenu::showPopup(const int x, const int y,
if (!floorItem)
return;
- mFloorItemId = floorItem->getId();
mX = x;
mY = y;
+ mFloorItemId = floorItem->getId();
mType = static_cast<int>(ActorType::FLOOR_ITEM);
mBrowserBox->clearRows();
const std::string name = floorItem->getName();
@@ -494,7 +506,7 @@ void PopupMenu::showPopup(const int x, const int y,
// TRANSLATORS: close menu
mBrowserBox->addRow("cancel", _("Cancel"));
- showPopup(x, y);
+ showPopup(mX, mY);
}
void PopupMenu::showPopup(const int x, const int y, MapItem *const mapItem)
@@ -854,12 +866,12 @@ void PopupMenu::showChangePos(const int x, const int y)
}
}
-void PopupMenu::showWindowPopup(Window *const window,
- const int x, const int y)
+void PopupMenu::showWindowPopup(Window *const window)
{
if (!window)
return;
+ setMousePos();
mWindow = window;
mBrowserBox->clearRows();
// TRANSLATORS: popup menu header
@@ -871,7 +883,7 @@ void PopupMenu::showWindowPopup(Window *const window,
// TRANSLATORS: close menu
mBrowserBox->addRow("cancel", _("Cancel"));
- showPopup(x, y);
+ showPopup(mX, mY);
}
void PopupMenu::addWindowMenu(Window *const window)
@@ -2412,10 +2424,9 @@ void PopupMenu::showUndressPopup(const int x, const int y,
showPopup(x, y);
}
-void PopupMenu::showTextFieldPopup(int x, int y, TextField *const input)
+void PopupMenu::showTextFieldPopup(TextField *const input)
{
- mX = x;
- mY = y;
+ setMousePos();
mTextField = input;
mBrowserBox->clearRows();
@@ -2431,14 +2442,12 @@ void PopupMenu::showTextFieldPopup(int x, int y, TextField *const input)
// TRANSLATORS: close menu
mBrowserBox->addRow("cancel", _("Cancel"));
- showPopup(x, y);
+ showPopup(mX, mY);
}
-void PopupMenu::showLinkPopup(const int x, const int y,
- const std::string &link)
+void PopupMenu::showLinkPopup(const std::string &link)
{
- mX = x;
- mY = y;
+ setMousePos();
mNick = link;
mBrowserBox->clearRows();
@@ -2454,14 +2463,12 @@ void PopupMenu::showLinkPopup(const int x, const int y,
// TRANSLATORS: close menu
mBrowserBox->addRow("cancel", _("Cancel"));
- showPopup(x, y);
+ showPopup(mX, mY);
}
-void PopupMenu::showWindowsPopup(const int x, const int y)
+void PopupMenu::showWindowsPopup()
{
- mX = x;
- mY = y;
-
+ setMousePos();
mBrowserBox->clearRows();
const std::vector<ButtonText*> &names = windowMenu->getButtonTexts();
// TRANSLATORS: popup menu header
@@ -2481,7 +2488,7 @@ void PopupMenu::showWindowsPopup(const int x, const int y)
// TRANSLATORS: close menu
mBrowserBox->addRow("cancel", _("Cancel"));
- showPopup(x, y);
+ showPopup(mX, mY);
}
void PopupMenu::showNpcDialogPopup(const int npcId, const int x, const int y)
diff --git a/src/gui/popups/popupmenu.h b/src/gui/popups/popupmenu.h
index fe9d0855e..2e15652e6 100644
--- a/src/gui/popups/popupmenu.h
+++ b/src/gui/popups/popupmenu.h
@@ -73,8 +73,7 @@ class PopupMenu final : public Popup, public LinkHandler
void showPopup(const int x, const int y,
const std::vector<ActorSprite*> &beings);
- void showPlayerPopup(const int x, const int y,
- const std::string &nick);
+ void showPlayerPopup(const std::string &nick);
/**
* Shows the floor item related popup menu at the specified
@@ -131,15 +130,15 @@ class PopupMenu final : public Popup, public LinkHandler
void showPopup(const int x, const int y, ListModel *const model);
- void showTextFieldPopup(int x, int y, TextField *const input);
+ void showTextFieldPopup(TextField *const input);
- void showLinkPopup(const int x, const int y, const std::string &link);
+ void showLinkPopup(const std::string &link);
- void showWindowsPopup(const int x, const int y);
+ void showWindowsPopup();
void showNpcDialogPopup(const int npcId, const int x, const int y);
- void showWindowPopup(Window *const window, const int x, const int y);
+ void showWindowPopup(Window *const window);
/**
* Handles link action.
@@ -150,6 +149,8 @@ class PopupMenu final : public Popup, public LinkHandler
void clear();
private:
+ void setMousePos();
+
void addPlayerRelation(const std::string &name);
void addFollow();