mirror of
https://github.com/ocornut/imgui.git
synced 2024-12-01 10:47:24 +01:00
Nav: Sets io.WantCaptureKeyboard when navigation is active. This is a little agressive but probably the best default and also a good way to get feedback. Added ImGuiNavFlags_NoCaptureKeyboard to disable this behavior. Comments. (#787)
This commit is contained in:
parent
348c46d21e
commit
92ee6b1185
@ -3347,7 +3347,7 @@ void ImGui::NewFrame()
|
|||||||
g.ModalWindowDarkeningRatio = 0.0f;
|
g.ModalWindowDarkeningRatio = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the WantCaptureMouse/WantCAptureKeyboard flags, so user can capture/discard the inputs away from the rest of their application.
|
// Update the WantCaptureMouse/WantCaptureKeyboard flags, so user can capture/discard the inputs away from the rest of their application.
|
||||||
// When clicking outside of a window we assume the click is owned by the application and won't request capture. We need to track click ownership.
|
// When clicking outside of a window we assume the click is owned by the application and won't request capture. We need to track click ownership.
|
||||||
int mouse_earliest_button_down = -1;
|
int mouse_earliest_button_down = -1;
|
||||||
bool mouse_any_down = false;
|
bool mouse_any_down = false;
|
||||||
@ -3365,10 +3365,14 @@ void ImGui::NewFrame()
|
|||||||
g.IO.WantCaptureMouse = (g.WantCaptureMouseNextFrame != 0);
|
g.IO.WantCaptureMouse = (g.WantCaptureMouseNextFrame != 0);
|
||||||
else
|
else
|
||||||
g.IO.WantCaptureMouse = (mouse_avail_to_imgui && (g.HoveredWindow != NULL || mouse_any_down)) || (!g.OpenPopupStack.empty());
|
g.IO.WantCaptureMouse = (mouse_avail_to_imgui && (g.HoveredWindow != NULL || mouse_any_down)) || (!g.OpenPopupStack.empty());
|
||||||
|
|
||||||
if (g.WantCaptureKeyboardNextFrame != -1)
|
if (g.WantCaptureKeyboardNextFrame != -1)
|
||||||
g.IO.WantCaptureKeyboard = (g.WantCaptureKeyboardNextFrame != 0);
|
g.IO.WantCaptureKeyboard = (g.WantCaptureKeyboardNextFrame != 0);
|
||||||
else
|
else
|
||||||
g.IO.WantCaptureKeyboard = (g.ActiveId != 0) || (modal_window != NULL);
|
g.IO.WantCaptureKeyboard = (g.ActiveId != 0) || (modal_window != NULL);
|
||||||
|
if (g.IO.NavActive && (g.IO.NavFlags & ImGuiNavFlags_EnableKeyboard) && !(g.IO.NavFlags & ImGuiNavFlags_NoCaptureKeyboard))
|
||||||
|
g.IO.WantCaptureKeyboard = true;
|
||||||
|
|
||||||
g.IO.WantTextInput = (g.WantTextInputNextFrame != -1) ? (g.WantTextInputNextFrame != 0) : 0;
|
g.IO.WantTextInput = (g.WantTextInputNextFrame != -1) ? (g.WantTextInputNextFrame != 0) : 0;
|
||||||
g.MouseCursor = ImGuiMouseCursor_Arrow;
|
g.MouseCursor = ImGuiMouseCursor_Arrow;
|
||||||
g.WantCaptureMouseNextFrame = g.WantCaptureKeyboardNextFrame = g.WantTextInputNextFrame = -1;
|
g.WantCaptureMouseNextFrame = g.WantCaptureKeyboardNextFrame = g.WantTextInputNextFrame = -1;
|
||||||
|
6
imgui.h
6
imgui.h
@ -726,7 +726,8 @@ enum ImGuiNavInput_
|
|||||||
ImGuiNavInput_PadTweakSlow, // slower tweaks // e.g. L-trigger, analog
|
ImGuiNavInput_PadTweakSlow, // slower tweaks // e.g. L-trigger, analog
|
||||||
ImGuiNavInput_PadTweakFast, // faster tweaks // e.g. R-trigger, analog
|
ImGuiNavInput_PadTweakFast, // faster tweaks // e.g. R-trigger, analog
|
||||||
// Keyboard Mapping
|
// Keyboard Mapping
|
||||||
// [BETA] You can map keyboard keys on the gamepad mapping for most inputs. Will add specialized keyboard mappings as we add features.
|
// [BETA] To use keyboard control you currently need to map keys to those gamepad inputs: PadActivate (Enter), PadCancel (Escape), PadInput (Enter).
|
||||||
|
// Will add specialized keyboard mappings as we add features and clarify the input interface.
|
||||||
ImGuiNavInput_KeyMenu, // toggle menu // e.g. ALT
|
ImGuiNavInput_KeyMenu, // toggle menu // e.g. ALT
|
||||||
ImGuiNavInput_KeyLeft, // move left // e.g. Arrow keys
|
ImGuiNavInput_KeyLeft, // move left // e.g. Arrow keys
|
||||||
ImGuiNavInput_KeyRight, // move right
|
ImGuiNavInput_KeyRight, // move right
|
||||||
@ -740,7 +741,8 @@ enum ImGuiNavFlags_
|
|||||||
{
|
{
|
||||||
ImGuiNavFlags_EnableGamepad = 1 << 0, // Master gamepad navigation enable flag. This is mostly to instruct your imgui binding whether to fill in gamepad navigation inputs.
|
ImGuiNavFlags_EnableGamepad = 1 << 0, // Master gamepad navigation enable flag. This is mostly to instruct your imgui binding whether to fill in gamepad navigation inputs.
|
||||||
ImGuiNavFlags_EnableKeyboard = 1 << 1, // Master keyboard navigation enable flag. This is mostly to instruct your imgui binding whether to fill in keyboard navigation inputs.
|
ImGuiNavFlags_EnableKeyboard = 1 << 1, // Master keyboard navigation enable flag. This is mostly to instruct your imgui binding whether to fill in keyboard navigation inputs.
|
||||||
ImGuiNavFlags_MoveMouse = 1 << 2 // Request navigation to allow move the mouse cursor. May be useful on TV/console systems where moving a virtual mouse is awkward. Will update io.MousePos and set io.WantMoveMouse=true. If enabled you MUST honor io.WantMoveMouse requests in your binding, otherwise ImGui will react as if the mouse is jumping around back and forth.
|
ImGuiNavFlags_MoveMouse = 1 << 2, // Request navigation to allow moving the mouse cursor. May be useful on TV/console systems where moving a virtual mouse is awkward. Will update io.MousePos and set io.WantMoveMouse=true. If enabled you MUST honor io.WantMoveMouse requests in your binding, otherwise ImGui will react as if the mouse is jumping around back and forth.
|
||||||
|
ImGuiNavFlags_NoCaptureKeyboard = 1 << 3 // Do not set the io.WantCaptureKeyboard flag with io.NavActive is set.
|
||||||
};
|
};
|
||||||
|
|
||||||
// Enumeration for PushStyleColor() / PopStyleColor()
|
// Enumeration for PushStyleColor() / PopStyleColor()
|
||||||
|
Loading…
Reference in New Issue
Block a user