Patch by Matt Ebb: upgraded usablitiy of text button.

Textbuttons now allow a selection too (like any textbutton in other UIs).
By default, on activating a textbutton, the entire button text is selected
when you enter the button. A single arrowkey or LMB click reveils the
cursor then. Here's more user notes:

LMB click: If inside the button, places the text cursor at the clicked
position. If outside the button, confirms/finishes editing

LMB drag: Selects the text between the start and end point of the drag.

Backspace: Deletes selected text, or backspaces a character

Shift Backspace: Deletes all, as before.

Delete: Deletes selected text or forward deletes a character

Shift LeftArrow: Extends the selection left

Shift RightArrow: Extends the selection right

LeftArrow: If there's a selection, move the cursor to the left edge of the
selection, otherwise move the cursor left a character.

RightArrow: If there's a selection, move the cursor to the right edge of
the selection, otherwise move the cursor right a character.

UpArrow/Home: Move the cursor to the beginning of the line

DownArrow/End: Move the cursor to the end of the line

Ctrl Left arrow and Ctrl Right arrow to jump between directory separators
This commit is contained in:
2005-11-20 10:04:45 +00:00
parent a86b0af575
commit 77332fa698
9 changed files with 304 additions and 58 deletions

View File

@@ -63,7 +63,11 @@
#define PNL_TABBED 8
#define PNL_OVERLAP 16
/* Button text selection:
* extension direction, selextend, inside ui_do_but_TEX */
#define EXTEND_LEFT 1
#define EXTEND_RIGHT 2
#define SELWIDTH (but->selend - but->selsta)
typedef struct {
short xim, yim;
@@ -103,7 +107,7 @@ typedef struct {
struct uiBut {
uiBut *next, *prev;
short type, pointype, bit, bitnr, retval, strwidth, ofs, pos;
short type, pointype, bit, bitnr, retval, strwidth, ofs, pos, selsta, selend;
int flag;
char *str;