Disable double-click -> ESC translation for main menu
parent
0e93eefb8f
commit
de6d5ce2cd
|
@ -194,7 +194,8 @@ GUIEngine::GUIEngine( irr::IrrlichtDevice* dev,
|
||||||
m_texture_source,
|
m_texture_source,
|
||||||
m_formspecgui,
|
m_formspecgui,
|
||||||
m_buttonhandler,
|
m_buttonhandler,
|
||||||
NULL);
|
NULL,
|
||||||
|
false);
|
||||||
|
|
||||||
m_menu->allowClose(false);
|
m_menu->allowClose(false);
|
||||||
m_menu->lockSize(true,v2u32(800,600));
|
m_menu->lockSize(true,v2u32(800,600));
|
||||||
|
|
|
@ -77,7 +77,7 @@ GUIFormSpecMenu::GUIFormSpecMenu(irr::IrrlichtDevice* dev,
|
||||||
gui::IGUIElement* parent, s32 id, IMenuManager *menumgr,
|
gui::IGUIElement* parent, s32 id, IMenuManager *menumgr,
|
||||||
InventoryManager *invmgr, IGameDef *gamedef,
|
InventoryManager *invmgr, IGameDef *gamedef,
|
||||||
ISimpleTextureSource *tsrc, IFormSource* fsrc, TextDest* tdst,
|
ISimpleTextureSource *tsrc, IFormSource* fsrc, TextDest* tdst,
|
||||||
Client* client) :
|
Client* client, bool remap_dbl_click) :
|
||||||
GUIModalMenu(dev->getGUIEnvironment(), parent, id, menumgr),
|
GUIModalMenu(dev->getGUIEnvironment(), parent, id, menumgr),
|
||||||
m_device(dev),
|
m_device(dev),
|
||||||
m_invmgr(invmgr),
|
m_invmgr(invmgr),
|
||||||
|
@ -97,7 +97,8 @@ GUIFormSpecMenu::GUIFormSpecMenu(irr::IrrlichtDevice* dev,
|
||||||
m_text_dst(tdst),
|
m_text_dst(tdst),
|
||||||
m_formspec_version(0),
|
m_formspec_version(0),
|
||||||
m_focused_element(L""),
|
m_focused_element(L""),
|
||||||
m_font(NULL)
|
m_font(NULL),
|
||||||
|
m_remap_dbl_click(remap_dbl_click)
|
||||||
#ifdef __ANDROID__
|
#ifdef __ANDROID__
|
||||||
,m_JavaDialogFieldName(L"")
|
,m_JavaDialogFieldName(L"")
|
||||||
#endif
|
#endif
|
||||||
|
@ -2939,15 +2940,18 @@ bool GUIFormSpecMenu::preprocessEvent(const SEvent& event)
|
||||||
bool GUIFormSpecMenu::DoubleClickDetection(const SEvent event)
|
bool GUIFormSpecMenu::DoubleClickDetection(const SEvent event)
|
||||||
{
|
{
|
||||||
/* The following code is for capturing double-clicks of the mouse button
|
/* The following code is for capturing double-clicks of the mouse button
|
||||||
* that are *not* in/in a control (i.e. when the mouse if positioned in an
|
* and translating the double-click into an EET_KEY_INPUT_EVENT event
|
||||||
* unused area of the formspec) and translating the double-click into an
|
* -- which closes the form -- under some circumstances.
|
||||||
* EET_KEY_INPUT_EVENT event which closes the form.
|
|
||||||
*
|
*
|
||||||
* There have been many github issues reporting this as a bug even though it
|
* There have been many github issues reporting this as a bug even though it
|
||||||
* was an intended feature. For this reason the code has been disabled for
|
* was an intended feature. For this reason, remapping the double-click as
|
||||||
* non-Android builds
|
* an ESC must be explicitly set when creating this class via the
|
||||||
|
* /p remap_dbl_click parameter of the constructor.
|
||||||
*/
|
*/
|
||||||
#ifdef __ANDROID__
|
|
||||||
|
if (!m_remap_dbl_click)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN) {
|
if (event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN) {
|
||||||
m_doubleclickdetect[0].pos = m_doubleclickdetect[1].pos;
|
m_doubleclickdetect[0].pos = m_doubleclickdetect[1].pos;
|
||||||
m_doubleclickdetect[0].time = m_doubleclickdetect[1].time;
|
m_doubleclickdetect[0].time = m_doubleclickdetect[1].time;
|
||||||
|
@ -2986,7 +2990,7 @@ bool GUIFormSpecMenu::DoubleClickDetection(const SEvent event)
|
||||||
delete translated;
|
delete translated;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -210,8 +210,8 @@ public:
|
||||||
ISimpleTextureSource *tsrc,
|
ISimpleTextureSource *tsrc,
|
||||||
IFormSource* fs_src,
|
IFormSource* fs_src,
|
||||||
TextDest* txt_dst,
|
TextDest* txt_dst,
|
||||||
Client* client
|
Client* client,
|
||||||
);
|
bool remap_dbl_click = true);
|
||||||
|
|
||||||
~GUIFormSpecMenu();
|
~GUIFormSpecMenu();
|
||||||
|
|
||||||
|
@ -436,6 +436,14 @@ private:
|
||||||
std::wstring m_JavaDialogFieldName;
|
std::wstring m_JavaDialogFieldName;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* 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;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class FormspecFormSource: public IFormSource
|
class FormspecFormSource: public IFormSource
|
||||||
|
|
Loading…
Reference in New Issue