mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	InputText: update mouse drag on mouse move only & key input reposition selection bounds (better fix for #429)
This commit is contained in:
		| @@ -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(); | ||||||
|   | |||||||
| @@ -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; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user