mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 05:01:05 +01:00 
			
		
		
		
	InputTextEx: got rid of unnecessary locals.
This commit is contained in:
		
							
								
								
									
										42
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -7625,10 +7625,6 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 | |||||||
|     // NB: we are only allowed to access 'edit_state' if we are the active widget. |     // NB: we are only allowed to access 'edit_state' if we are the active widget. | ||||||
|     ImGuiTextEditState& edit_state = g.InputTextState; |     ImGuiTextEditState& edit_state = g.InputTextState; | ||||||
|  |  | ||||||
|     const bool is_ctrl_down = io.KeyCtrl; |  | ||||||
|     const bool is_shift_down = io.KeyShift; |  | ||||||
|     const bool is_alt_down = io.KeyAlt; |  | ||||||
|     const bool is_super_down = io.KeySuper; |  | ||||||
|     const bool focus_requested = FocusableItemRegister(window, g.ActiveId == id, (flags & (ImGuiInputTextFlags_CallbackCompletion|ImGuiInputTextFlags_AllowTabInput)) == 0);    // Using completion callback disable keyboard tabbing |     const bool focus_requested = FocusableItemRegister(window, g.ActiveId == id, (flags & (ImGuiInputTextFlags_CallbackCompletion|ImGuiInputTextFlags_AllowTabInput)) == 0);    // Using completion callback disable keyboard tabbing | ||||||
|     const bool focus_requested_by_code = focus_requested && (window->FocusIdxAllCounter == window->FocusIdxAllRequestCurrent); |     const bool focus_requested_by_code = focus_requested && (window->FocusIdxAllCounter == window->FocusIdxAllRequestCurrent); | ||||||
|     const bool focus_requested_by_tab = focus_requested && !focus_requested_by_code; |     const bool focus_requested_by_tab = focus_requested && !focus_requested_by_code; | ||||||
| @@ -7678,7 +7674,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 | |||||||
|             } |             } | ||||||
|             if (flags & ImGuiInputTextFlags_AlwaysInsertMode) |             if (flags & ImGuiInputTextFlags_AlwaysInsertMode) | ||||||
|                 edit_state.StbState.insert_mode = true; |                 edit_state.StbState.insert_mode = true; | ||||||
|             if (!is_multiline && (focus_requested_by_tab || (user_clicked && is_ctrl_down))) |             if (!is_multiline && (focus_requested_by_tab || (user_clicked && io.KeyCtrl))) | ||||||
|                 select_all = true; |                 select_all = true; | ||||||
|         } |         } | ||||||
|         SetActiveID(id, window); |         SetActiveID(id, window); | ||||||
| @@ -7746,7 +7742,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 | |||||||
|         { |         { | ||||||
|             // Process text input (before we check for Return because using some IME will effectively send a Return?) |             // Process text input (before we check for Return because using some IME will effectively send a Return?) | ||||||
|             // We ignore CTRL inputs, but need to allow CTRL+ALT as some keyboards (e.g. German) use AltGR - which is Alt+Ctrl - to input certain characters. |             // We ignore CTRL inputs, but need to allow CTRL+ALT as some keyboards (e.g. German) use AltGR - which is Alt+Ctrl - to input certain characters. | ||||||
|             if (!(is_ctrl_down && !is_alt_down) && is_editable) |             if (!(io.KeyCtrl && !io.KeyAlt) && is_editable) | ||||||
|             { |             { | ||||||
|                 for (int n = 0; n < IM_ARRAYSIZE(io.InputCharacters) && io.InputCharacters[n]; n++) |                 for (int n = 0; n < IM_ARRAYSIZE(io.InputCharacters) && io.InputCharacters[n]; n++) | ||||||
|                     if (unsigned int c = (unsigned int)io.InputCharacters[n]) |                     if (unsigned int c = (unsigned int)io.InputCharacters[n]) | ||||||
| @@ -7764,31 +7760,31 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 | |||||||
|  |  | ||||||
|         // Handle various key-presses |         // Handle various key-presses | ||||||
|         bool cancel_edit = false; |         bool cancel_edit = false; | ||||||
|         const int k_mask = (is_shift_down ? STB_TEXTEDIT_K_SHIFT : 0); |         const int k_mask = (io.KeyShift ? STB_TEXTEDIT_K_SHIFT : 0); | ||||||
|         const bool is_shortcutkey_only = (io.OSXBehaviors ? (is_super_down && !is_ctrl_down) : (is_ctrl_down && !is_super_down)) && !is_alt_down && !is_shift_down; // OS X style: Shortcuts using Cmd/Super instead of Ctrl |         const bool is_shortcut_key_only = (io.OSXBehaviors ? (io.KeySuper && !io.KeyCtrl) : (io.KeyCtrl && !io.KeySuper)) && !io.KeyAlt && !io.KeyShift; // OS X style: Shortcuts using Cmd/Super instead of Ctrl | ||||||
|         const bool is_wordmove_key_down = io.OSXBehaviors ? is_alt_down : is_ctrl_down;                         // OS X style: Text editing cursor movement using Alt instead of Ctrl |         const bool is_wordmove_key_down = io.OSXBehaviors ? io.KeyAlt : io.KeyCtrl;                     // OS X style: Text editing cursor movement using Alt instead of Ctrl | ||||||
|         const bool is_startend_key_down = io.OSXBehaviors && is_super_down && !is_ctrl_down && !is_alt_down;    // OS X style: Line/Text Start and End using Cmd+Arrows instead of Home/End |         const bool is_startend_key_down = io.OSXBehaviors && io.KeySuper && !io.KeyCtrl && !io.KeyAlt;  // OS X style: Line/Text Start and End using Cmd+Arrows instead of Home/End | ||||||
|  |  | ||||||
|         if (IsKeyPressedMap(ImGuiKey_LeftArrow))                        { edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_LINESTART : is_wordmove_key_down ? STB_TEXTEDIT_K_WORDLEFT : STB_TEXTEDIT_K_LEFT) | k_mask); } |         if (IsKeyPressedMap(ImGuiKey_LeftArrow))                        { edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_LINESTART : is_wordmove_key_down ? STB_TEXTEDIT_K_WORDLEFT : STB_TEXTEDIT_K_LEFT) | k_mask); } | ||||||
|         else if (IsKeyPressedMap(ImGuiKey_RightArrow))                  { edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_LINEEND : is_wordmove_key_down ? STB_TEXTEDIT_K_WORDRIGHT : STB_TEXTEDIT_K_RIGHT) | k_mask); } |         else if (IsKeyPressedMap(ImGuiKey_RightArrow))                  { edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_LINEEND : is_wordmove_key_down ? STB_TEXTEDIT_K_WORDRIGHT : STB_TEXTEDIT_K_RIGHT) | k_mask); } | ||||||
|         else if (IsKeyPressedMap(ImGuiKey_UpArrow) && is_multiline)     { if (is_ctrl_down) SetWindowScrollY(draw_window, ImMax(draw_window->Scroll.y - g.FontSize, 0.0f)); else edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_TEXTSTART : STB_TEXTEDIT_K_UP) | k_mask); } |         else if (IsKeyPressedMap(ImGuiKey_UpArrow) && is_multiline)     { if (io.KeyCtrl) SetWindowScrollY(draw_window, ImMax(draw_window->Scroll.y - g.FontSize, 0.0f)); else edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_TEXTSTART : STB_TEXTEDIT_K_UP) | k_mask); } | ||||||
|         else if (IsKeyPressedMap(ImGuiKey_DownArrow) && is_multiline)   { if (is_ctrl_down) SetWindowScrollY(draw_window, ImMin(draw_window->Scroll.y + g.FontSize, GetScrollMaxY())); else edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_TEXTEND : STB_TEXTEDIT_K_DOWN) | k_mask); } |         else if (IsKeyPressedMap(ImGuiKey_DownArrow) && is_multiline)   { if (io.KeyCtrl) SetWindowScrollY(draw_window, ImMin(draw_window->Scroll.y + g.FontSize, GetScrollMaxY())); else edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_TEXTEND : STB_TEXTEDIT_K_DOWN) | k_mask); } | ||||||
|         else if (IsKeyPressedMap(ImGuiKey_Home))                        { edit_state.OnKeyPressed(is_ctrl_down ? STB_TEXTEDIT_K_TEXTSTART | k_mask : STB_TEXTEDIT_K_LINESTART | k_mask); } |         else if (IsKeyPressedMap(ImGuiKey_Home))                        { edit_state.OnKeyPressed(io.KeyCtrl ? STB_TEXTEDIT_K_TEXTSTART | k_mask : STB_TEXTEDIT_K_LINESTART | k_mask); } | ||||||
|         else if (IsKeyPressedMap(ImGuiKey_End))                         { edit_state.OnKeyPressed(is_ctrl_down ? STB_TEXTEDIT_K_TEXTEND | k_mask : STB_TEXTEDIT_K_LINEEND | k_mask); } |         else if (IsKeyPressedMap(ImGuiKey_End))                         { edit_state.OnKeyPressed(io.KeyCtrl ? STB_TEXTEDIT_K_TEXTEND | k_mask : STB_TEXTEDIT_K_LINEEND | k_mask); } | ||||||
|         else if (IsKeyPressedMap(ImGuiKey_Delete) && is_editable)       { edit_state.OnKeyPressed(STB_TEXTEDIT_K_DELETE | k_mask); } |         else if (IsKeyPressedMap(ImGuiKey_Delete) && is_editable)       { edit_state.OnKeyPressed(STB_TEXTEDIT_K_DELETE | k_mask); } | ||||||
|         else if (IsKeyPressedMap(ImGuiKey_Backspace) && is_editable) |         else if (IsKeyPressedMap(ImGuiKey_Backspace) && is_editable) | ||||||
|         { |         { | ||||||
|             if (!edit_state.HasSelection()) |             if (!edit_state.HasSelection()) | ||||||
|             { |             { | ||||||
|                 if (is_wordmove_key_down) edit_state.OnKeyPressed(STB_TEXTEDIT_K_WORDLEFT|STB_TEXTEDIT_K_SHIFT); |                 if (is_wordmove_key_down) edit_state.OnKeyPressed(STB_TEXTEDIT_K_WORDLEFT|STB_TEXTEDIT_K_SHIFT); | ||||||
|                 else if (io.OSXBehaviors && is_super_down && !is_alt_down && !is_ctrl_down) edit_state.OnKeyPressed(STB_TEXTEDIT_K_LINESTART|STB_TEXTEDIT_K_SHIFT); |                 else if (io.OSXBehaviors && io.KeySuper && !io.KeyAlt && !io.KeyCtrl) edit_state.OnKeyPressed(STB_TEXTEDIT_K_LINESTART|STB_TEXTEDIT_K_SHIFT); | ||||||
|             } |             } | ||||||
|             edit_state.OnKeyPressed(STB_TEXTEDIT_K_BACKSPACE | k_mask); |             edit_state.OnKeyPressed(STB_TEXTEDIT_K_BACKSPACE | k_mask); | ||||||
|         } |         } | ||||||
|         else if (IsKeyPressedMap(ImGuiKey_Enter)) |         else if (IsKeyPressedMap(ImGuiKey_Enter)) | ||||||
|         { |         { | ||||||
|             bool ctrl_enter_for_new_line = (flags & ImGuiInputTextFlags_CtrlEnterForNewLine) != 0; |             bool ctrl_enter_for_new_line = (flags & ImGuiInputTextFlags_CtrlEnterForNewLine) != 0; | ||||||
|             if (!is_multiline || (ctrl_enter_for_new_line && !is_ctrl_down) || (!ctrl_enter_for_new_line && is_ctrl_down)) |             if (!is_multiline || (ctrl_enter_for_new_line && !io.KeyCtrl) || (!ctrl_enter_for_new_line && io.KeyCtrl)) | ||||||
|             { |             { | ||||||
|                 SetActiveID(0); |                 SetActiveID(0); | ||||||
|                 enter_pressed = true; |                 enter_pressed = true; | ||||||
| @@ -7800,17 +7796,17 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 | |||||||
|                     edit_state.OnKeyPressed((int)c); |                     edit_state.OnKeyPressed((int)c); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         else if ((flags & ImGuiInputTextFlags_AllowTabInput) && IsKeyPressedMap(ImGuiKey_Tab) && !is_ctrl_down && !is_shift_down && !is_alt_down && is_editable) |         else if ((flags & ImGuiInputTextFlags_AllowTabInput) && IsKeyPressedMap(ImGuiKey_Tab) && !io.KeyCtrl && !io.KeyShift && !io.KeyAlt && is_editable) | ||||||
|         { |         { | ||||||
|             unsigned int c = '\t'; // Insert TAB |             unsigned int c = '\t'; // Insert TAB | ||||||
|             if (InputTextFilterCharacter(&c, flags, callback, user_data)) |             if (InputTextFilterCharacter(&c, flags, callback, user_data)) | ||||||
|                 edit_state.OnKeyPressed((int)c); |                 edit_state.OnKeyPressed((int)c); | ||||||
|         } |         } | ||||||
|         else if (IsKeyPressedMap(ImGuiKey_Escape))                                     { SetActiveID(0); cancel_edit = true; } |         else if (IsKeyPressedMap(ImGuiKey_Escape))                                     { SetActiveID(0); cancel_edit = true; } | ||||||
|         else if (is_shortcutkey_only && IsKeyPressedMap(ImGuiKey_Z) && is_editable)    { edit_state.OnKeyPressed(STB_TEXTEDIT_K_UNDO); edit_state.ClearSelection(); } |         else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Z) && is_editable)   { edit_state.OnKeyPressed(STB_TEXTEDIT_K_UNDO); edit_state.ClearSelection(); } | ||||||
|         else if (is_shortcutkey_only && IsKeyPressedMap(ImGuiKey_Y) && is_editable)    { edit_state.OnKeyPressed(STB_TEXTEDIT_K_REDO); edit_state.ClearSelection(); } |         else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Y) && is_editable)   { edit_state.OnKeyPressed(STB_TEXTEDIT_K_REDO); edit_state.ClearSelection(); } | ||||||
|         else if (is_shortcutkey_only && IsKeyPressedMap(ImGuiKey_A))                   { edit_state.SelectAll(); edit_state.CursorFollow = true; } |         else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_A))                  { edit_state.SelectAll(); edit_state.CursorFollow = true; } | ||||||
|         else if (is_shortcutkey_only && !is_password && ((IsKeyPressedMap(ImGuiKey_X) && is_editable) || IsKeyPressedMap(ImGuiKey_C)) && (!is_multiline || edit_state.HasSelection())) |         else if (is_shortcut_key_only && !is_password && ((IsKeyPressedMap(ImGuiKey_X) && is_editable) || IsKeyPressedMap(ImGuiKey_C)) && (!is_multiline || edit_state.HasSelection())) | ||||||
|         { |         { | ||||||
|             // Cut, Copy |             // Cut, Copy | ||||||
|             const bool cut = IsKeyPressedMap(ImGuiKey_X); |             const bool cut = IsKeyPressedMap(ImGuiKey_X); | ||||||
| @@ -7832,12 +7828,12 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 | |||||||
|                 stb_textedit_cut(&edit_state, &edit_state.StbState); |                 stb_textedit_cut(&edit_state, &edit_state.StbState); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         else if (is_shortcutkey_only && IsKeyPressedMap(ImGuiKey_V) && is_editable) |         else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_V) && is_editable) | ||||||
|         { |         { | ||||||
|             // Paste |             // Paste | ||||||
|             if (const char* clipboard = io.GetClipboardTextFn ? io.GetClipboardTextFn() : NULL) |             if (const char* clipboard = io.GetClipboardTextFn ? io.GetClipboardTextFn() : NULL) | ||||||
|             { |             { | ||||||
|                 // Remove new-line from pasted buffer |                 // Filter pasted buffer | ||||||
|                 const int clipboard_len = (int)strlen(clipboard); |                 const int clipboard_len = (int)strlen(clipboard); | ||||||
|                 ImWchar* clipboard_filtered = (ImWchar*)ImGui::MemAlloc((clipboard_len+1) * sizeof(ImWchar)); |                 ImWchar* clipboard_filtered = (ImWchar*)ImGui::MemAlloc((clipboard_len+1) * sizeof(ImWchar)); | ||||||
|                 int clipboard_filtered_len = 0; |                 int clipboard_filtered_len = 0; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user