MCPcopy Create free account
hub / github.com/Wemino/MarkerPatch / NavUpdateCreateMoveRequest

Method NavUpdateCreateMoveRequest

include/imgui/imgui.cpp:14020–14142  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14018}
14019
14020void ImGui::NavUpdateCreateMoveRequest()
14021{
14022 ImGuiContext& g = *GImGui;
14023 ImGuiIO& io = g.IO;
14024 ImGuiWindow* window = g.NavWindow;
14025 const bool nav_gamepad_active = (io.ConfigFlags & ImGuiConfigFlags_NavEnableGamepad) != 0 && (io.BackendFlags & ImGuiBackendFlags_HasGamepad) != 0;
14026 const bool nav_keyboard_active = (io.ConfigFlags & ImGuiConfigFlags_NavEnableKeyboard) != 0;
14027
14028 if (g.NavMoveForwardToNextFrame && window != NULL)
14029 {
14030 // Forwarding previous request (which has been modified, e.g. wrap around menus rewrite the requests with a starting rectangle at the other side of the window)
14031 // (preserve most state, which were already set by the NavMoveRequestForward() function)
14032 IM_ASSERT(g.NavMoveDir != ImGuiDir_None && g.NavMoveClipDir != ImGuiDir_None);
14033 IM_ASSERT(g.NavMoveFlags & ImGuiNavMoveFlags_Forwarded);
14034 IMGUI_DEBUG_LOG_NAV("[nav] NavMoveRequestForward %d\n", g.NavMoveDir);
14035 }
14036 else
14037 {
14038 // Initiate directional inputs request
14039 g.NavMoveDir = ImGuiDir_None;
14040 g.NavMoveFlags = ImGuiNavMoveFlags_None;
14041 g.NavMoveScrollFlags = ImGuiScrollFlags_None;
14042 if (window && !g.NavWindowingTarget && !(window->Flags & ImGuiWindowFlags_NoNavInputs))
14043 {
14044 const ImGuiInputFlags repeat_mode = ImGuiInputFlags_Repeat | (ImGuiInputFlags)ImGuiInputFlags_RepeatRateNavMove;
14045 if (!IsActiveIdUsingNavDir(ImGuiDir_Left) && ((nav_gamepad_active && IsKeyPressed(ImGuiKey_GamepadDpadLeft, repeat_mode, ImGuiKeyOwner_NoOwner)) || (nav_keyboard_active && IsKeyPressed(ImGuiKey_LeftArrow, repeat_mode, ImGuiKeyOwner_NoOwner)))) { g.NavMoveDir = ImGuiDir_Left; }
14046 if (!IsActiveIdUsingNavDir(ImGuiDir_Right) && ((nav_gamepad_active && IsKeyPressed(ImGuiKey_GamepadDpadRight, repeat_mode, ImGuiKeyOwner_NoOwner)) || (nav_keyboard_active && IsKeyPressed(ImGuiKey_RightArrow, repeat_mode, ImGuiKeyOwner_NoOwner)))) { g.NavMoveDir = ImGuiDir_Right; }
14047 if (!IsActiveIdUsingNavDir(ImGuiDir_Up) && ((nav_gamepad_active && IsKeyPressed(ImGuiKey_GamepadDpadUp, repeat_mode, ImGuiKeyOwner_NoOwner)) || (nav_keyboard_active && IsKeyPressed(ImGuiKey_UpArrow, repeat_mode, ImGuiKeyOwner_NoOwner)))) { g.NavMoveDir = ImGuiDir_Up; }
14048 if (!IsActiveIdUsingNavDir(ImGuiDir_Down) && ((nav_gamepad_active && IsKeyPressed(ImGuiKey_GamepadDpadDown, repeat_mode, ImGuiKeyOwner_NoOwner)) || (nav_keyboard_active && IsKeyPressed(ImGuiKey_DownArrow, repeat_mode, ImGuiKeyOwner_NoOwner)))) { g.NavMoveDir = ImGuiDir_Down; }
14049 }
14050 g.NavMoveClipDir = g.NavMoveDir;
14051 g.NavScoringNoClipRect = ImRect(+FLT_MAX, +FLT_MAX, -FLT_MAX, -FLT_MAX);
14052 }
14053
14054 // Update PageUp/PageDown/Home/End scroll
14055 // FIXME-NAV: Consider enabling those keys even without the master ImGuiConfigFlags_NavEnableKeyboard flag?
14056 float scoring_page_offset_y = 0.0f;
14057 if (window && g.NavMoveDir == ImGuiDir_None && nav_keyboard_active)
14058 scoring_page_offset_y = NavUpdatePageUpPageDown();
14059
14060 // [DEBUG] Always send a request when holding Ctrl. Hold Ctrl + Arrow change the direction.
14061#if IMGUI_DEBUG_NAV_SCORING
14062 //if (io.KeyCtrl && IsKeyPressed(ImGuiKey_C))
14063 // g.NavMoveDirForDebug = (ImGuiDir)((g.NavMoveDirForDebug + 1) & 3);
14064 if (io.KeyCtrl)
14065 {
14066 if (g.NavMoveDir == ImGuiDir_None)
14067 g.NavMoveDir = g.NavMoveDirForDebug;
14068 g.NavMoveClipDir = g.NavMoveDir;
14069 g.NavMoveFlags |= ImGuiNavMoveFlags_DebugNoResult;
14070 }
14071#endif
14072
14073 // Submit
14074 g.NavMoveForwardToNextFrame = false;
14075 if (g.NavMoveDir != ImGuiDir_None)
14076 NavMoveRequestSubmit(g.NavMoveDir, g.NavMoveClipDir, g.NavMoveFlags, g.NavMoveScrollFlags);
14077

Callers

nothing calls this directly

Calls 10

IsActiveIdUsingNavDirFunction · 0.85
WindowRectAbsToRelFunction · 0.85
ImVec2Function · 0.85
ImMinFunction · 0.85
WindowRectRelToAbsFunction · 0.85
NavBiasScoringRectFunction · 0.85
AddMethod · 0.80
ImRectFunction · 0.70
ContainsMethod · 0.45

Tested by

no test coverage detected