| 3725 | return ((prev_white || prev_separ) && !(curr_separ || curr_white)) || (curr_separ && !prev_separ); |
| 3726 | } |
| 3727 | static int is_word_boundary_from_left(ImGuiInputTextState* obj, int idx) |
| 3728 | { |
| 3729 | if ((obj->Flags & ImGuiInputTextFlags_Password) || idx <= 0) |
| 3730 | return 0; |
| 3731 | |
| 3732 | bool prev_white = ImCharIsBlankW(obj->TextW[idx]); |
| 3733 | bool prev_separ = is_separator(obj->TextW[idx]); |
| 3734 | bool curr_white = ImCharIsBlankW(obj->TextW[idx - 1]); |
| 3735 | bool curr_separ = is_separator(obj->TextW[idx - 1]); |
| 3736 | return ((prev_white) && !(curr_separ || curr_white)) || (curr_separ && !prev_separ); |
| 3737 | } |
| 3738 | static int STB_TEXTEDIT_MOVEWORDLEFT_IMPL(ImGuiInputTextState* obj, int idx) { idx--; while (idx >= 0 && !is_word_boundary_from_right(obj, idx)) idx--; return idx < 0 ? 0 : idx; } |
| 3739 | static int STB_TEXTEDIT_MOVEWORDRIGHT_MAC(ImGuiInputTextState* obj, int idx) { idx++; int len = obj->CurLenW; while (idx < len && !is_word_boundary_from_left(obj, idx)) idx++; return idx > len ? len : idx; } |
| 3740 | static int STB_TEXTEDIT_MOVEWORDRIGHT_WIN(ImGuiInputTextState* obj, int idx) { idx++; int len = obj->CurLenW; while (idx < len && !is_word_boundary_from_right(obj, idx)) idx++; return idx > len ? len : idx; } |
no test coverage detected