(svn r2385) - Feature: shortcut CTRL + U that clears the commandline of the current input-box. As requested by Tron.

This commit is contained in:
Darkvater 2005-05-30 16:03:21 +00:00
parent 0cd53574ec
commit d0a0d6fcb5
3 changed files with 21 additions and 1 deletions

View File

@ -151,9 +151,13 @@ static void IConsoleWndProc(Window* w, WindowEvent* e)
SetWindowDirty(w);
}
break;
case (WKC_CTRL | 'L'):
case (WKC_CTRL | 'L'):
IConsoleCmdExec("clear");
break;
case (WKC_CTRL | 'U'):
DeleteTextBufferAll(&_iconsole_cmdline);
SetWindowDirty(w);
break;
case WKC_BACKSPACE: case WKC_DELETE:
if (DeleteTextBufferChar(&_iconsole_cmdline, e->keypress.keycode)) {
IConsoleResetHistoryPos();

1
gui.h
View File

@ -108,6 +108,7 @@ void HandleEditBox(Window *w, int wid);
int HandleEditBoxKey(Window *w, int wid, WindowEvent *we);
bool HandleCaret(Textbuf *tb);
void DeleteTextBufferAll(Textbuf *tb);
bool DeleteTextBufferChar(Textbuf *tb, int delmode);
bool InsertTextBufferChar(Textbuf *tb, byte key);
bool InsertTextBufferClipboard(Textbuf *tb);

View File

@ -783,6 +783,17 @@ bool DeleteTextBufferChar(Textbuf *tb, int delmode)
return false;
}
/**
* Delete every character in the textbuffer
* @param tb @Textbuf buffer to be emptied
*/
void DeleteTextBufferAll(Textbuf *tb)
{
memset(tb->buf, 0, tb->maxlength);
tb->length = tb->width = 0;
tb->caretpos = tb->caretxoffs = 0;
}
/**
* Insert a character to a textbuffer. If maxlength is zero, we don't care about
* the screenlength but only about the physical length of the string
@ -875,6 +886,10 @@ int HandleEditBoxKey(Window *w, int wid, WindowEvent *we)
if (InsertTextBufferClipboard(&WP(w, querystr_d).text))
InvalidateWidget(w, wid);
break;
case (WKC_CTRL | 'U'):
DeleteTextBufferAll(&WP(w, querystr_d).text);
InvalidateWidget(w, wid);
break;
case WKC_BACKSPACE: case WKC_DELETE:
if (DeleteTextBufferChar(&WP(w, querystr_d).text, we->keypress.keycode))
InvalidateWidget(w, wid);