WIP: UI: Text cursor behavior for Apple Devices #106724

Closed
Austin Berenyi wants to merge 3 commits from (deleted):ui-macos-text-field-behavior into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
1 changed files with 41 additions and 33 deletions

View File

@ -3754,21 +3754,21 @@ static void ui_do_but_textedit(
}
break;
case EVT_RIGHTARROWKEY:
ui_textedit_move(but,
data,
STRCUR_DIR_NEXT,
event->modifier & KM_SHIFT,
(event->modifier & KM_CTRL) ? STRCUR_JUMP_DELIM : STRCUR_JUMP_NONE);
retval = WM_UI_HANDLER_BREAK;
break;
case EVT_LEFTARROWKEY:
ui_textedit_move(but,
data,
STRCUR_DIR_PREV,
event->modifier & KM_SHIFT,
(event->modifier & KM_CTRL) ? STRCUR_JUMP_DELIM : STRCUR_JUMP_NONE);
retval = WM_UI_HANDLER_BREAK;
break;
case EVT_LEFTARROWKEY: {
#ifdef __APPLE__
eStrCursorJumpDirection direction = (event->type == EVT_RIGHTARROWKEY) ? STRCUR_DIR_NEXT : STRCUR_DIR_PREV;
eStrCursorJumpType jump = (event->modifier & KM_OSKEY) ? STRCUR_JUMP_ALL : ((event->modifier & KM_ALT) ? STRCUR_JUMP_DELIM : STRCUR_JUMP_NONE);
#else
eStrCursorJumpType jump = (event->modifier & KM_CTRL) ? STRCUR_JUMP_DELIM : STRCUR_JUMP_NONE;
#endif
ui_textedit_move(but,
data,
direction,
event->modifier & KM_SHIFT,
jump);
retval = WM_UI_HANDLER_BREAK;
break;
}
case WHEELDOWNMOUSE:
case EVT_DOWNARROWKEY:
if (data->searchbox) {
@ -3808,24 +3808,32 @@ static void ui_do_but_textedit(
button_activate_state(C, but, BUTTON_STATE_EXIT);
retval = WM_UI_HANDLER_BREAK;
break;
case EVT_DELKEY:
changed = ui_textedit_delete(but,
data,
STRCUR_DIR_NEXT,
(event->modifier & KM_CTRL) ? STRCUR_JUMP_DELIM :
STRCUR_JUMP_NONE);
retval = WM_UI_HANDLER_BREAK;
break;
case EVT_BACKSPACEKEY:
changed = ui_textedit_delete(but,
data,
STRCUR_DIR_PREV,
(event->modifier & KM_CTRL) ? STRCUR_JUMP_DELIM :
STRCUR_JUMP_NONE);
retval = WM_UI_HANDLER_BREAK;
break;
case EVT_DELKEY: {
#ifdef __APPLE__
eStrCursorJumpType jump = (event->modifier & KM_OSKEY) ? STRCUR_JUMP_ALL : ((event->modifier & KM_ALT) ? STRCUR_JUMP_DELIM : STRCUR_JUMP_NONE);
#else
eStrCursorJumpType jump = (event->modifier & KM_CTRL) ? STRCUR_JUMP_DELIM : STRCUR_JUMP_NONE;
#endif
changed = ui_textedit_delete(but,
data,
STRCUR_DIR_NEXT,
jump);
retval = WM_UI_HANDLER_BREAK;
break;
}
case EVT_BACKSPACEKEY: {
#ifdef __APPLE__
eStrCursorJumpType jump = (event->modifier & KM_OSKEY) ? STRCUR_JUMP_ALL : ((event->modifier & KM_ALT) ? STRCUR_JUMP_DELIM : STRCUR_JUMP_NONE);
#else
eStrCursorJumpType jump = (event->modifier & KM_CTRL) ? STRCUR_JUMP_DELIM : STRCUR_JUMP_NONE;
#endif
changed = ui_textedit_delete(but,
data,
STRCUR_DIR_PREV,
jump);
retval = WM_UI_HANDLER_BREAK;
break;
}
case EVT_AKEY:
/* Ctrl-A: Select all. */