Merge branch 'master' into next
This commit is contained in:
commit
b97b9ac7a8
|
@ -32,6 +32,7 @@
|
||||||
#include "d_main.h"
|
#include "d_main.h"
|
||||||
#include "m_menu.h"
|
#include "m_menu.h"
|
||||||
#include "filesrch.h"
|
#include "filesrch.h"
|
||||||
|
#include "m_misc.h"
|
||||||
|
|
||||||
#ifdef _WINDOWS
|
#ifdef _WINDOWS
|
||||||
#include "win32/win_main.h"
|
#include "win32/win_main.h"
|
||||||
|
@ -806,6 +807,33 @@ boolean CON_Responder(event_t *ev)
|
||||||
|| key == KEY_LALT || key == KEY_RALT)
|
|| key == KEY_LALT || key == KEY_RALT)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if (key == KEY_LEFTARROW)
|
||||||
|
{
|
||||||
|
if (input_cur != 0)
|
||||||
|
{
|
||||||
|
if (ctrldown)
|
||||||
|
input_cur = M_JumpWordReverse(inputlines[inputline], input_cur);
|
||||||
|
else
|
||||||
|
--input_cur;
|
||||||
|
}
|
||||||
|
if (!shiftdown)
|
||||||
|
input_sel = input_cur;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (key == KEY_RIGHTARROW)
|
||||||
|
{
|
||||||
|
if (input_cur < input_len)
|
||||||
|
{
|
||||||
|
if (ctrldown)
|
||||||
|
input_cur += M_JumpWord(&inputlines[inputline][input_cur]);
|
||||||
|
else
|
||||||
|
++input_cur;
|
||||||
|
}
|
||||||
|
if (!shiftdown)
|
||||||
|
input_sel = input_cur;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// ctrl modifier -- changes behavior, adds shortcuts
|
// ctrl modifier -- changes behavior, adds shortcuts
|
||||||
if (ctrldown)
|
if (ctrldown)
|
||||||
{
|
{
|
||||||
|
@ -958,23 +986,6 @@ boolean CON_Responder(event_t *ev)
|
||||||
con_scrollup--;
|
con_scrollup--;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key == KEY_LEFTARROW)
|
|
||||||
{
|
|
||||||
if (input_cur != 0)
|
|
||||||
--input_cur;
|
|
||||||
if (!shiftdown)
|
|
||||||
input_sel = input_cur;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (key == KEY_RIGHTARROW)
|
|
||||||
{
|
|
||||||
if (input_cur < input_len)
|
|
||||||
++input_cur;
|
|
||||||
if (!shiftdown)
|
|
||||||
input_sel = input_cur;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (key == KEY_HOME)
|
else if (key == KEY_HOME)
|
||||||
{
|
{
|
||||||
input_cur = 0;
|
input_cur = 0;
|
||||||
|
|
|
@ -546,6 +546,8 @@ INT32 I_GetKey(void);
|
||||||
#define PATHSEP "/"
|
#define PATHSEP "/"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define PUNCTUATION "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
|
||||||
|
|
||||||
// Compile date and time and revision.
|
// Compile date and time and revision.
|
||||||
extern const char *compdate, *comptime, *comprevision, *compbranch;
|
extern const char *compdate, *comptime, *comprevision, *compbranch;
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
#include "m_menu.h" // gametype_cons_t
|
#include "m_menu.h" // gametype_cons_t
|
||||||
#include "m_cond.h" // emblems
|
#include "m_cond.h" // emblems
|
||||||
|
#include "m_misc.h" // word jumping
|
||||||
|
|
||||||
#include "d_clisrv.h"
|
#include "d_clisrv.h"
|
||||||
|
|
||||||
|
@ -1337,9 +1338,19 @@ boolean HU_Responder(event_t *ev)
|
||||||
chat_scrolltime = 4;
|
chat_scrolltime = 4;
|
||||||
}
|
}
|
||||||
else if (c == KEY_LEFTARROW && c_input != 0 && !OLDCHAT) // i said go back
|
else if (c == KEY_LEFTARROW && c_input != 0 && !OLDCHAT) // i said go back
|
||||||
|
{
|
||||||
|
if (ctrldown)
|
||||||
|
c_input = M_JumpWordReverse(w_chat, c_input);
|
||||||
|
else
|
||||||
c_input--;
|
c_input--;
|
||||||
|
}
|
||||||
else if (c == KEY_RIGHTARROW && c_input < strlen(w_chat) && !OLDCHAT) // don't need to check for admin or w/e here since the chat won't ever contain anything if it's muted.
|
else if (c == KEY_RIGHTARROW && c_input < strlen(w_chat) && !OLDCHAT) // don't need to check for admin or w/e here since the chat won't ever contain anything if it's muted.
|
||||||
|
{
|
||||||
|
if (ctrldown)
|
||||||
|
c_input += M_JumpWord(&w_chat[c_input]);
|
||||||
|
else
|
||||||
c_input++;
|
c_input++;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
37
src/m_misc.c
37
src/m_misc.c
|
@ -2575,3 +2575,40 @@ void M_MkdirEach(const char *path, int start, int mode)
|
||||||
{
|
{
|
||||||
M_MkdirEachUntil(path, start, -1, mode);
|
M_MkdirEachUntil(path, start, -1, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int M_JumpWord(const char *line)
|
||||||
|
{
|
||||||
|
int c;
|
||||||
|
|
||||||
|
c = line[0];
|
||||||
|
|
||||||
|
if (isspace(c))
|
||||||
|
return strspn(line, " ");
|
||||||
|
else if (ispunct(c))
|
||||||
|
return strspn(line, PUNCTUATION);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (isspace(line[1]))
|
||||||
|
return 1 + strspn(&line[1], " ");
|
||||||
|
else
|
||||||
|
return strcspn(line, " "PUNCTUATION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int M_JumpWordReverse(const char *line, int offset)
|
||||||
|
{
|
||||||
|
int (*is)(int);
|
||||||
|
int c;
|
||||||
|
c = line[--offset];
|
||||||
|
if (isspace(c))
|
||||||
|
is = isspace;
|
||||||
|
else if (ispunct(c))
|
||||||
|
is = ispunct;
|
||||||
|
else
|
||||||
|
is = isalnum;
|
||||||
|
c = (*is)(line[offset]);
|
||||||
|
while (offset > 0 &&
|
||||||
|
(*is)(line[offset - 1]) == c)
|
||||||
|
offset--;
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
|
@ -101,6 +101,14 @@ boolean M_IsPathAbsolute (const char *path);
|
||||||
void M_MkdirEach (const char *path, int start, int mode);
|
void M_MkdirEach (const char *path, int start, int mode);
|
||||||
void M_MkdirEachUntil (const char *path, int start, int end, int mode);
|
void M_MkdirEachUntil (const char *path, int start, int end, int mode);
|
||||||
|
|
||||||
|
/* Return offset to the first word in a string. */
|
||||||
|
/* E.g. cursor += M_JumpWord(line + cursor); */
|
||||||
|
int M_JumpWord (const char *s);
|
||||||
|
|
||||||
|
/* Return index of the last word behind offset bytes in a string. */
|
||||||
|
/* E.g. cursor = M_JumpWordReverse(line, cursor); */
|
||||||
|
int M_JumpWordReverse (const char *line, int offset);
|
||||||
|
|
||||||
// counting bits, for weapon ammo code, usually
|
// counting bits, for weapon ammo code, usually
|
||||||
FUNCMATH UINT8 M_CountBits(UINT32 num, UINT8 size);
|
FUNCMATH UINT8 M_CountBits(UINT32 num, UINT8 size);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue