mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-22 03:47:00 +00:00
InputTextMultiline: Tabbing through a multi-line text editor using ImGuiInputTextFlags_AllowTabInput doesn't activate it. (#3092, #5759, #787)
This commit is contained in:
parent
54c1bdeceb
commit
6cfe3ddf52
@ -65,6 +65,9 @@ Other changes:
|
|||||||
(namely Selectables and Treenodes using SpanAllColumn flag) so the highlight properly covers
|
(namely Selectables and Treenodes using SpanAllColumn flag) so the highlight properly covers
|
||||||
all columns. (#7049, #4281, #3272)
|
all columns. (#7049, #4281, #3272)
|
||||||
- InputTextMultiline: Fixed Tab character input not repeating (1.89.4 regression).
|
- InputTextMultiline: Fixed Tab character input not repeating (1.89.4 regression).
|
||||||
|
- InputTextMultiline: Tabbing through a multi-line text editor which allows Tab character inputs
|
||||||
|
(using the ImGuiInputTextFlags_AllowTabInput flag) doesn't automatically activate it, in order
|
||||||
|
to allow passing through multiple widgets easily. (#3092, #5759, #787)
|
||||||
- DragScalarN, SliderScalarN, InputScalarN, PushMultiItemsWidths: improve multi-components
|
- DragScalarN, SliderScalarN, InputScalarN, PushMultiItemsWidths: improve multi-components
|
||||||
width computation to better distribute the error. (#7120, #7121) [@Nahor]
|
width computation to better distribute the error. (#7120, #7121) [@Nahor]
|
||||||
- Menus: Tweaked hover slack logic, adding a timer to avoid situations where a slow vertical
|
- Menus: Tweaked hover slack logic, adding a timer to avoid situations where a slow vertical
|
||||||
|
@ -12034,7 +12034,7 @@ void ImGui::NavMoveRequestApplyResult()
|
|||||||
g.NavNextActivateId = result->ID;
|
g.NavNextActivateId = result->ID;
|
||||||
g.NavNextActivateFlags = ImGuiActivateFlags_None;
|
g.NavNextActivateFlags = ImGuiActivateFlags_None;
|
||||||
if (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing)
|
if (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing)
|
||||||
g.NavNextActivateFlags |= ImGuiActivateFlags_PreferInput | ImGuiActivateFlags_TryToPreserveState;
|
g.NavNextActivateFlags |= ImGuiActivateFlags_PreferInput | ImGuiActivateFlags_TryToPreserveState | ImGuiActivateFlags_FromTabbing;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable nav highlight
|
// Enable nav highlight
|
||||||
|
@ -1479,6 +1479,7 @@ static void ShowDemoWindowWidgets()
|
|||||||
HelpMarker("You can use the ImGuiInputTextFlags_CallbackResize facility if you need to wire InputTextMultiline() to a dynamic string type. See misc/cpp/imgui_stdlib.h for an example. (This is not demonstrated in imgui_demo.cpp because we don't want to include <string> in here)");
|
HelpMarker("You can use the ImGuiInputTextFlags_CallbackResize facility if you need to wire InputTextMultiline() to a dynamic string type. See misc/cpp/imgui_stdlib.h for an example. (This is not demonstrated in imgui_demo.cpp because we don't want to include <string> in here)");
|
||||||
ImGui::CheckboxFlags("ImGuiInputTextFlags_ReadOnly", &flags, ImGuiInputTextFlags_ReadOnly);
|
ImGui::CheckboxFlags("ImGuiInputTextFlags_ReadOnly", &flags, ImGuiInputTextFlags_ReadOnly);
|
||||||
ImGui::CheckboxFlags("ImGuiInputTextFlags_AllowTabInput", &flags, ImGuiInputTextFlags_AllowTabInput);
|
ImGui::CheckboxFlags("ImGuiInputTextFlags_AllowTabInput", &flags, ImGuiInputTextFlags_AllowTabInput);
|
||||||
|
ImGui::SameLine(); HelpMarker("When _AllowTabInput is set, passing through the widget with Tabbing doesn't automatically activate it, in order to also cycling through subsequent widgets.");
|
||||||
ImGui::CheckboxFlags("ImGuiInputTextFlags_CtrlEnterForNewLine", &flags, ImGuiInputTextFlags_CtrlEnterForNewLine);
|
ImGui::CheckboxFlags("ImGuiInputTextFlags_CtrlEnterForNewLine", &flags, ImGuiInputTextFlags_CtrlEnterForNewLine);
|
||||||
ImGui::InputTextMultiline("##source", text, IM_ARRAYSIZE(text), ImVec2(-FLT_MIN, ImGui::GetTextLineHeight() * 16), flags);
|
ImGui::InputTextMultiline("##source", text, IM_ARRAYSIZE(text), ImVec2(-FLT_MIN, ImGui::GetTextLineHeight() * 16), flags);
|
||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
|
@ -1488,6 +1488,7 @@ enum ImGuiActivateFlags_
|
|||||||
ImGuiActivateFlags_PreferInput = 1 << 0, // Favor activation that requires keyboard text input (e.g. for Slider/Drag). Default for Enter key.
|
ImGuiActivateFlags_PreferInput = 1 << 0, // Favor activation that requires keyboard text input (e.g. for Slider/Drag). Default for Enter key.
|
||||||
ImGuiActivateFlags_PreferTweak = 1 << 1, // Favor activation for tweaking with arrows or gamepad (e.g. for Slider/Drag). Default for Space key and if keyboard is not used.
|
ImGuiActivateFlags_PreferTweak = 1 << 1, // Favor activation for tweaking with arrows or gamepad (e.g. for Slider/Drag). Default for Space key and if keyboard is not used.
|
||||||
ImGuiActivateFlags_TryToPreserveState = 1 << 2, // Request widget to preserve state if it can (e.g. InputText will try to preserve cursor/selection)
|
ImGuiActivateFlags_TryToPreserveState = 1 << 2, // Request widget to preserve state if it can (e.g. InputText will try to preserve cursor/selection)
|
||||||
|
ImGuiActivateFlags_FromTabbing = 1 << 3, // Activation requested by a tabbing request
|
||||||
};
|
};
|
||||||
|
|
||||||
// Early work-in-progress API for ScrollToItem()
|
// Early work-in-progress API for ScrollToItem()
|
||||||
|
@ -4126,7 +4126,11 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
|
|||||||
item_data_backup = g.LastItemData;
|
item_data_backup = g.LastItemData;
|
||||||
window->DC.CursorPos = backup_pos;
|
window->DC.CursorPos = backup_pos;
|
||||||
|
|
||||||
// Prevent NavActivate reactivating in BeginChild().
|
// Prevent NavActivation from Tabbing when our widget accepts Tab inputs: this allows cycling through widgets without stopping.
|
||||||
|
if (g.NavActivateId == id && (g.NavActivateFlags & ImGuiActivateFlags_FromTabbing) && (flags & ImGuiInputTextFlags_AllowTabInput))
|
||||||
|
g.NavActivateId = 0;
|
||||||
|
|
||||||
|
// Prevent NavActivate reactivating in BeginChild() when we are already active.
|
||||||
const ImGuiID backup_activate_id = g.NavActivateId;
|
const ImGuiID backup_activate_id = g.NavActivateId;
|
||||||
if (g.ActiveId == id) // Prevent reactivation
|
if (g.ActiveId == id) // Prevent reactivation
|
||||||
g.NavActivateId = 0;
|
g.NavActivateId = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user