]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/gui/modalMenu.h
Fix missing translation call in hypertext (#10296)
[dragonfireclient.git] / src / gui / modalMenu.h
index 5bd70bb84749175f8306febfb1569a5605231262..1cb687f82782255aac539dc462e76cd418a556ca 100644 (file)
@@ -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 @@ class GUIModalMenu : public gui::IGUIElement
 
        virtual void regenerateGui(v2u32 screensize) = 0;
        virtual void drawMenu() = 0;
-       virtual bool preprocessEvent(const SEventevent);
-       virtual bool OnEvent(const SEventevent) { 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 @@ class GUIModalMenu : public gui::IGUIElement
        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 @@ class GUIModalMenu : public gui::IGUIElement
 #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;