summaryrefslogtreecommitdiff
path: root/src/gui/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/widgets')
-rw-r--r--src/gui/widgets/textfield.cpp23
-rw-r--r--src/gui/widgets/textfield.h2
2 files changed, 23 insertions, 2 deletions
diff --git a/src/gui/widgets/textfield.cpp b/src/gui/widgets/textfield.cpp
index 3a6212b79..950bba025 100644
--- a/src/gui/widgets/textfield.cpp
+++ b/src/gui/widgets/textfield.cpp
@@ -26,6 +26,7 @@
#include "configuration.h"
#include "keyevent.h"
+#include "gui/popupmenu.h"
#include "gui/sdlinput.h"
#include "gui/viewport.h"
@@ -58,7 +59,8 @@ TextField::TextField(const Widget2 *const widget,
mLoseFocusOnTab(loseFocusOnTab),
mLastEventPaste(false),
mPadding(1),
- mCaretColor(&getThemeColor(Theme::CARET))
+ mCaretColor(&getThemeColor(Theme::CARET)),
+ mPopupMenu(nullptr)
{
setFrameSize(2);
mForegroundColor = getThemeColor(Theme::TEXTFIELD);
@@ -90,6 +92,9 @@ TextField::TextField(const Widget2 *const widget,
TextField::~TextField()
{
+ delete mPopupMenu;
+ mPopupMenu = nullptr;
+
instances--;
if (instances == 0)
{
@@ -522,7 +527,21 @@ void TextField::mousePressed(gcn::MouseEvent &mouseEvent)
if (mouseEvent.getButton() == gcn::MouseEvent::RIGHT)
{
if (viewport)
+ {
viewport->showTextFieldPopup(this);
+ }
+ else
+ {
+ if (!mPopupMenu)
+ mPopupMenu = new PopupMenu();
+ int x = 0;
+ int y = 0;
+ SDL_GetMouseState(&x, &y);
+ mPopupMenu->showTextFieldPopup(x, y, this);
+ }
+ }
+ else
+ {
+ gcn::TextField::mousePressed(mouseEvent);
}
- else gcn::TextField::mousePressed(mouseEvent);
}
diff --git a/src/gui/widgets/textfield.h b/src/gui/widgets/textfield.h
index 9220f3dd7..6ac24066f 100644
--- a/src/gui/widgets/textfield.h
+++ b/src/gui/widgets/textfield.h
@@ -30,6 +30,7 @@
#include "localconsts.h"
class ImageRect;
+class PopupMenu;
class TextField;
/**
@@ -143,6 +144,7 @@ class TextField : public gcn::TextField,
int mLastEventPaste;
int mPadding;
const gcn::Color *mCaretColor;
+ PopupMenu *mPopupMenu;
};
#endif