vguilib: only block inputs to engine if a widget successfully took a keypress into account
This commit is contained in:
parent
b51541a3ae
commit
241c94368f
|
@ -503,7 +503,7 @@ CSQC_InputEvent(float fEventType, float fKey, float fCharacter, float fDeviceID)
|
||||||
|
|
||||||
g_vecMousePos = getmousepos();
|
g_vecMousePos = getmousepos();
|
||||||
|
|
||||||
VGUI_Input(fEventType, fKey, fCharacter, fDeviceID);
|
bool vgui_pressed = VGUI_Input(fEventType, fKey, fCharacter, fDeviceID);
|
||||||
|
|
||||||
if (g_vguiWidgetCount) {
|
if (g_vguiWidgetCount) {
|
||||||
setcursormode(TRUE, "gfx/cursor", [0,0,0], 1.0f);
|
setcursormode(TRUE, "gfx/cursor", [0,0,0], 1.0f);
|
||||||
|
@ -511,10 +511,7 @@ CSQC_InputEvent(float fEventType, float fKey, float fCharacter, float fDeviceID)
|
||||||
setcursormode(FALSE, "gfx/cursor", [0,0,0], 1.0f);
|
setcursormode(FALSE, "gfx/cursor", [0,0,0], 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (VGUI_Active() && !(fEventType == IE_KEYDOWN && fCharacter == K_ESCAPE))
|
return (vgui_pressed);
|
||||||
return (1);
|
|
||||||
else
|
|
||||||
return (0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -31,17 +31,15 @@ VGUI_Draw(void)
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
bool
|
||||||
VGUI_Input(float flEvType, float flScanX, float flCharY, float flDevID)
|
VGUI_Input(float flEvType, float flScanX, float flCharY, float flDevID)
|
||||||
{
|
{
|
||||||
g_uiDesktop.Input(flEvType, flScanX, flCharY, flDevID);
|
return g_uiDesktop.Input(flEvType, flScanX, flCharY, flDevID);
|
||||||
return (1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
VGUI_Reposition(void)
|
VGUI_Reposition(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
CUIWidget wNext = g_uiDesktop;
|
CUIWidget wNext = g_uiDesktop;
|
||||||
do {
|
do {
|
||||||
wNext = wNext.m_next;
|
wNext = wNext.m_next;
|
||||||
|
|
|
@ -570,9 +570,6 @@ PMoveCustom_RunPlayerPhysics(entity target)
|
||||||
entity oldself = self;
|
entity oldself = self;
|
||||||
self = target;
|
self = target;
|
||||||
|
|
||||||
self.dimension_solid = 254;
|
|
||||||
self.dimension_hit = 254;
|
|
||||||
|
|
||||||
if (self.maxspeed <= 0)
|
if (self.maxspeed <= 0)
|
||||||
self.maxspeed = 240;
|
self.maxspeed = 240;
|
||||||
|
|
||||||
|
|
|
@ -170,12 +170,13 @@ CUIWidget::Input(float flEVType, float flKey, float flChar, float flDevID)
|
||||||
wNext = tree[x].member;
|
wNext = tree[x].member;
|
||||||
|
|
||||||
if (wNext && wNext.m_iFlags & 1 && wNext.m_parent.m_iFlags & 1)
|
if (wNext && wNext.m_iFlags & 1 && wNext.m_parent.m_iFlags & 1)
|
||||||
if (wNext.Input(flEVType, flKey, flChar, flDevID) == true)
|
if (wNext.Input(flEVType, flKey, flChar, flDevID) == true) {
|
||||||
return (false);
|
memfree(tree);
|
||||||
|
return (true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
memfree(tree);
|
memfree(tree);
|
||||||
|
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -101,43 +101,44 @@ bool CUITextBox::Input (float flEVType, float flKey, float flChar, float flDevID
|
||||||
{
|
{
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
|
||||||
if (flEVType == IE_KEYDOWN) {
|
switch (flKey) {
|
||||||
switch (flKey) {
|
case K_MOUSE1 :
|
||||||
case K_MOUSE1 :
|
if (flEVType == IE_KEYDOWN) {
|
||||||
if (Util_MouseAbove(g_vecMousePos, m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
|
if (Util_MouseAbove(g_vecMousePos, m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
|
||||||
m_iFlags |= TEXTBOX_DOWN;
|
m_iFlags |= TEXTBOX_DOWN;
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
}
|
||||||
break;
|
} else {
|
||||||
case K_BACKSPACE:
|
|
||||||
if (m_iFlags & TEXTBOX_FOCUS) {
|
|
||||||
m_strText = substring(m_strText, 0, strlen(m_strText) - 1);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case K_ENTER:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (m_iFlags & TEXTBOX_FOCUS) {
|
|
||||||
#if 0
|
|
||||||
if ((flChar >= 48 && flChar <= 57) || (flChar >= 65 && flChar <= 90) || (flChar >= 97 && flChar <= 122)) {
|
|
||||||
m_strText = sprintf("%s%s", m_strText, chr2str(flChar));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if ((flChar >= 32 && flChar <= 125)) {
|
|
||||||
m_strText = sprintf("%s%s", m_strText, chr2str(flChar));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (flEVType == IE_KEYUP) {
|
|
||||||
if (flKey == K_MOUSE1) {
|
|
||||||
if (m_iFlags & TEXTBOX_DOWN && Util_MouseAbove(g_vecMousePos, m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
|
if (m_iFlags & TEXTBOX_DOWN && Util_MouseAbove(g_vecMousePos, m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
|
||||||
m_iFlags |= TEXTBOX_FOCUS;
|
m_iFlags |= TEXTBOX_FOCUS;
|
||||||
|
ret = true;
|
||||||
} else {
|
} else {
|
||||||
m_iFlags -= (m_iFlags & TEXTBOX_FOCUS);
|
m_iFlags -= (m_iFlags & TEXTBOX_FOCUS);
|
||||||
}
|
}
|
||||||
m_iFlags -= (m_iFlags & TEXTBOX_DOWN);
|
m_iFlags -= (m_iFlags & TEXTBOX_DOWN);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case K_BACKSPACE:
|
||||||
|
if (flEVType == IE_KEYDOWN)
|
||||||
|
if (m_iFlags & TEXTBOX_FOCUS)
|
||||||
|
m_strText = substring(m_strText, 0, strlen(m_strText) - 1);
|
||||||
|
break;
|
||||||
|
case K_ENTER:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (m_iFlags & TEXTBOX_DOWN)
|
||||||
|
ret = true;
|
||||||
|
else if (m_iFlags & TEXTBOX_FOCUS) {
|
||||||
|
if ((flChar >= 32 && flChar <= 125)) {
|
||||||
|
if (flEVType == IE_KEYDOWN)
|
||||||
|
m_strText = sprintf("%s%s", m_strText, chr2str(flChar));
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
if ((flKey >= 32 && flKey <= 125)) {
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue