summaryrefslogtreecommitdiff
path: root/src/gui/modalMenu.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/modalMenu.h')
-rw-r--r--src/gui/modalMenu.h28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/gui/modalMenu.h b/src/gui/modalMenu.h
index 5bd70bb84..1cb687f82 100644
--- a/src/gui/modalMenu.h
+++ b/src/gui/modalMenu.h
@@ -39,7 +39,7 @@ class GUIModalMenu : public gui::IGUIElement
{
public:
GUIModalMenu(gui::IGUIEnvironment* env, gui::IGUIElement* parent, s32 id,
- IMenuManager *menumgr);
+ IMenuManager *menumgr, bool remap_dbl_click = true);
virtual ~GUIModalMenu();
void allowFocusRemoval(bool allow);
@@ -50,8 +50,8 @@ public:
virtual void regenerateGui(v2u32 screensize) = 0;
virtual void drawMenu() = 0;
- virtual bool preprocessEvent(const SEvent& event);
- virtual bool OnEvent(const SEvent& event) { return false; };
+ virtual bool preprocessEvent(const SEvent &event);
+ virtual bool OnEvent(const SEvent &event) { return false; };
virtual bool pausesGame() { return false; } // Used for pause menu
#ifdef __ANDROID__
virtual bool getAndroidUIInput() { return false; }
@@ -62,6 +62,13 @@ protected:
virtual std::wstring getLabelByID(s32 id) = 0;
virtual std::string getNameByID(s32 id) = 0;
+ /**
+ * check if event is part of a double click
+ * @param event event to evaluate
+ * @return true/false if a doubleclick was detected
+ */
+ bool DoubleClickDetection(const SEvent &event);
+
v2s32 m_pointer;
v2s32 m_old_pointer; // Mouse position after previous mouse event
v2u32 m_screensize_old;
@@ -73,8 +80,23 @@ protected:
#ifdef HAVE_TOUCHSCREENGUI
bool m_touchscreen_visible = true;
#endif
+
private:
+ struct clickpos
+ {
+ v2s32 pos;
+ s64 time;
+ };
+ clickpos m_doubleclickdetect[2];
+
IMenuManager *m_menumgr;
+ /* If true, remap a double-click (or double-tap) action to ESC. This is so
+ * that, for example, Android users can double-tap to close a formspec.
+ *
+ * This value can (currently) only be set by the class constructor
+ * and the default value for the setting is true.
+ */
+ bool m_remap_dbl_click;
// This might be necessary to expose to the implementation if it
// wants to launch other menus
bool m_allow_focus_removal = false;