Menu-VGUI: Fix up, change Input() method to block input from other widgets

This commit is contained in:
Marco Cawthorne 2022-05-24 13:04:48 -07:00
parent 5f3570f140
commit db97db6820
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
23 changed files with 150 additions and 90 deletions

View File

@ -22,12 +22,6 @@
#include "cmd.h"
#include "util.h"
/* flags for 2d drawing */
#define DRAWFLAG_NORMAL 0
#define DRAWFLAG_ADDITIVE 1
#define DRAWFLAG_MODULATE 2
#define DRAWFLAG_2XMODULATE 3
/* undocumented printcall types */
#define PRINT_LOW 0
#define PRINT_MEDIUM 1

View File

@ -14,6 +14,12 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* flags for 2d drawing */
#define DRAWFLAG_NORMAL 0
#define DRAWFLAG_ADDITIVE 1
#define DRAWFLAG_MODULATE 2
#define DRAWFLAG_2XMODULATE 3
enumflags
{
AF_RIGHT,

View File

@ -15,18 +15,11 @@
*/
#include "../client/font.h"
#include "../shared/global.h"
var int autocvar_menu_intro = TRUE;
var int autocvar__menu_singleplayer;
void
_NSLog(string msg)
{
if (cvar("g_developer"))
print(sprintf("%f %s\n", time, msg));
}
#define NSLog(x, ...) _NSLog(sprintf(x, __VA_ARGS__))
#define KEY_UNKNOWN -1
#define KEY_GAME 0
#define KEY_MENU 2
@ -37,16 +30,6 @@ _NSLog(string msg)
#define DRAWFLAG_ADDITIVE 1
enumflags
{
SEARCH_INSENSITIVE,
SEARCH_FULLPACKAGE,
SEARCH_ALLOWDUPES,
SEARCH_FORCESEARCH,
SEARCH_MULTISEARCH,
SEARCH_NAMESORT
};
/* Basic Menu Globals */
int g_vidsize[2];
int g_menuofs[2];

2
src/menu-vgui/main.qc Executable file → Normal file
View File

@ -46,7 +46,7 @@ void m_init ( void )
}
void
Menu_RendererRestarted(void)
Menu_RendererRestarted(string renderer)
{
localcmd("menu_restart\n");
Menu_AutoScale();

5
src/menu-vgui/progs.src Executable file → Normal file
View File

@ -1,9 +1,11 @@
#pragma target fte
#pragma progs_dat "../../platform/data.pk3dir/menu.dat"
#pragma progs_dat "../../platform/menu.dat"
#define MENU
#includelist
../shared/fteextensions.qc
../shared/global.h
../client/font.h
defs.h
../vgui/include.src
@ -21,4 +23,5 @@ ui_musicplayer.qc
ui_modelviewer.qc
desktop.qc
main.qc
../client/font.qc
#endlist

8
src/menu-vgui/ui_modelviewer.qc Executable file → Normal file
View File

@ -124,7 +124,7 @@ void UI_ModelViewer_Show ( void )
picBackground.FlagRemove( IMAGE_VISIBLE );
}
}
static void UI_ModelViewer_Input ( float flEVType, float flKey, float flChar, float flDevID ) {
static float UI_ModelViewer_Input ( float flEVType, float flKey, float flChar, float flDevID ) {
static int iMouseDrag = FALSE;
static int iShiftDrag = FALSE;
static vector vecDragOfs;
@ -135,14 +135,17 @@ void UI_ModelViewer_Show ( void )
if ( flKey == K_MOUSE1 && iMouseOver == TRUE ) {
iMouseDrag = TRUE;
vecDragOfs = getmousepos();
return true;
} else if ( flKey == K_MWHEELUP && iMouseOver == TRUE ) {
vecDistance[0] = bound( 0, --vecDistance[0], 512 );
AngleVectors( viewModel.Get3DAngles() );
viewModel.Set3DPos( v_forward * -vecDistance[0] + v_right * vecDistance[1] + v_up * vecDistance[2] );
return true;
} else if ( flKey == K_MWHEELDOWN && iMouseOver == TRUE ) {
vecDistance[0] = bound( 0, ++vecDistance[0], 512 );
AngleVectors( viewModel.Get3DAngles() );
viewModel.Set3DPos( v_forward * -vecDistance[0] + v_right * vecDistance[1] + v_up * vecDistance[2] );
return true;
} else if ( flKey == K_LSHIFT && iMouseOver == TRUE ) {
iShiftDrag = TRUE;
}
@ -161,6 +164,7 @@ void UI_ModelViewer_Show ( void )
AngleVectors( viewModel.Get3DAngles() );
viewModel.Set3DPos( v_forward * -vecDistance[0] + v_right * vecDistance[1] + v_up * vecDistance[2] );
vecDragOfs = getmousepos();
return true;
}
} else if ( iMouseDrag == TRUE && iShiftDrag == TRUE ) {
if ( flEVType == IE_MOUSEABS ) {
@ -169,8 +173,10 @@ void UI_ModelViewer_Show ( void )
vecDistance[2] += vecDifference[0];
viewModel.Set3DPos( v_forward * -vecDistance[0] + v_right * vecDistance[1] + v_up * vecDistance[2] );
vecDragOfs = getmousepos();
return true;
}
}
return false;
}
static void UI_ModelViewer_Resize ( void ) {
// Resize the background and viewer

View File

@ -32,14 +32,7 @@
#define ATTR_CHANGED(x) (x ##_net != x)
#define VEC_CHANGED(x,y) (x ##_net[y] != x[y])
void
_NSLog(string msg)
{
if (cvar("g_developer") == 1)
print(sprintf("%f %s\n", time, msg));
}
#define NSLog(x, ...) _NSLog(sprintf(x, __VA_ARGS__))
#include "global.h"
#include "sound.h"
#ifdef CLIENT

17
src/shared/global.h Normal file
View File

@ -0,0 +1,17 @@
void
_NSLog(string msg)
{
if (cvar("g_developer") == 1)
print(sprintf("%f %s\n", time, msg));
}
#define NSLog(x, ...) _NSLog(sprintf(x, __VA_ARGS__))
enumflags
{
SEARCH_INSENSITIVE,
SEARCH_FULLPACKAGE,
SEARCH_ALLOWDUPES,
SEARCH_FORCESEARCH,
SEARCH_MULTISEARCH,
SEARCH_NAMESORT
};

View File

@ -62,7 +62,7 @@ class CUIWidget
virtual int(void) GetPosHeight;
virtual void(void) Draw;
virtual void(void) Reposition;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
};
void
@ -124,25 +124,26 @@ void
CUIWidget::Draw(void)
{
CUIWidget wNext = this;
do {
wNext = wNext.m_next;
if (wNext && wNext.m_iFlags & 1 && wNext.m_parent.m_iFlags & 1) {
wNext.Draw();
}
} while (wNext);
}
void
CUIWidget::Input(float flEVType, float flKey, float flChar, float flDevID)
{
CUIWidget wNext = this;
g_vguiWidgetCount = 0;
do {
wNext = wNext.m_next;
if (wNext && wNext.m_iFlags & 1 && wNext.m_parent.m_iFlags & 1) {
g_vguiWidgetCount++;
wNext.Input(flEVType, flKey, flChar, flDevID);
wNext.Draw();
}
} while (wNext);
}
bool
CUIWidget::Input(float flEVType, float flKey, float flChar, float flDevID)
{
CUIWidget wNext = this;
do {
wNext = wNext.m_next;
if (wNext && wNext.m_iFlags & 1 && wNext.m_parent.m_iFlags & 1) {
if (wNext.Input(flEVType, flKey, flChar, flDevID) == true)
return;
}
} while (wNext);
}

View File

@ -35,7 +35,7 @@ class CUI3DView:CUIWidget
void(void) CUI3DView;
virtual void(void) m_vDrawFunc = 0;
virtual void(float, float, float, float) m_vInputFunc = 0;
virtual float(float, float, float, float) m_vInputFunc = 0;
virtual void(void) Draw;
virtual vector() GetSize;
virtual vector() Get3DPos;
@ -44,8 +44,8 @@ class CUI3DView:CUIWidget
virtual void(vector) Set3DPos;
virtual void(vector) Set3DAngles;
virtual void(void(void)) SetDrawFunc;
virtual void(void(float, float, float, float)) SetInputFunc;
virtual void(float, float, float, float) Input;
virtual void(float(float, float, float, float)) SetInputFunc;
virtual bool(float, float, float, float) Input;
};
void
@ -100,7 +100,7 @@ CUI3DView::SetDrawFunc(void(void) vFunc)
}
void
CUI3DView::SetInputFunc(void(float, float, float, float) vFunc)
CUI3DView::SetInputFunc(float(float, float, float, float) vFunc)
{
m_vInputFunc = vFunc;
}
@ -121,12 +121,12 @@ CUI3DView::Draw(void)
renderscene();
}
void
bool
CUI3DView::Input(float flEVType, float flKey, float flChar, float flDevID)
{
if (!m_vInputFunc) {
return;
return false;
}
m_vInputFunc(flEVType, flKey, flChar, flDevID);
return m_vInputFunc(flEVType, flKey, flChar, flDevID);
}

View File

@ -46,7 +46,7 @@ class CUIButton:CUIWidget
virtual void(vector) SetColor;
virtual void(void(void)) SetFunc;
virtual void(string) SetExec;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
virtual void(void) Show;
virtual void(void) Hide;
};
@ -188,11 +188,13 @@ CUIButton::Draw(void)
}
}
void
bool
CUIButton::Input(float flEVType, float flKey, float flChar, float flDevID)
{
bool ret = false;
if (!(m_iFlags & BUTTON_VISIBLE))
return;
return false;
if (flEVType == IE_KEYDOWN) {
if (flKey == K_MOUSE1) {
@ -200,6 +202,7 @@ CUIButton::Input(float flEVType, float flKey, float flChar, float flDevID)
if (Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
FlagAdd(BUTTON_DOWN);
FlagAdd(BUTTON_LASTACTIVE);
ret = true;
}
}
} else if (flEVType == IE_KEYUP) {
@ -209,8 +212,11 @@ CUIButton::Input(float flEVType, float flKey, float flChar, float flDevID)
m_vFunc();
if (m_strExec)
localcmd(sprintf("%s\n", m_strExec));
ret = true;
}
FlagRemove(BUTTON_DOWN);
}
}
return (ret);
}

View File

@ -35,7 +35,7 @@ class CUICheckbox:CUIWidget
virtual void(string) SetTitle;
virtual int(void) GetValue;
virtual void(int) SetValue;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
};
void CUICheckbox::CUICheckbox(void)
@ -107,20 +107,26 @@ void CUICheckbox::Draw(void)
}
}
void CUICheckbox::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUICheckbox::Input (float flEVType, float flKey, float flChar, float flDevID)
{
bool ret = false;
if (flEVType == IE_KEYDOWN) {
if (flKey == K_MOUSE1) {
if (Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
m_iFlags |= CHECKBOX_DOWN;
ret = true;
}
}
} else if (flEVType == IE_KEYUP) {
if (flKey == K_MOUSE1) {
if (m_iFlags & CHECKBOX_DOWN && Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
SetValue(!GetValue());
ret = true;
}
m_iFlags -= (m_iFlags & CHECKBOX_DOWN);
}
}
return (ret);
}

View File

@ -23,7 +23,7 @@ class CUILabel:CUIWidget
virtual void(void) Draw;
virtual void(vector) SetSize;
virtual void(string) SetTitle;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
};
void CUILabel::CUILabel(void)
@ -56,6 +56,7 @@ void CUILabel::Draw(void)
}
}
void CUILabel::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUILabel::Input (float flEVType, float flKey, float flChar, float flDevID)
{
return false;
}

View File

@ -44,7 +44,7 @@ class CUIList:CUIWidget
virtual void(void(void)) CallOnScroll;
virtual void(void) Draw;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
};
void CUIList::CUIList(void)
@ -96,8 +96,9 @@ void CUIList::Draw(void)
drawresetcliparea();
}
void CUIList::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUIList::Input (float flEVType, float flKey, float flChar, float flDevID)
{
bool ret;
int iMaxDisplay;
int iMouseOver = Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin, m_vecSize);
iMaxDisplay = bound(0, m_iItemCount, floor(m_vecSize[1] / 20));
@ -108,16 +109,19 @@ void CUIList::Input (float flEVType, float flKey, float flChar, float flDevID)
for (int i = m_iDrawOffset; i < iMaxDisplay + m_iDrawOffset; i++) {
if (Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin + vecOffset, [m_vecSize[0] - 16, 20])) {
m_iSelected = i;
return;
ret = true;
}
vecOffset[1] += 20;
}
} else if (flKey == K_MWHEELUP && iMouseOver) {
SetOffset(m_iDrawOffset - (iMaxDisplay / 4), TRUE);
ret = true;
} else if (flKey == K_MWHEELDOWN && iMouseOver) {
SetOffset(m_iDrawOffset + (iMaxDisplay / 4), TRUE);
ret = true;
}
}
return (ret);
}
void CUIList::SetSize (vector vecSize)

View File

@ -31,7 +31,7 @@ class CUIListBox:CUIWidget
virtual string(int) GetItem;
virtual int(void) GetSelected;
virtual void(void) Draw;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
};
void CUIListBox::CUIListBox(void)
@ -115,8 +115,9 @@ void CUIListBox::Draw(void)
}
}
void CUIListBox::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUIListBox::Input (float flEVType, float flKey, float flChar, float flDevID)
{
bool ret = false;
int iMaxDisplay;
iMaxDisplay = bound(0, m_iItemCount, floor(m_vecSize[1] / 20));
@ -126,14 +127,17 @@ void CUIListBox::Input (float flEVType, float flKey, float flChar, float flDevID
for (int i = m_iDrawOffset; i < iMaxDisplay + m_iDrawOffset; i++) {
if (Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin + vecOffset, [m_vecSize[0] - 16, 20])) {
m_iSelected = i;
return;
ret = true;
}
vecOffset[1] += 20;
}
} else if (flKey == K_MWHEELUP) {
SetOffset(--m_iDrawOffset);
ret = true;
} else if (flKey == K_MWHEELDOWN) {
SetOffset(++m_iDrawOffset);
ret = true;
}
}
return (ret);
}

View File

@ -40,7 +40,7 @@ class CUIMenuButton:CUIWidget
virtual void(string) SetTitle;
virtual void(string) SetIcon;
virtual void(void(void)) SetFunc;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
};
void CUIMenuButton::CUIMenuButton(void)
@ -101,16 +101,18 @@ void CUIMenuButton::Draw(void)
}
}
void CUIMenuButton::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUIMenuButton::Input (float flEVType, float flKey, float flChar, float flDevID)
{
bool ret = false;
// If we're not ingame
if (clientstate() == 2 && !g_background) {
if (!(m_iFlags & MBUTTON_SHOWSP)) {
return;
return false;
}
} else {
if (!(m_iFlags & MBUTTON_SHOWOFFLINE)) {
return;
return false;
}
}
@ -118,6 +120,7 @@ void CUIMenuButton::Input (float flEVType, float flKey, float flChar, float flDe
if (flKey == K_MOUSE1) {
if (Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
m_iFlags |= MBUTTON_DOWN;
ret = true;
}
}
} else if (flEVType == IE_KEYUP) {
@ -126,10 +129,12 @@ void CUIMenuButton::Input (float flEVType, float flKey, float flChar, float flDe
if (m_vFunc) {
m_vFunc();
}
ret = true;
}
m_iFlags -= (m_iFlags & MBUTTON_DOWN);
}
}
return (ret);
}
void CUIMenuButton::SetSize (vector vecSize)

View File

@ -33,7 +33,7 @@ class CUIPic:CUIWidget
virtual string() GetImage;
virtual void(void) Draw;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
};
void CUIPic::CUIPic(void)
@ -49,8 +49,9 @@ void CUIPic::Draw(void)
}
}
void CUIPic::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUIPic::Input (float flEVType, float flKey, float flChar, float flDevID)
{
return false;
}
void CUIPic::SetSize (vector vecSize)

View File

@ -37,7 +37,7 @@ class CUIRadio:CUIWidget
virtual int(void) GetValue;
virtual void(int) SetValue;
virtual void(void(void)) SetFunc;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
};
void CUIRadio::CUIRadio(void)
@ -112,12 +112,15 @@ void CUIRadio::Draw(void)
}
}
void CUIRadio::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUIRadio::Input (float flEVType, float flKey, float flChar, float flDevID)
{
bool ret = false;
if (flEVType == IE_KEYDOWN) {
if (flKey == K_MOUSE1) {
if (Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
m_iFlags |= RADIO_DOWN;
ret = true;
}
}
} else if (flEVType == IE_KEYUP) {
@ -127,8 +130,10 @@ void CUIRadio::Input (float flEVType, float flKey, float flChar, float flDevID)
m_vFunc();
}
SetValue(TRUE);
ret = true;
}
m_iFlags -= (m_iFlags & RADIO_DOWN);
}
}
return (ret);
}

View File

@ -50,7 +50,7 @@ class CUIScrollbar:CUIWidget
virtual void(void(void)) CallOnChange;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
virtual void(void) Draw;
};
@ -168,8 +168,9 @@ void CUIScrollbar::Draw(void)
#endif
}
void CUIScrollbar::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUIScrollbar::Input (float flEVType, float flKey, float flChar, float flDevID)
{
bool ret = false;
vector vecUpPos = m_parent.m_vecOrigin + m_vecOrigin;
vector vecDownPos = m_parent.m_vecOrigin + m_vecOrigin + [0, m_iLength - 20];
@ -177,25 +178,32 @@ void CUIScrollbar::Input (float flEVType, float flKey, float flChar, float flDev
if (flKey == K_MOUSE1) {
if (Util_MouseAbove(getmousepos(), vecUpPos, [20,20])) {
m_iFlags |= SCROLLBAR_UP_DOWN;
ret = true;
} else if (Util_MouseAbove(getmousepos(), vecDownPos, [20,20])) {
m_iFlags |= SCROLLBAR_DN_DOWN;
ret = true;
}
}
} else if (flEVType == IE_KEYUP) {
if (flKey == K_MOUSE1) {
if (m_iFlags & SCROLLBAR_UP_DOWN && Util_MouseAbove(getmousepos(), vecUpPos, [20,20])) {
SetValue(GetValue() - GetStep(), TRUE);
ret = true;
} else if (m_iFlags & SCROLLBAR_DN_DOWN && Util_MouseAbove(getmousepos(), vecDownPos, [20,20])) {
SetValue(GetValue() + GetStep(), TRUE);
ret = true;
}
m_iFlags -= (m_iFlags & SCROLLBAR_UP_DOWN);
m_iFlags -= (m_iFlags & SCROLLBAR_DN_DOWN);
} else if (flKey == K_MWHEELDOWN && Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin, [20, m_iLength])) {
SetValue(GetValue() + GetStep(), TRUE);
ret = true;
} else if (flKey == K_MWHEELUP && Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin, [20, m_iLength])) {
SetValue(GetValue() - GetStep(), TRUE);
ret = true;
}
}
return (ret);
}
void CUIScrollbar::SetLength (int iLength)

View File

@ -29,7 +29,7 @@ class CUISlider:CUIWidget
void(void) CUISlider;
virtual void(void) Draw;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
virtual void(vector) SetSize;
virtual void(string) SetTitle;
};
@ -66,9 +66,9 @@ void CUISlider::Draw(void)
}
}
void CUISlider::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUISlider::Input (float flEVType, float flKey, float flChar, float flDevID)
{
return false;
}
void CUISlider::SetSize (vector vecSize)

View File

@ -28,7 +28,7 @@ class CUITabView:CUIWidget
virtual void(vector) SetSize;
virtual vector() GetSize;
virtual void(string) SetTitle;
virtual void(float, float, float, float) Input;
virtual float(float, float, float, float) Input;
};
void CUITabView::CUITabView(void)
@ -73,6 +73,7 @@ void CUITabView::Draw(void)
//Font_DrawText(m_parent.m_vecOrigin + m_vecOrigin + [8, 8], m_strTitle, g_fntDefault);
}
void CUITabView::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUITabView::Input (float flEVType, float flKey, float flChar, float flDevID)
{
return false;
}

View File

@ -35,7 +35,7 @@ class CUITextBox:CUIWidget
virtual void(vector) SetSize;
virtual void(string) SetText;
virtual string() GetText;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
};
void CUITextBox::CUITextBox(void)
@ -97,13 +97,16 @@ void CUITextBox::Draw(void)
}
}
void CUITextBox::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUITextBox::Input (float flEVType, float flKey, float flChar, float flDevID)
{
bool ret = false;
if (flEVType == IE_KEYDOWN) {
switch (flKey) {
case K_MOUSE1 :
if (Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
m_iFlags |= TEXTBOX_DOWN;
ret = true;
}
break;
case K_BACKSPACE:
@ -130,10 +133,13 @@ void CUITextBox::Input (float flEVType, float flKey, float flChar, float flDevID
if (flKey == K_MOUSE1) {
if (m_iFlags & TEXTBOX_DOWN && Util_MouseAbove(getmousepos(), m_parent.m_vecOrigin + m_vecOrigin, m_vecSize)) {
m_iFlags |= TEXTBOX_FOCUS;
ret = true;
} else {
m_iFlags -= (m_iFlags & TEXTBOX_FOCUS);
ret = true;
}
m_iFlags -= (m_iFlags & TEXTBOX_DOWN);
}
}
return (ret);
}

View File

@ -63,7 +63,7 @@ class CUIWindow:CUIWidget
virtual bool(void) Visible;
virtual void(void) Draw;
virtual void(void) Hide;
virtual void(float, float, float, float) Input;
virtual bool(float, float, float, float) Input;
};
void CUIWindow::CUIWindow(void)
@ -82,7 +82,12 @@ void CUIWindow::CUIWindow(void)
m_btnClose = spawn(CUIButton);
m_btnClose.SetTitle(__NULL__);
m_btnClose.SetIcon("textures/ui/steam/icon_close");
#ifdef CLASSIC_VGUI
m_btnClose.SetIconColor(m_vecColor);
#else
m_btnClose.SetIconColor([1,1,1]);
#endif
m_btnClose.SetColor(m_vecColor);
m_btnClose.SetFunc(WindowButtonClose);
m_btnClose.SetSize([20,20]);
@ -199,7 +204,7 @@ void CUIWindow::Draw(void)
if (m_strTitle) {
if (m_strIcon) {
Font_DrawText(m_vecOrigin + [26, 8], m_strTitle, g_fntDefault);
drawpic(m_vecOrigin + [4, 4], m_strIcon, [16,16], m_vecColor, 1.0f, 0);
drawpic(m_vecOrigin + [4, 4], m_strIcon, [16,16], [1,1,1], 1.0f, 0);
} else {
Font_DrawText(m_vecOrigin + [8, 8], m_strTitle, g_fntDefault);
}
@ -215,8 +220,10 @@ void CUIWindow::Draw(void)
#endif
}
void CUIWindow::Input (float flEVType, float flKey, float flChar, float flDevID)
bool CUIWindow::Input (float flEVType, float flKey, float flChar, float flDevID)
{
bool ret = false;
if (flEVType == IE_KEYDOWN) {
if (flKey == K_MOUSE1) {
if (m_iFlags & WINDOW_CANRESIZE && Util_MouseAbove(getmousepos(), m_vecOrigin + (m_vecSize - [16,16]), [16,16])) {
@ -242,6 +249,7 @@ void CUIWindow::Input (float flEVType, float flKey, float flChar, float flDevID)
m_vResizeCB();
}
}
ret = true;
} else if (m_iFlags & WINDOW_DRAGGING) {
if (flEVType == IE_MOUSEABS) {
vector vNewPos = [flKey, flChar] - m_vecOrigin;
@ -251,5 +259,7 @@ void CUIWindow::Input (float flEVType, float flKey, float flChar, float flDevID)
m_vMoveCB();
}
}
ret = true;
}
return (ret);
}