1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-22 17:18:39 +00:00

Formspecs: volume and key settings windows can now be closed by doubleclicking/tapping (#10128)

Co-authored-by: Xx_Crazyminer_xX <carlo.digioia@hotmail.it>
Co-authored-by: Marco <4279489-marco_a@users.noreply.gitlab.com>
This commit is contained in:
Zughy 2020-07-14 22:37:28 +02:00 committed by GitHub
parent 4b4513a67d
commit cfaef5b1cf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 119 additions and 130 deletions

View 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 @@ 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;