InputText: update mouse drag on mouse move only & key input reposition selection bounds (better fix for #429)

This commit is contained in:
ocornut 2015-12-11 22:37:47 +00:00
parent 4bfd5cd95f
commit 6c7f8efe1e
2 changed files with 3 additions and 2 deletions

View File

@ -7046,7 +7046,6 @@ void ImGuiTextEditState::OnKeyPressed(int key)
{ {
stb_textedit_key(this, &StbState, key); stb_textedit_key(this, &StbState, key);
CursorFollow = true; CursorFollow = true;
SelectedAllMouseLock = true;
CursorAnimReset(); CursorAnimReset();
} }
@ -7310,7 +7309,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
stb_textedit_click(&edit_state, &edit_state.StbState, mouse_x, mouse_y); stb_textedit_click(&edit_state, &edit_state.StbState, mouse_x, mouse_y);
edit_state.CursorAnimReset(); edit_state.CursorAnimReset();
} }
else if (io.MouseDown[0] && !edit_state.SelectedAllMouseLock) else if (io.MouseDown[0] && !edit_state.SelectedAllMouseLock && (io.MouseDelta.x != 0.0f || io.MouseDelta.y != 0.0f))
{ {
stb_textedit_drag(&edit_state, &edit_state.StbState, mouse_x, mouse_y); stb_textedit_drag(&edit_state, &edit_state.StbState, mouse_x, mouse_y);
edit_state.CursorAnimReset(); edit_state.CursorAnimReset();

View File

@ -437,6 +437,8 @@ static void stb_textedit_click(STB_TEXTEDIT_STRING *str, STB_TexteditState *stat
static void stb_textedit_drag(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, float x, float y) static void stb_textedit_drag(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, float x, float y)
{ {
int p = stb_text_locate_coord(str, x, y); int p = stb_text_locate_coord(str, x, y);
if (state->select_start == state->select_end)
state->select_start = state->cursor;
state->cursor = state->select_end = p; state->cursor = state->select_end = p;
} }