vguilib: only block inputs to engine if a widget successfully took a keypress into account
This commit is contained in:
parent
b51541a3ae
commit
241c94368f
5 changed files with 35 additions and 41 deletions
|
@ -503,7 +503,7 @@ CSQC_InputEvent(float fEventType, float fKey, float fCharacter, float fDeviceID)
|
|||
|
||||
g_vecMousePos = getmousepos();
|
||||
|
||||
VGUI_Input(fEventType, fKey, fCharacter, fDeviceID);
|
||||
bool vgui_pressed = VGUI_Input(fEventType, fKey, fCharacter, fDeviceID);
|
||||
|
||||
if (g_vguiWidgetCount) {
|
||||
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);
|
||||
}
|
||||
|
||||
if (VGUI_Active() && !(fEventType == IE_KEYDOWN && fCharacter == K_ESCAPE))
|
||||
return (1);
|
||||
else
|
||||
return (0);
|
||||
return (vgui_pressed);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -31,17 +31,15 @@ VGUI_Draw(void)
|
|||
return (1);
|
||||
}
|
||||
|
||||
int
|
||||
bool
|
||||
VGUI_Input(float flEvType, float flScanX, float flCharY, float flDevID)
|
||||
{
|
||||
g_uiDesktop.Input(flEvType, flScanX, flCharY, flDevID);
|
||||
return (1);
|
||||
return g_uiDesktop.Input(flEvType, flScanX, flCharY, flDevID);
|
||||
}
|
||||
|
||||
void
|
||||
VGUI_Reposition(void)
|
||||
{
|
||||
|
||||
CUIWidget wNext = g_uiDesktop;
|
||||
do {
|
||||
wNext = wNext.m_next;
|
||||
|
|
|
@ -570,9 +570,6 @@ PMoveCustom_RunPlayerPhysics(entity target)
|
|||
entity oldself = self;
|
||||
self = target;
|
||||
|
||||
self.dimension_solid = 254;
|
||||
self.dimension_hit = 254;
|
||||
|
||||
if (self.maxspeed <= 0)
|
||||
self.maxspeed = 240;
|
||||
|
||||
|
|
|
@ -170,12 +170,13 @@ CUIWidget::Input(float flEVType, float flKey, float flChar, float flDevID)
|
|||
wNext = tree[x].member;
|
||||
|
||||
if (wNext && wNext.m_iFlags & 1 && wNext.m_parent.m_iFlags & 1)
|
||||
if (wNext.Input(flEVType, flKey, flChar, flDevID) == true)
|
||||
return (false);
|
||||
if (wNext.Input(flEVType, flKey, flChar, flDevID) == true) {
|
||||
memfree(tree);
|
||||
return (true);
|
||||
}
|
||||
}
|
||||
|
||||
memfree(tree);
|
||||
|
||||
return (false);
|
||||
}
|
||||
|
||||
|
|
|
@ -101,43 +101,44 @@ bool CUITextBox::Input (float flEVType, float flKey, float flChar, float flDevID
|
|||
{
|
||||
bool ret = false;
|
||||
|
||||
if (flEVType == IE_KEYDOWN) {
|
||||
switch (flKey) {
|
||||
case K_MOUSE1 :
|
||||
if (flEVType == IE_KEYDOWN) {
|
||||
if (Util_MouseAbove(g_vecMousePos, m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
|
||||
m_iFlags |= TEXTBOX_DOWN;
|
||||
ret = true;
|
||||
}
|
||||
break;
|
||||
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) {
|
||||
} else {
|
||||
if (m_iFlags & TEXTBOX_DOWN && Util_MouseAbove(g_vecMousePos, m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
|
||||
m_iFlags |= TEXTBOX_FOCUS;
|
||||
ret = true;
|
||||
} else {
|
||||
m_iFlags -= (m_iFlags & TEXTBOX_FOCUS);
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue