mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-25 05:11:35 +00:00
Add proper support for touchscreen events to menusys.
This commit is contained in:
parent
f61f98fe6f
commit
3ca6a3a515
24 changed files with 116 additions and 71 deletions
|
@ -3540,6 +3540,10 @@ const float K_MOUSE9 = 522;
|
||||||
const float K_MOUSE10 = 523;
|
const float K_MOUSE10 = 523;
|
||||||
const float K_MWHEELUP = 515;
|
const float K_MWHEELUP = 515;
|
||||||
const float K_MWHEELDOWN = 516;
|
const float K_MWHEELDOWN = 516;
|
||||||
|
const float K_TOUCH = 600;
|
||||||
|
const float K_TOUCHSLIDE = 601;
|
||||||
|
const float K_TOUCHTAP = 602;
|
||||||
|
const float K_TOUCHLONG = 603;
|
||||||
const float K_LWIN = -239;
|
const float K_LWIN = -239;
|
||||||
const float K_RWIN = -240;
|
const float K_RWIN = -240;
|
||||||
const float K_APP = -241;
|
const float K_APP = -241;
|
||||||
|
|
|
@ -69,7 +69,11 @@ void(vector screensize) m_draw =
|
||||||
cltime = gettime(0);
|
cltime = gettime(0);
|
||||||
items_draw(desktop, screensize);
|
items_draw(desktop, screensize);
|
||||||
};
|
};
|
||||||
float(float evtype, float scanx, float chary, float devid) Menu_InputEvent = {return items_keypress(desktop, evtype, scanx, chary, devid);};
|
float(float evtype, float scanx, float chary, float devid) Menu_InputEvent = {
|
||||||
|
if (scanx == K_TOUCH)
|
||||||
|
return TRUE; //always report this as handled. we'll not get fake mouse events then, and can handle K_TOUCHLONG/K_TOUCHTAP/etc without worry of conflicts.
|
||||||
|
return items_keypress(desktop, evtype, scanx, chary, devid);
|
||||||
|
};
|
||||||
void(float scan, float chr) m_keydown = {ui.mousepos = getmousepos();queryscreensize();items_keypress(desktop, IE_KEYDOWN, scan, chr, 0);}; //for DP compat.
|
void(float scan, float chr) m_keydown = {ui.mousepos = getmousepos();queryscreensize();items_keypress(desktop, IE_KEYDOWN, scan, chr, 0);}; //for DP compat.
|
||||||
void(float scan, float chr) m_keyup = {ui.mousepos = getmousepos();queryscreensize();items_keypress(desktop, IE_KEYUP, scan, chr, 0);}; //for DP compat.
|
void(float scan, float chr) m_keyup = {ui.mousepos = getmousepos();queryscreensize();items_keypress(desktop, IE_KEYUP, scan, chr, 0);}; //for DP compat.
|
||||||
void(float mode) m_toggle
|
void(float mode) m_toggle
|
||||||
|
|
|
@ -128,7 +128,7 @@ float(vector pos, float scan, float char, float down, float idx) mitem_cvargrid:
|
||||||
cursorpos = max(cursorpos-1, 0);
|
cursorpos = max(cursorpos-1, 0);
|
||||||
else if (scan == K_RIGHTARROW && cursorpos>=0)
|
else if (scan == K_RIGHTARROW && cursorpos>=0)
|
||||||
cursorpos+=1;
|
cursorpos+=1;
|
||||||
else if (scan == K_MOUSE1)
|
else if (scan == K_MOUSE1 || scan == K_TOUCHTAP)
|
||||||
{
|
{
|
||||||
startedit(idx);
|
startedit(idx);
|
||||||
if (cursorpos>=0)
|
if (cursorpos>=0)
|
||||||
|
|
|
@ -57,7 +57,7 @@ class mitem_saveoption : mitem_text
|
||||||
{
|
{
|
||||||
if (!down)
|
if (!down)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (scan == K_ENTER || (scan == K_MOUSE1 && mouseinbox(pos, this.item_size)))
|
if (ISCONFIRMKEY(scan) || ((scan == K_MOUSE1 || scan == K_TOUCHTAP) && mouseinbox(pos, this.item_size)))
|
||||||
{
|
{
|
||||||
if (item_flags & IF_KFOCUSED)
|
if (item_flags & IF_KFOCUSED)
|
||||||
{
|
{
|
||||||
|
|
|
@ -133,11 +133,16 @@ nonstatic void(mitem_desktop desktop) M_Main =
|
||||||
local string it = (random()<0.9)?"progs/quaddama.mdl":"progs/invulner.mdl";
|
local string it = (random()<0.9)?"progs/quaddama.mdl":"progs/invulner.mdl";
|
||||||
m.add(spawn (mitem_spinnymodel, item_text: it), RS_X_MIN_PARENT_MID|RS_Y_MIN_PARENT_MID | RS_X_MAX_PARENT_MID|RS_Y_MAX_PARENT_MID, [-160, 12*-16/2], [0, 12*16/2]);
|
m.add(spawn (mitem_spinnymodel, item_text: it), RS_X_MIN_PARENT_MID|RS_Y_MIN_PARENT_MID | RS_X_MAX_PARENT_MID|RS_Y_MAX_PARENT_MID, [-160, 12*-16/2], [0, 12*16/2]);
|
||||||
|
|
||||||
|
#ifdef REVISION
|
||||||
#ifdef CSQC
|
#define MENUSYS_REVISION REVISION
|
||||||
m.add(spawn(mitem_text, item_text:strcat("CSQC: ", cvar_string("pr_engine")), item_scale:8), RS_X_MIN_PARENT_MIN|RS_Y_MIN_PARENT_MAX|RS_X_MAX_PARENT_MAX|RS_Y_MAX_PARENT_MAX,[0,-8],[0,0]);
|
|
||||||
#else
|
#else
|
||||||
m.add(spawn(mitem_text, item_text:strcat("MQC: ", cvar_string("pr_engine")), item_scale:8), RS_X_MIN_PARENT_MIN|RS_Y_MIN_PARENT_MAX|RS_X_MAX_PARENT_MAX|RS_Y_MAX_PARENT_MAX,[0,-8],[0,0]);
|
#define MENUSYS_REVISION "<UNKNOWN>"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CSQC
|
||||||
|
#define MODLEPOSTFIX "-CSQC"
|
||||||
|
#else
|
||||||
|
#define MODLEPOSTFIX "-MQC"
|
||||||
|
#endif
|
||||||
|
m.add(spawn(mitem_text, item_text:strcat("MenuSys "MENUSYS_REVISION MODLEPOSTFIX"; ", cvar_string("pr_engine")), item_scale:8), RS_X_MIN_PARENT_MIN|RS_Y_MIN_PARENT_MAX|RS_X_MAX_PARENT_MAX|RS_Y_MAX_PARENT_MAX,[0,-8],[0,0]);
|
||||||
addmenuback(m);
|
addmenuback(m);
|
||||||
};
|
};
|
||||||
|
|
|
@ -269,13 +269,14 @@ class mitem_maplist : mitem_grid
|
||||||
};
|
};
|
||||||
virtual float(vector pos, float scan, float chr, float down, float idx) grid_keypress =
|
virtual float(vector pos, float scan, float chr, float down, float idx) grid_keypress =
|
||||||
{
|
{
|
||||||
if ((scan == K_ENTER || scan == K_MOUSE1) && down)
|
if (down)
|
||||||
{
|
if (ISCONFIRMKEY(scan) || ((scan == K_MOUSE1 || scan == K_TOUCHTAP) && mouseinbox(pos, this.item_size)))
|
||||||
string map = bufstr_get(names, idx);
|
{
|
||||||
map = enginemapname(map);
|
string map = bufstr_get(names, idx);
|
||||||
set("map", map);
|
map = enginemapname(map);
|
||||||
return TRUE;
|
set("map", map);
|
||||||
}
|
return TRUE;
|
||||||
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
};
|
};
|
||||||
// virtual void(float olditem, float newitem) grid_selectionchanged;
|
// virtual void(float olditem, float newitem) grid_selectionchanged;
|
||||||
|
|
|
@ -35,6 +35,10 @@ nonstatic void(mitem_desktop desktop) M_Options_Effects =
|
||||||
|
|
||||||
fr.add(menuitemcheck_spawn(_("Show Framerate"), cv3("showfps", "scr_showfps", "show_fps"), '280 8'), fl, [0, pos], [0, 8]); pos += 8;
|
fr.add(menuitemcheck_spawn(_("Show Framerate"), cv3("showfps", "scr_showfps", "show_fps"), '280 8'), fl, [0, pos], [0, 8]); pos += 8;
|
||||||
fr.add(menuitemcheck_spawn(_("High Res Textures"), "gl_load24bit", '280 8'), fl, [0, pos], [0, 8]); pos += 8;
|
fr.add(menuitemcheck_spawn(_("High Res Textures"), "gl_load24bit", '280 8'), fl, [0, pos], [0, 8]); pos += 8;
|
||||||
|
fr.add(menuitemcombo_spawn(_("Replacement Models"), "r_replacemodels", '280 8', _(
|
||||||
|
"\"\" \"Off\""
|
||||||
|
"\"md3 md2 md5mesh\" \"On\""
|
||||||
|
)), fl, [0, pos], [0, 8]); pos += 8;
|
||||||
|
|
||||||
fr.add(menuitemcombo_spawn(_("Texture Mode"), "gl_texturemode", '280 8', _(
|
fr.add(menuitemcombo_spawn(_("Texture Mode"), "gl_texturemode", '280 8', _(
|
||||||
"GL_NEAREST \"Nearest\" "
|
"GL_NEAREST \"Nearest\" "
|
||||||
|
|
|
@ -71,7 +71,7 @@ nonstatic void(mitem_desktop desktop) M_Options_Video =
|
||||||
fr.add(spawn(mitem_text, item_text:_("Apply / Restart"), item_command:"vid_restart", item_scale:8, item_flags:IF_RIGHTALIGN), RS_X_MIN_PARENT_MIN|RS_Y_MIN_PARENT_MIN | RS_X_MAX_PARENT_MID|RS_Y_MAX_OWN_MIN, [0, pos], [-8, 8]); pos += 8;
|
fr.add(spawn(mitem_text, item_text:_("Apply / Restart"), item_command:"vid_restart", item_scale:8, item_flags:IF_RIGHTALIGN), RS_X_MIN_PARENT_MIN|RS_Y_MIN_PARENT_MIN | RS_X_MAX_PARENT_MID|RS_Y_MAX_OWN_MIN, [0, pos], [-8, 8]); pos += 8;
|
||||||
pos += 8;
|
pos += 8;
|
||||||
|
|
||||||
if (cvar_type("vid_renderer")) fr.add(menuitemcombo_spawn(_("Renderer"), "vid_renderer", '280 8', cvar_string("_vid_renderer_opts")), fl, [0, pos], [0, 8]); pos += 8;
|
if (cvar_type("vid_renderer")) fr.add(menuitemcombo_spawn(_("Renderer"), "vid_renderer", '280 8', strcat("\"\" \"Default\" ", cvar_string("_vid_renderer_opts"))), fl, [0, pos], [0, 8]); pos += 8;
|
||||||
|
|
||||||
//add the options
|
//add the options
|
||||||
if (!dp_workarounds)
|
if (!dp_workarounds)
|
||||||
|
|
|
@ -33,7 +33,7 @@ nonstatic void(mitem_desktop desktop) M_Quit =
|
||||||
{
|
{
|
||||||
m.add(spawn(mitem_text, item_text:"Really Quit?", item_scale:16, item_flags:IF_CENTERALIGN), RS_X_MIN_PARENT_MID|RS_Y_MIN_PARENT_MID | RS_X_MAX_PARENT_MID|RS_Y_MAX_PARENT_MID, [-160, pos-(8+16)], [0, pos-8]); pos += 16;
|
m.add(spawn(mitem_text, item_text:"Really Quit?", item_scale:16, item_flags:IF_CENTERALIGN), RS_X_MIN_PARENT_MID|RS_Y_MIN_PARENT_MID | RS_X_MAX_PARENT_MID|RS_Y_MAX_PARENT_MID, [-160, pos-(8+16)], [0, pos-8]); pos += 16;
|
||||||
|
|
||||||
m.add(spawn(mitem_text, item_text:"Yes, I'm late for work.", item_command:"m_pop;quit", item_scale:16, item_flags:IF_CENTERALIGN), RS_X_MIN_PARENT_MID|RS_Y_MIN_PARENT_MID | RS_X_MAX_PARENT_MID|RS_Y_MAX_PARENT_MID, [-160, pos], [0, pos+16]); pos += 16;
|
m.add(spawn(mitem_text, item_text:"Yes, I'm a quitter.", item_command:"m_pop;quit", item_scale:16, item_flags:IF_CENTERALIGN), RS_X_MIN_PARENT_MID|RS_Y_MIN_PARENT_MID | RS_X_MAX_PARENT_MID|RS_Y_MAX_PARENT_MID, [-160, pos], [0, pos+16]); pos += 16;
|
||||||
m.add(spawn(mitem_text, item_text:"No, keep playing!", item_command:"m_pop;m_main", item_scale:16, item_flags:IF_CENTERALIGN), RS_X_MIN_PARENT_MID|RS_Y_MIN_PARENT_MID | RS_X_MAX_PARENT_MID|RS_Y_MAX_PARENT_MID, [-160, pos], [0, pos+16]); pos += 16;
|
m.add(spawn(mitem_text, item_text:"No, keep playing!", item_command:"m_pop;m_main", item_scale:16, item_flags:IF_CENTERALIGN), RS_X_MIN_PARENT_MID|RS_Y_MIN_PARENT_MID | RS_X_MAX_PARENT_MID|RS_Y_MAX_PARENT_MID, [-160, pos], [0, pos+16]); pos += 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -170,9 +170,9 @@ class mitem_servers : mitem
|
||||||
/*just sink all inputs*/
|
/*just sink all inputs*/
|
||||||
if (!down)
|
if (!down)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (scan != K_MOUSE1)
|
if (scan != K_MOUSE1 && scan != K_TOUCHTAP)
|
||||||
dbltime = cltime - 10;
|
dbltime = cltime - 10;
|
||||||
if (scan == K_MOUSE1)
|
if (scan == K_MOUSE1 || scan == K_TOUCHTAP)
|
||||||
{
|
{
|
||||||
float news = ui.mousepos[1] - (pos_y+8);
|
float news = ui.mousepos[1] - (pos_y+8);
|
||||||
news = floor(news / 8);
|
news = floor(news / 8);
|
||||||
|
@ -217,25 +217,25 @@ class mitem_servers : mitem
|
||||||
|
|
||||||
dbltime = cltime + 0.5;
|
dbltime = cltime + 0.5;
|
||||||
}
|
}
|
||||||
else if (scan == K_ENTER)
|
else if (ISCONFIRMKEY(scan))
|
||||||
{ //connect normally
|
{ //connect normally
|
||||||
addr = gethostcachestring(gethostcacheindexforkey("cname"), server_selected);
|
addr = gethostcachestring(gethostcacheindexforkey("cname"), server_selected);
|
||||||
if (addr)
|
if (addr)
|
||||||
localcmd(sprintf("m_pop;%sconnect \"%s\"\n", getgamedircmd(), addr));
|
localcmd(sprintf("m_pop;%sconnect \"%s\"\n", getgamedircmd(), addr));
|
||||||
}
|
}
|
||||||
else if (scan == 's')
|
else if (scan == 's' || scan == K_GP_X)
|
||||||
{ //s = join as a spectator
|
{ //s = join as a spectator
|
||||||
addr = gethostcachestring(gethostcacheindexforkey("cname"), server_selected);
|
addr = gethostcachestring(gethostcacheindexforkey("cname"), server_selected);
|
||||||
if (addr)
|
if (addr)
|
||||||
localcmd(sprintf("m_pop;%sobserve \"%s\"\n", getgamedircmd(), addr));
|
localcmd(sprintf("m_pop;%sobserve \"%s\"\n", getgamedircmd(), addr));
|
||||||
}
|
}
|
||||||
else if (scan == 'j')
|
else if (scan == 'j')
|
||||||
{ //s = join as a spectator
|
{ //j = join as a player
|
||||||
addr = gethostcachestring(gethostcacheindexforkey("cname"), server_selected);
|
addr = gethostcachestring(gethostcacheindexforkey("cname"), server_selected);
|
||||||
if (addr)
|
if (addr)
|
||||||
localcmd(sprintf("m_pop;%sjoin \"%s\"\n", getgamedircmd(), addr));
|
localcmd(sprintf("m_pop;%sjoin \"%s\"\n", getgamedircmd(), addr));
|
||||||
}
|
}
|
||||||
else if (scan == K_UPARROW || scan == K_MWHEELUP)
|
else if (ISUPARROW(scan) || scan == K_MWHEELUP)
|
||||||
{
|
{
|
||||||
this.server_selected -= 1;
|
this.server_selected -= 1;
|
||||||
if (this.server_selected < 0)
|
if (this.server_selected < 0)
|
||||||
|
@ -246,7 +246,7 @@ class mitem_servers : mitem
|
||||||
}
|
}
|
||||||
dobound = TRUE;
|
dobound = TRUE;
|
||||||
}
|
}
|
||||||
else if (scan == K_DOWNARROW || scan == K_MWHEELDOWN)
|
else if (ISDOWNARROW(scan) || scan == K_MWHEELDOWN)
|
||||||
{
|
{
|
||||||
this.server_selected += 1;
|
this.server_selected += 1;
|
||||||
if (this.server_selected >= gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT))
|
if (this.server_selected >= gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT))
|
||||||
|
@ -287,7 +287,7 @@ class mitem_servers : mitem
|
||||||
this.server_selected = 0;
|
this.server_selected = 0;
|
||||||
dobound = TRUE;
|
dobound = TRUE;
|
||||||
}
|
}
|
||||||
else if (char == 'r' || char == 'R' || scan == K_F5)
|
else if (char == 'r' || char == 'R' || scan == K_F5 || scan == K_GP_Y)
|
||||||
{
|
{
|
||||||
refreshhostcache();
|
refreshhostcache();
|
||||||
resorthostcache();
|
resorthostcache();
|
||||||
|
|
|
@ -117,7 +117,7 @@ void(vector pos, float idx) mitem_updategrid::grid_draw =
|
||||||
text = strcat("pkg quiet_", action, " \"", text, "\"\n");
|
text = strcat("pkg quiet_", action, " \"", text, "\"\n");
|
||||||
localcmd(text);
|
localcmd(text);
|
||||||
}
|
}
|
||||||
else if (scan == K_RIGHTARROW || scan==K_ENTER || scan == K_MOUSE1)
|
else if (scan == K_RIGHTARROW || scan==K_ENTER || scan == K_MOUSE1 || scan == K_TOUCHTAP)
|
||||||
{
|
{
|
||||||
text = getpackagemanagerinfo(idx, GPMI_NAME);
|
text = getpackagemanagerinfo(idx, GPMI_NAME);
|
||||||
if (!text)
|
if (!text)
|
||||||
|
|
|
@ -74,7 +74,7 @@ float(vector pos, float scan, float char, float down) mitem_bind::item_keypress
|
||||||
|
|
||||||
if (self.item_flags & IF_INTERACT)
|
if (self.item_flags & IF_INTERACT)
|
||||||
{
|
{
|
||||||
if (scan == K_ESCAPE)
|
if (scan == K_ESCAPE || scan == K_GP_START) //keys that cannot/shouldnot be bound can be used to cancel here.
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
else if (scan)
|
else if (scan)
|
||||||
|
@ -86,12 +86,12 @@ float(vector pos, float scan, float char, float down) mitem_bind::item_keypress
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (scan == K_ENTER || (scan == K_MOUSE1 && mouseinbox(pos, self.item_size)))
|
if (scan == K_ENTER || scan == K_GP_A || ((scan == K_TOUCHTAP || scan == K_MOUSE1) && mouseinbox(pos, self.item_size)))
|
||||||
{
|
{
|
||||||
self.item_flags |= IF_INTERACT;
|
self.item_flags |= IF_INTERACT;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
if (scan == K_DEL || scan == K_BACKSPACE)
|
if (scan == K_DEL || scan == K_GP_Y || scan == K_BACKSPACE)
|
||||||
{
|
{
|
||||||
#ifdef CSQC
|
#ifdef CSQC
|
||||||
float c = tokenize(findkeysforcommandex(self.item_command));
|
float c = tokenize(findkeysforcommandex(self.item_command));
|
||||||
|
|
|
@ -8,14 +8,14 @@ class mitem_check : mitem
|
||||||
if (!down)
|
if (!down)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (scan == K_ENTER || scan == K_SPACE || scan == K_LEFTARROW || scan == K_RIGHTARROW || scan == K_MOUSE1)
|
if (ISCONFIRMKEY(scan) || scan == K_SPACE || ISLEFTARROW(scan) || ISRIGHTARROW(scan) || scan == K_MOUSE1 || scan == K_TOUCHTAP)
|
||||||
{
|
{
|
||||||
pos_x += this.item_size_x / 2;
|
pos_x += this.item_size_x / 2;
|
||||||
// if (ui.mousepos[0] > pos_x || scan != K_MOUSE1) //don't do anything if they clicked the bit on the left to select it
|
// if (ui.mousepos[0] > pos_x || scan != K_MOUSE1) //don't do anything if they clicked the bit on the left to select it
|
||||||
set(item_command, ftos(!stof(get(item_command))));
|
set(item_command, ftos(!stof(get(item_command))));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (scan == K_DEL && down && cvar_type(item_command))
|
else if ((scan == K_DEL || scan == K_GP_Y) && down && cvar_type(item_command))
|
||||||
set(item_command, cvar_defstring(item_command));
|
set(item_command, cvar_defstring(item_command));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
};
|
};
|
||||||
|
|
|
@ -237,7 +237,7 @@ float(vector pos, float scan, float char, float down) mitem_colours::item_keypre
|
||||||
|
|
||||||
|
|
||||||
local float curval = rgbtohsv(hextorgb(get(item_command)))[0];
|
local float curval = rgbtohsv(hextorgb(get(item_command)))[0];
|
||||||
if (scan == K_MOUSE1)
|
if (scan == K_TOUCHTAP || scan == K_MOUSE1)
|
||||||
{
|
{
|
||||||
float width = item_size_x / 2;
|
float width = item_size_x / 2;
|
||||||
pos_x += width;
|
pos_x += width;
|
||||||
|
@ -256,11 +256,11 @@ float(vector pos, float scan, float char, float down) mitem_colours::item_keypre
|
||||||
set(item_command, rgbtohex(hsvtorgb([(curval), 1, 1])));
|
set(item_command, rgbtohex(hsvtorgb([(curval), 1, 1])));
|
||||||
ui.mgrabs = this;
|
ui.mgrabs = this;
|
||||||
}
|
}
|
||||||
else if (scan == K_LEFTARROW || scan == K_SPACE)
|
else if (ISLEFTARROW(scan) || scan == K_SPACE)
|
||||||
{
|
{
|
||||||
set(item_command, rgbtohex(hsvtorgb([curval - (1/64.0), 1, 1]))); //yay autorepeat
|
set(item_command, rgbtohex(hsvtorgb([curval - (1/64.0), 1, 1]))); //yay autorepeat
|
||||||
}
|
}
|
||||||
else if (scan == K_RIGHTARROW || scan == K_ENTER)
|
else if (ISRIGHTARROW(scan) || scan == K_ENTER)
|
||||||
{
|
{
|
||||||
set(item_command, rgbtohex(hsvtorgb([curval + (1/64.0), 1, 1])));
|
set(item_command, rgbtohex(hsvtorgb([curval + (1/64.0), 1, 1])));
|
||||||
}
|
}
|
||||||
|
|
|
@ -241,7 +241,7 @@ void(vector pos) mitem_combo_popup::item_draw =
|
||||||
};
|
};
|
||||||
float(vector pos, float scan, float char, float down) mitem_combo_popup::item_keypress =
|
float(vector pos, float scan, float char, float down) mitem_combo_popup::item_keypress =
|
||||||
{
|
{
|
||||||
if (pslider && scan == K_MOUSE1)
|
if (pslider && (scan == K_TOUCHTAP || scan == K_MOUSE1))
|
||||||
{
|
{
|
||||||
vector sliderpos = pos + [item_size_x-pslider.item_size_x,0];
|
vector sliderpos = pos + [item_size_x-pslider.item_size_x,0];
|
||||||
if (mouseinbox(pos + [item_size_x-pslider.item_size_x,0], pslider.item_size))
|
if (mouseinbox(pos + [item_size_x-pslider.item_size_x,0], pslider.item_size))
|
||||||
|
@ -269,7 +269,7 @@ float(vector pos, float scan, float char, float down) mitem_combo::item_keypress
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scan == K_ESCAPE || scan == K_MOUSE2)
|
if (scan == K_ESCAPE || scan == K_MOUSE2 || scan == K_GP_B || scan == K_GP_BACK)
|
||||||
{
|
{
|
||||||
if (cpopup)
|
if (cpopup)
|
||||||
{
|
{
|
||||||
|
@ -278,23 +278,23 @@ float(vector pos, float scan, float char, float down) mitem_combo::item_keypress
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
else if (scan == K_MWHEELUP || (scan == K_UPARROW && cpopup))
|
else if (scan == K_MWHEELUP || (cpopup && ISUPARROW(scan)) || (!cpopup && spos < 0 && ISLEFTARROW(scan)))
|
||||||
{
|
{
|
||||||
i -= 2;
|
i -= 2;
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
i = c - 2;
|
i = c - 2;
|
||||||
curval = argv(i);
|
curval = argv(i);
|
||||||
}
|
}
|
||||||
else if (scan == K_MWHEELDOWN || (scan == K_DOWNARROW && cpopup))
|
else if (scan == K_MWHEELDOWN || (cpopup && ISDOWNARROW(scan)) || (!cpopup && spos < 0 && ISRIGHTARROW(scan)))
|
||||||
{
|
{
|
||||||
i += 2;
|
i += 2;
|
||||||
if (i >= c)
|
if (i >= c)
|
||||||
i = 0;
|
i = 0;
|
||||||
curval = argv(i);
|
curval = argv(i);
|
||||||
}
|
}
|
||||||
else if (scan == K_MOUSE1 || scan == K_ENTER)
|
else if (scan == K_TOUCHTAP || scan == K_MOUSE1 || ISCONFIRMKEY(scan))
|
||||||
{
|
{
|
||||||
if (scan == K_ENTER && cpopup)
|
if (ISCONFIRMKEY(scan) && cpopup)
|
||||||
{
|
{
|
||||||
cpopup.item_remove();
|
cpopup.item_remove();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -321,7 +321,7 @@ float(vector pos, float scan, float char, float down) mitem_combo::item_keypress
|
||||||
cpopup.item_flags |= IF_SELECTABLE;
|
cpopup.item_flags |= IF_SELECTABLE;
|
||||||
cpopup.totop();
|
cpopup.totop();
|
||||||
|
|
||||||
if (scan == K_MOUSE1 && (cpopup.item_flags & IF_MFOCUSED))
|
if ((scan == K_TOUCHTAP || scan == K_MOUSE1) && (cpopup.item_flags & IF_MFOCUSED))
|
||||||
{
|
{
|
||||||
//if they clicked inside the popup, change the selected item.
|
//if they clicked inside the popup, change the selected item.
|
||||||
f = ui.mousepos[1] - (pos_y + item_size_y);
|
f = ui.mousepos[1] - (pos_y + item_size_y);
|
||||||
|
|
|
@ -27,7 +27,7 @@ float(string fontname, string fontmaps, string sizes, float slot, optional float
|
||||||
void() mitem_desktop::mitem_desktop =
|
void() mitem_desktop::mitem_desktop =
|
||||||
{
|
{
|
||||||
#define menu_font_win autocvar(menu_font_win, "cour")
|
#define menu_font_win autocvar(menu_font_win, "cour")
|
||||||
#define menu_font autocvar(menu_font, "cour")
|
#define menu_font autocvar(menu_font, "Courier New")
|
||||||
#define menu_font_fallback autocvar(gl_font, "")
|
#define menu_font_fallback autocvar(gl_font, "")
|
||||||
queryscreensize();
|
queryscreensize();
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ float(vector pos, float scan, float char, float down) mitem_desktop::item_keypre
|
||||||
{
|
{
|
||||||
down &= 1;
|
down &= 1;
|
||||||
//if we're grabbing, then cancel if they press escape, otherwise block other items from taking the keys.
|
//if we're grabbing, then cancel if they press escape, otherwise block other items from taking the keys.
|
||||||
if (scan >= K_MOUSE1 && scan <= K_MOUSE5)
|
if (scan == K_TOUCHTAP || (scan >= K_MOUSE1 && scan <= K_MOUSE5))
|
||||||
return 2; //block other wigits, don't cancel the event so the engine still does its thing
|
return 2; //block other wigits, don't cancel the event so the engine still does its thing
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -125,7 +125,7 @@ float(vector pos, float scan, float char, float down) mitem_desktop::item_keypre
|
||||||
if (mitem_frame::item_keypress(pos, scan, char, down))
|
if (mitem_frame::item_keypress(pos, scan, char, down))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
if (scan == K_MOUSE1 && down)
|
if ((scan == K_TOUCHTAP || scan == K_MOUSE1) && down)
|
||||||
{
|
{
|
||||||
#if defined(CSQC) && defined(FTE_SPLITSCREEN)
|
#if defined(CSQC) && defined(FTE_SPLITSCREEN)
|
||||||
__using(numclientseats)
|
__using(numclientseats)
|
||||||
|
@ -290,6 +290,11 @@ void(float force) items_updategrabs =
|
||||||
setcursormode(TRUE, autocvar(cl_cursor, "gfx/cursor.lmp"), autocvar(cl_cursorbias, 4.0)*'1 1', autocvar(cl_cursorscale, 1.0)); //because we can
|
setcursormode(TRUE, autocvar(cl_cursor, "gfx/cursor.lmp"), autocvar(cl_cursorbias, 4.0)*'1 1', autocvar(cl_cursorscale, 1.0)); //because we can
|
||||||
else
|
else
|
||||||
setcursormode(TRUE); //because DP sucks.
|
setcursormode(TRUE); //because DP sucks.
|
||||||
|
|
||||||
|
//evilness. make sure we fit the screen by forcing the screen size upwards. this may also affect reported video mode choices as well as being just extra scaling.
|
||||||
|
if (autocvar(vid_minsize, '640 480').x < 640 ||
|
||||||
|
autocvar(vid_minsize, '640 480').y < 480)
|
||||||
|
cvar_set("vid_minsize", "640 480");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (oldgrabstate || force)
|
else if (oldgrabstate || force)
|
||||||
|
@ -371,7 +376,7 @@ float(mitem_desktop desktop, float evtype, float scanx, float chary, float devid
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (scanx >= K_MOUSE1 && scanx <= K_MOUSE5)
|
if (scanx == K_TOUCHTAP || (scanx >= K_MOUSE1 && scanx <= K_MOUSE5))
|
||||||
{
|
{
|
||||||
if (ui.mgrabs)
|
if (ui.mgrabs)
|
||||||
{
|
{
|
||||||
|
@ -400,7 +405,14 @@ float(mitem_desktop desktop, float evtype, float scanx, float chary, float devid
|
||||||
}
|
}
|
||||||
if (desktop && desktop.item_keypress)
|
if (desktop && desktop.item_keypress)
|
||||||
result = desktop.item_keypress(desktop.item_position, scanx, chary, evtype == IE_KEYDOWN||evtype == IE_PASTE);
|
result = desktop.item_keypress(desktop.item_position, scanx, chary, evtype == IE_KEYDOWN||evtype == IE_PASTE);
|
||||||
if (scanx >= K_MOUSE1 && scanx <= K_MOUSE5)
|
if (scanx == K_TOUCHTAP)
|
||||||
|
{
|
||||||
|
if (evtype == IE_KEYDOWN)
|
||||||
|
ui.mousedown |= 1<<23;
|
||||||
|
else
|
||||||
|
ui.mousedown &~= 1<<23;
|
||||||
|
}
|
||||||
|
else if (scanx >= K_MOUSE1 && scanx <= K_MOUSE5)
|
||||||
{
|
{
|
||||||
if (evtype == IE_KEYDOWN)
|
if (evtype == IE_KEYDOWN)
|
||||||
ui.mousedown |= pow(1, scanx-K_MOUSE1);
|
ui.mousedown |= pow(1, scanx-K_MOUSE1);
|
||||||
|
|
|
@ -62,6 +62,7 @@ float(vector pos, float scan, float chr, float down) mitem_edit::item_keypress =
|
||||||
|
|
||||||
if (scan == K_ESCAPE)
|
if (scan == K_ESCAPE)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
//FIXME: onscreen keyboard?
|
||||||
else if (scan == K_LEFTARROW)
|
else if (scan == K_LEFTARROW)
|
||||||
spos = max(spos-1, 0);
|
spos = max(spos-1, 0);
|
||||||
else if (scan == K_RIGHTARROW)
|
else if (scan == K_RIGHTARROW)
|
||||||
|
@ -70,7 +71,7 @@ float(vector pos, float scan, float chr, float down) mitem_edit::item_keypress =
|
||||||
spos = 0;
|
spos = 0;
|
||||||
else if (scan == K_END)
|
else if (scan == K_END)
|
||||||
spos = strlen(curval);
|
spos = strlen(curval);
|
||||||
else if (scan == K_MOUSE1)
|
else if (scan == K_TOUCHTAP || scan == K_MOUSE1)
|
||||||
{
|
{
|
||||||
float valuepos = pos_x+(item_size_x/2)+1;
|
float valuepos = pos_x+(item_size_x/2)+1;
|
||||||
if (ui.mousepos[0] > valuepos-8)
|
if (ui.mousepos[0] > valuepos-8)
|
||||||
|
|
|
@ -18,14 +18,14 @@ class mitem_exmenu : mitem_frame
|
||||||
if (!ret && down)
|
if (!ret && down)
|
||||||
{
|
{
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
if (scan == K_MOUSE2 || scan == K_ESCAPE)
|
if (scan == K_MOUSE2 || scan == K_TOUCHLONG || scan == K_ESCAPE || scan == K_GP_BACK || scan == K_GP_B)
|
||||||
{
|
{
|
||||||
localcmd(strcat(item_command, "\n")); //console command to exec if someone clicks the close button.
|
localcmd(strcat(item_command, "\n")); //console command to exec if someone clicks the close button.
|
||||||
item_remove();
|
item_remove();
|
||||||
}
|
}
|
||||||
else if (scan == K_UPARROW && down)
|
else if (ISUPARROW(scan))
|
||||||
menu_selectnextitem(this, TRUE);
|
menu_selectnextitem(this, TRUE);
|
||||||
else if (scan == K_DOWNARROW && down)
|
else if (ISDOWNARROW(scan))
|
||||||
menu_selectnextitem(this, FALSE);
|
menu_selectnextitem(this, FALSE);
|
||||||
else if (scan >= K_F1 && scan <= K_F12) //allow f1-f12 to work, but every other button event gets canceled.
|
else if (scan >= K_F1 && scan <= K_F12) //allow f1-f12 to work, but every other button event gets canceled.
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
|
|
|
@ -358,7 +358,7 @@ float(vector pos, float scan, float char, float down) mitem_vslider::item_keypre
|
||||||
{
|
{
|
||||||
if (down != 1)
|
if (down != 1)
|
||||||
{
|
{
|
||||||
if (scan == K_MOUSE1 && ui.mgrabs == this)
|
if ((scan == K_TOUCHTAP || scan == K_MOUSE1) && ui.mgrabs == this)
|
||||||
ui.mgrabs = __NULL__;
|
ui.mgrabs = __NULL__;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -366,7 +366,7 @@ float(vector pos, float scan, float char, float down) mitem_vslider::item_keypre
|
||||||
val = bound(minv, val+stride, maxv);
|
val = bound(minv, val+stride, maxv);
|
||||||
else if (scan == K_MWHEELUP)
|
else if (scan == K_MWHEELUP)
|
||||||
val = bound(minv, val-stride, maxv);
|
val = bound(minv, val-stride, maxv);
|
||||||
else if (scan == K_MOUSE1)
|
else if (scan == K_TOUCHTAP || scan == K_MOUSE1)
|
||||||
ui.mgrabs = this;
|
ui.mgrabs = this;
|
||||||
else
|
else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -545,7 +545,7 @@ float(vector pos, float scan, float char, float down) mitem_frame::item_keypress
|
||||||
pos[0] += item_framesize[0];
|
pos[0] += item_framesize[0];
|
||||||
pos[1] += item_framesize[1];
|
pos[1] += item_framesize[1];
|
||||||
|
|
||||||
if (scan >= K_MOUSE1 && scan <= K_MOUSE5 && scan != K_MWHEELUP && scan != K_MWHEELDOWN)
|
if ((scan >= K_MOUSE1 && scan <= K_MOUSE5 && scan != K_MWHEELUP && scan != K_MWHEELDOWN) || scan == K_TOUCHTAP)
|
||||||
{
|
{
|
||||||
if (item_exclusive)
|
if (item_exclusive)
|
||||||
ch = item_exclusive;
|
ch = item_exclusive;
|
||||||
|
|
|
@ -55,11 +55,11 @@ float(vector pos, float scan, float char, float down) mitem_grid::item_keypress
|
||||||
float ch;
|
float ch;
|
||||||
float handled = FALSE;
|
float handled = FALSE;
|
||||||
|
|
||||||
if (scan >= K_MOUSE1 && scan <= K_MOUSE5 && scan != K_MWHEELUP && scan != K_MWHEELDOWN)
|
if (scan >= K_MOUSE1 && scan <= K_MOUSE5 && scan != K_MWHEELUP && scan != K_MWHEELDOWN && scan != K_TOUCHTAP)
|
||||||
{
|
{
|
||||||
ch = grid_mactive;
|
ch = grid_mactive;
|
||||||
if (ch != grid_kactive)
|
if (ch != grid_kactive)
|
||||||
if (down && scan == K_MOUSE1) //keyboard focus follows on mouse click.
|
if (down && (scan == K_TOUCHTAP || scan == K_MOUSE1)) //keyboard focus follows on mouse click.
|
||||||
{
|
{
|
||||||
item_focuschange((ch>=0)?__NULL__:vslider, IF_KFOCUSED);
|
item_focuschange((ch>=0)?__NULL__:vslider, IF_KFOCUSED);
|
||||||
grid_selectionchanged(grid_kactive, ch);
|
grid_selectionchanged(grid_kactive, ch);
|
||||||
|
@ -116,9 +116,15 @@ float(vector pos, float scan, float char, float down) mitem_grid::item_keypress
|
||||||
ch = min(grid_numchildren-1, grid_kactive+5);
|
ch = min(grid_numchildren-1, grid_kactive+5);
|
||||||
break;
|
break;
|
||||||
case K_UPARROW:
|
case K_UPARROW:
|
||||||
|
case K_GP_DPAD_UP:
|
||||||
|
case K_GP_LTHUMB_UP:
|
||||||
|
case K_GP_RTHUMB_UP:
|
||||||
ch = max(grid_kactive-1, 0);
|
ch = max(grid_kactive-1, 0);
|
||||||
break;
|
break;
|
||||||
case K_DOWNARROW:
|
case K_DOWNARROW:
|
||||||
|
case K_GP_DPAD_DOWN:
|
||||||
|
case K_GP_LTHUMB_DOWN:
|
||||||
|
case K_GP_RTHUMB_DOWN:
|
||||||
ch = min(grid_kactive+1, grid_numchildren-1);
|
ch = min(grid_kactive+1, grid_numchildren-1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ float(vector pos, float scan, float char, float down) mitem_hslider::item_keypre
|
||||||
if (down&2)
|
if (down&2)
|
||||||
{
|
{
|
||||||
//we have grabs, and mouse was released?
|
//we have grabs, and mouse was released?
|
||||||
if (scan == K_MOUSE1 && !(down&1))
|
if ((scan == K_TOUCHTAP || scan == K_MOUSE1) && !(down&1))
|
||||||
{ //we're done here.
|
{ //we're done here.
|
||||||
ui.mgrabs = __NULL__;
|
ui.mgrabs = __NULL__;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -83,7 +83,7 @@ float(vector pos, float scan, float char, float down) mitem_hslider::item_keypre
|
||||||
if (ui.mousepos[0] > pos_x + item_size[0]/2)
|
if (ui.mousepos[0] > pos_x + item_size[0]/2)
|
||||||
scan = ((scan == K_MWHEELDOWN)?K_LEFTARROW:K_RIGHTARROW);
|
scan = ((scan == K_MWHEELDOWN)?K_LEFTARROW:K_RIGHTARROW);
|
||||||
}
|
}
|
||||||
if (scan == K_MOUSE1 && down)
|
if ((scan == K_TOUCHTAP || scan == K_MOUSE1) && down)
|
||||||
{
|
{
|
||||||
pos_x += item_size_x / 2;
|
pos_x += item_size_x / 2;
|
||||||
if (ui.mousepos[0] < pos_x)
|
if (ui.mousepos[0] < pos_x)
|
||||||
|
@ -95,23 +95,23 @@ float(vector pos, float scan, float char, float down) mitem_hslider::item_keypre
|
||||||
set(item_command, sprintf("%g", curval));
|
set(item_command, sprintf("%g", curval));
|
||||||
ui.mgrabs = this;
|
ui.mgrabs = this;
|
||||||
}
|
}
|
||||||
else if (scan == K_DEL && down && cvar_type(item_command))
|
else if ((scan == K_DEL || scan == K_GP_Y) && down && cvar_type(item_command))
|
||||||
set(item_command, cvar_defstring(item_command));
|
set(item_command, cvar_defstring(item_command));
|
||||||
else if ((scan == K_LEFTARROW || scan == K_MWHEELUP) && down)
|
else if ((ISLEFTARROW(scan) || scan == K_MWHEELUP) && down)
|
||||||
{
|
{
|
||||||
if (item_slidercontrols_x > item_slidercontrols_y)
|
if (item_slidercontrols_x > item_slidercontrols_y)
|
||||||
set(item_command, sprintf("%g", min(curval - item_slidercontrols_z, item_slidercontrols_x)));
|
set(item_command, sprintf("%g", min(curval - item_slidercontrols_z, item_slidercontrols_x)));
|
||||||
else
|
else
|
||||||
set(item_command, sprintf("%g", max(curval - item_slidercontrols_z, item_slidercontrols_x)));
|
set(item_command, sprintf("%g", max(curval - item_slidercontrols_z, item_slidercontrols_x)));
|
||||||
}
|
}
|
||||||
else if ((scan == K_RIGHTARROW || scan == K_MWHEELDOWN) && down)
|
else if ((ISRIGHTARROW(scan) || scan == K_MWHEELDOWN) && down)
|
||||||
{
|
{
|
||||||
if (item_slidercontrols_x > item_slidercontrols_y)
|
if (item_slidercontrols_x > item_slidercontrols_y)
|
||||||
set(item_command, sprintf("%g", max(curval + item_slidercontrols_z, item_slidercontrols_y)));
|
set(item_command, sprintf("%g", max(curval + item_slidercontrols_z, item_slidercontrols_y)));
|
||||||
else
|
else
|
||||||
set(item_command, sprintf("%g", min(curval + item_slidercontrols_z, item_slidercontrols_y)));
|
set(item_command, sprintf("%g", min(curval + item_slidercontrols_z, item_slidercontrols_y)));
|
||||||
}
|
}
|
||||||
else if ((scan == K_ENTER || scan == K_SPACE) && down)
|
else if ((ISCONFIRMKEY(scan) || scan == K_SPACE) && down)
|
||||||
{
|
{
|
||||||
//keyenter:
|
//keyenter:
|
||||||
if (item_slidercontrols_x > item_slidercontrols_y)
|
if (item_slidercontrols_x > item_slidercontrols_y)
|
||||||
|
@ -133,7 +133,7 @@ float(vector pos, float scan, float char, float down) mitem_hslider::item_keypre
|
||||||
return FALSE;
|
return FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (scan == K_MOUSE1 && ui.mgrabs == this)
|
else if ((scan == K_TOUCHTAP || scan == K_MOUSE1) && ui.mgrabs == this)
|
||||||
ui.mgrabs = __NULL__;
|
ui.mgrabs = __NULL__;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,9 +20,9 @@ class mitem_tab : mitem_frame
|
||||||
{
|
{
|
||||||
virtual float(vector pos, float scan, float char, float down) item_keypress =
|
virtual float(vector pos, float scan, float char, float down) item_keypress =
|
||||||
{
|
{
|
||||||
if (scan == K_UPARROW && down)
|
if (down && ISUPARROW(scan))
|
||||||
menu_selectnextitem(this, TRUE);
|
menu_selectnextitem(this, TRUE);
|
||||||
else if (scan == K_DOWNARROW && down)
|
else if (down && ISDOWNARROW(scan))
|
||||||
menu_selectnextitem(this, FALSE);
|
menu_selectnextitem(this, FALSE);
|
||||||
else if (super::item_keypress(pos, scan, char, down))
|
else if (super::item_keypress(pos, scan, char, down))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -99,7 +99,7 @@ float(vector pos, float scan, float char, float down) mitem_tabs::item_keypress
|
||||||
local vector sz;
|
local vector sz;
|
||||||
local float result;
|
local float result;
|
||||||
|
|
||||||
if (down && (scan == K_MOUSE1 || scan == K_MOUSE2 || scan == K_MOUSE3))
|
if (down && (scan == K_TOUCHTAP || scan == K_MOUSE1 || scan == K_MOUSE2 || scan == K_MOUSE3))
|
||||||
{
|
{
|
||||||
sz = [8,16];
|
sz = [8,16];
|
||||||
//to highlight the active tab, we draw the top line 1 pixel higher, and no bottom line
|
//to highlight the active tab, we draw the top line 1 pixel higher, and no bottom line
|
||||||
|
@ -121,7 +121,7 @@ float(vector pos, float scan, float char, float down) mitem_tabs::item_keypress
|
||||||
result = ch.item_keypress(pos + [item_framesize[0], item_framesize[1]] + ch.item_position, scan, char, down);
|
result = ch.item_keypress(pos + [item_framesize[0], item_framesize[1]] + ch.item_position, scan, char, down);
|
||||||
if (!result && down)
|
if (!result && down)
|
||||||
{
|
{
|
||||||
if (scan == K_TAB || scan == K_RIGHTARROW)
|
if ((scan == K_TAB && !ui.shiftheld) || scan == K_GP_RSHOULDER || scan == K_RIGHTARROW)
|
||||||
{
|
{
|
||||||
ch = ch.item_next;
|
ch = ch.item_next;
|
||||||
if (!ch)
|
if (!ch)
|
||||||
|
@ -129,7 +129,7 @@ float(vector pos, float scan, float char, float down) mitem_tabs::item_keypress
|
||||||
item_focuschange(ch, IF_KFOCUSED);
|
item_focuschange(ch, IF_KFOCUSED);
|
||||||
result = TRUE;
|
result = TRUE;
|
||||||
}
|
}
|
||||||
// else if (scan == K_LEFTARROW)
|
// else if ((scan == K_TAB && ui.shiftheld) || scan == K_GP_LSHOULDER || scan == K_LEFTARROW)
|
||||||
// {
|
// {
|
||||||
// ch = ch.item_next;
|
// ch = ch.item_next;
|
||||||
// if (!ch)
|
// if (!ch)
|
||||||
|
|
|
@ -70,6 +70,14 @@ __strip var float dp_workarounds;
|
||||||
#define MENUBACK_ALPHA 0.8
|
#define MENUBACK_ALPHA 0.8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//input helpers - gamepads need 3 different 'keys' for natural movement through menus. :(
|
||||||
|
#define ISUPARROW(scan) (scan == K_UPARROW || scan == K_GP_DPAD_UP || scan == K_GP_LTHUMB_UP || scan == K_GP_RTHUMB_UP)
|
||||||
|
#define ISDOWNARROW(scan) (scan == K_DOWNARROW || scan == K_GP_DPAD_DOWN || scan == K_GP_LTHUMB_DOWN || scan == K_GP_RTHUMB_DOWN)
|
||||||
|
#define ISLEFTARROW(scan) (scan == K_LEFTARROW || scan == K_GP_DPAD_LEFT || scan == K_GP_LTHUMB_LEFT || scan == K_GP_RTHUMB_LEFT)
|
||||||
|
#define ISRIGHTARROW(scan) (scan == K_RIGHTARROW || scan == K_GP_DPAD_RIGHT || scan == K_GP_LTHUMB_RIGHT || scan == K_GP_RTHUMB_RIGHT)
|
||||||
|
#define ISCONFIRMKEY(scan) (scan == K_ENTER || scan == K_GP_A || scan == K_GP_START)
|
||||||
|
#define ISCANCELKEY(scan) (scan == K_ENTER || scan == K_GP_B || scan == K_GP_VIEW)
|
||||||
|
|
||||||
//#ifdef TARGET_FTE
|
//#ifdef TARGET_FTE
|
||||||
//#pragma TARGET FTE
|
//#pragma TARGET FTE
|
||||||
//#endif
|
//#endif
|
||||||
|
|
|
@ -99,7 +99,7 @@ class mitem_text : mitem
|
||||||
{
|
{
|
||||||
if (!down)
|
if (!down)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (scan == K_ENTER || (scan == K_MOUSE1 && mouseinbox(pos, this.item_size)))
|
if (ISCONFIRMKEY(scan) || ((scan == K_TOUCHTAP || scan == K_MOUSE1) && mouseinbox(pos, this.item_size)))
|
||||||
{
|
{
|
||||||
item_parent.item_execcommand(this, this.item_command);
|
item_parent.item_execcommand(this, this.item_command);
|
||||||
// localcmd(strcat(this.item_command, "\n"));
|
// localcmd(strcat(this.item_command, "\n"));
|
||||||
|
@ -218,7 +218,7 @@ class mitem_label : mitem
|
||||||
{
|
{
|
||||||
if (!down)
|
if (!down)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (scan == K_ENTER || (scan == K_MOUSE1 && mouseinbox(pos, this.item_size)))
|
if (ISCONFIRMKEY(scan) || ((scan == K_TOUCHTAP || scan == K_MOUSE1) && mouseinbox(pos, this.item_size)))
|
||||||
{
|
{
|
||||||
item_parent.item_execcommand(this, this.item_command);
|
item_parent.item_execcommand(this, this.item_command);
|
||||||
// localcmd(strcat(this.item_command, "\n"));
|
// localcmd(strcat(this.item_command, "\n"));
|
||||||
|
@ -272,7 +272,7 @@ class mitem_button : mitem
|
||||||
{
|
{
|
||||||
if (!down)
|
if (!down)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (scan == K_ENTER || (scan == K_MOUSE1 && mouseinbox(pos, this.item_size)))
|
if (ISCONFIRMKEY(scan) || (scan == K_MOUSE1 && mouseinbox(pos, this.item_size)))
|
||||||
item_parent.item_execcommand(this, item_command);
|
item_parent.item_execcommand(this, item_command);
|
||||||
else
|
else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
Loading…
Reference in a new issue