|
|
|
@ -6184,12 +6184,14 @@ static void ShowDemoWindowInputs() |
|
|
|
|
// Display inputs submitted to ImGuiIO
|
|
|
|
|
IMGUI_DEMO_MARKER("Inputs & Focus/Inputs"); |
|
|
|
|
ImGui::SetNextItemOpen(true, ImGuiCond_Once); |
|
|
|
|
if (ImGui::TreeNode("Inputs")) |
|
|
|
|
bool inputs_opened = ImGui::TreeNode("Inputs"); |
|
|
|
|
ImGui::SameLine(); |
|
|
|
|
HelpMarker( |
|
|
|
|
"This is a simplified view. See more detailed input state:\n" |
|
|
|
|
"- in 'Tools->Metrics/Debugger->Inputs'.\n" |
|
|
|
|
"- in 'Tools->Debug Log->IO'."); |
|
|
|
|
if (inputs_opened) |
|
|
|
|
{ |
|
|
|
|
HelpMarker( |
|
|
|
|
"This is a simplified view. See more detailed input state:\n" |
|
|
|
|
"- in 'Tools->Metrics/Debugger->Inputs'.\n" |
|
|
|
|
"- in 'Tools->Debug Log->IO'."); |
|
|
|
|
if (ImGui::IsMousePosValid()) |
|
|
|
|
ImGui::Text("Mouse pos: (%g, %g)", io.MousePos.x, io.MousePos.y); |
|
|
|
|
else |
|
|
|
@ -6220,15 +6222,17 @@ static void ShowDemoWindowInputs() |
|
|
|
|
// Display ImGuiIO output flags
|
|
|
|
|
IMGUI_DEMO_MARKER("Inputs & Focus/Outputs"); |
|
|
|
|
ImGui::SetNextItemOpen(true, ImGuiCond_Once); |
|
|
|
|
if (ImGui::TreeNode("Outputs")) |
|
|
|
|
bool outputs_opened = ImGui::TreeNode("Outputs"); |
|
|
|
|
ImGui::SameLine(); |
|
|
|
|
HelpMarker( |
|
|
|
|
"The value of io.WantCaptureMouse and io.WantCaptureKeyboard are normally set by Dear ImGui " |
|
|
|
|
"to instruct your application of how to route inputs. Typically, when a value is true, it means " |
|
|
|
|
"Dear ImGui wants the corresponding inputs and we expect the underlying application to ignore them.\n\n" |
|
|
|
|
"The most typical case is: when hovering a window, Dear ImGui set io.WantCaptureMouse to true, " |
|
|
|
|
"and underlying application should ignore mouse inputs (in practice there are many and more subtle " |
|
|
|
|
"rules leading to how those flags are set)."); |
|
|
|
|
if (outputs_opened) |
|
|
|
|
{ |
|
|
|
|
HelpMarker( |
|
|
|
|
"The value of io.WantCaptureMouse and io.WantCaptureKeyboard are normally set by Dear ImGui " |
|
|
|
|
"to instruct your application of how to route inputs. Typically, when a value is true, it means " |
|
|
|
|
"Dear ImGui wants the corresponding inputs and we expect the underlying application to ignore them.\n\n" |
|
|
|
|
"The most typical case is: when hovering a window, Dear ImGui set io.WantCaptureMouse to true, " |
|
|
|
|
"and underlying application should ignore mouse inputs (in practice there are many and more subtle " |
|
|
|
|
"rules leading to how those flags are set)."); |
|
|
|
|
ImGui::Text("io.WantCaptureMouse: %d", io.WantCaptureMouse); |
|
|
|
|
ImGui::Text("io.WantCaptureMouseUnlessPopupClose: %d", io.WantCaptureMouseUnlessPopupClose); |
|
|
|
|
ImGui::Text("io.WantCaptureKeyboard: %d", io.WantCaptureKeyboard); |
|
|
|
@ -6275,14 +6279,6 @@ static void ShowDemoWindowInputs() |
|
|
|
|
IMGUI_DEMO_MARKER("Inputs & Focus/Shortcuts"); |
|
|
|
|
if (ImGui::TreeNode("Shortcuts")) |
|
|
|
|
{ |
|
|
|
|
ImGui::SeparatorText("Using SetNextItemShortcut()"); |
|
|
|
|
ImGui::SetNextItemShortcut(ImGuiMod_Ctrl | ImGuiKey_S); |
|
|
|
|
ImGui::Button("Save"); |
|
|
|
|
ImGui::SetItemTooltip("Ctrl+S"); // FIXME: Tooltip could be automatically submitted by SetNextItemShortcut
|
|
|
|
|
|
|
|
|
|
ImGui::SeparatorText("Using Shortcut()"); |
|
|
|
|
const float line_height = ImGui::GetTextLineHeightWithSpacing(); |
|
|
|
|
const ImGuiKeyChord key_chord = ImGuiMod_Ctrl | ImGuiKey_A; |
|
|
|
|
static ImGuiInputFlags other_flags = ImGuiInputFlags_Repeat; |
|
|
|
|
static ImGuiInputFlags routing_flags = ImGuiInputFlags_RouteFocused; |
|
|
|
|
ImGui::CheckboxFlags("ImGuiInputFlags_Repeat", &other_flags, ImGuiInputFlags_Repeat); |
|
|
|
@ -6294,8 +6290,24 @@ static void ShowDemoWindowInputs() |
|
|
|
|
ImGui::CheckboxFlags("ImGuiInputFlags_RouteUnlessBgFocused", &other_flags, ImGuiInputFlags_RouteUnlessBgFocused); |
|
|
|
|
const ImGuiInputFlags flags = other_flags | routing_flags; // Merged flags
|
|
|
|
|
|
|
|
|
|
ImGui::SeparatorText("Using SetNextItemShortcut()"); |
|
|
|
|
ImGui::Text("Ctrl+S"); |
|
|
|
|
ImGui::SetNextItemShortcut(ImGuiMod_Ctrl | ImGuiKey_S, flags | ImGuiInputFlags_Tooltip); |
|
|
|
|
ImGui::Button("Save"); |
|
|
|
|
ImGui::Text("Alt+F"); |
|
|
|
|
ImGui::SetNextItemShortcut(ImGuiMod_Alt | ImGuiKey_F, flags | ImGuiInputFlags_Tooltip); |
|
|
|
|
static float f = 0.5f; |
|
|
|
|
ImGui::SliderFloat("Factor", &f, 0.0f, 1.0f); |
|
|
|
|
|
|
|
|
|
ImGui::SeparatorText("Using Shortcut()"); |
|
|
|
|
const float line_height = ImGui::GetTextLineHeightWithSpacing(); |
|
|
|
|
const ImGuiKeyChord key_chord = ImGuiMod_Ctrl | ImGuiKey_A; |
|
|
|
|
|
|
|
|
|
ImGui::Text("Ctrl+A"); |
|
|
|
|
ImGui::Text("IsWindowFocused: %d, Shortcut: %s", ImGui::IsWindowFocused(), ImGui::Shortcut(key_chord, flags) ? "PRESSED" : "..."); |
|
|
|
|
|
|
|
|
|
ImGui::PushStyleColor(ImGuiCol_ChildBg, ImVec4(1.0f, 0.0f, 1.0f, 0.1f)); |
|
|
|
|
|
|
|
|
|
ImGui::BeginChild("WindowA", ImVec2(-FLT_MIN, line_height * 14), true); |
|
|
|
|
ImGui::Text("Press CTRL+A and see who receives it!"); |
|
|
|
|
ImGui::Separator(); |
|
|
|
@ -6338,6 +6350,7 @@ static void ShowDemoWindowInputs() |
|
|
|
|
ImGui::EndPopup(); |
|
|
|
|
} |
|
|
|
|
ImGui::EndChild(); |
|
|
|
|
ImGui::PopStyleColor(); |
|
|
|
|
|
|
|
|
|
ImGui::TreePop(); |
|
|
|
|
} |
|
|
|
|