@ -395,6 +395,7 @@ CODE
- Backend writing to io . MouseDown [ ] - > backend should call io . AddMouseButtonEvent ( )
- Backend writing to io . MouseWheel - > backend should call io . AddMouseWheelEvent ( )
- Backend writing to io . MouseHoveredViewport - > backend should call io . AddMouseViewportEvent ( ) [ Docking branch w / multi - viewports only ]
note : for all calls to IO new functions , the Dear ImGui context should be bound / current .
- 2022 / 01 / 10 ( 1.87 ) - inputs : reworked keyboard IO . Removed io . KeyMap [ ] , io . KeysDown [ ] in favor of calling io . AddKeyEvent ( ) . Removed GetKeyIndex ( ) , now unecessary . All IsKeyXXX ( ) functions now take ImGuiKey values . All features are still functional until IMGUI_DISABLE_OBSOLETE_KEYIO is defined . Read Changelog and Release Notes for details .
- IsKeyPressed ( MY_NATIVE_KEY_XXX ) - > use IsKeyPressed ( ImGuiKey_XXX )
- IsKeyPressed ( GetKeyIndex ( ImGuiKey_XXX ) ) - > use IsKeyPressed ( ImGuiKey_XXX )
@ -6490,6 +6491,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
window - > DC . IdealMaxPos = window - > DC . CursorStartPos ;
window - > DC . CurrLineSize = window - > DC . PrevLineSize = ImVec2 ( 0.0f , 0.0f ) ;
window - > DC . CurrLineTextBaseOffset = window - > DC . PrevLineTextBaseOffset = 0.0f ;
window - > DC . IsSameLine = false ;
window - > DC . NavLayerCurrent = ImGuiNavLayer_Main ;
window - > DC . NavLayersActiveMask = window - > DC . NavLayersActiveMaskNext ;
@ -8203,14 +8205,16 @@ void ImGui::ItemSize(const ImVec2& size, float text_baseline_y)
// In theory we should be offsetting the starting position (window->DC.CursorPos), that will be the topic of a larger refactor,
// but since ItemSize() is not yet an API that moves the cursor (to handle e.g. wrapping) enlarging the height has the same effect.
const float offset_to_match_baseline_y = ( text_baseline_y > = 0 ) ? ImMax ( 0.0f , window - > DC . CurrLineTextBaseOffset - text_baseline_y ) : 0.0f ;
const float line_height = ImMax ( window - > DC . CurrLineSize . y , size . y + offset_to_match_baseline_y ) ;
const float line_y1 = window - > DC . IsSameLine ? window - > DC . CursorPosPrevLine . y : window - > DC . CursorPos . y ;
const float line_height = ImMax ( window - > DC . CurrLineSize . y , /*ImMax(*/ window - > DC . CursorPos . y - line_y1 /*, 0.0f)*/ + size . y + offset_to_match_baseline_y ) ;
// Always align ourselves on pixel boundaries
//if (g.IO.KeyAlt) window->DrawList->AddRect(window->DC.CursorPos, window->DC.CursorPos + ImVec2(size.x, line_height), IM_COL32(255,0,0,200)); // [DEBUG]
window - > DC . CursorPosPrevLine . x = window - > DC . CursorPos . x + size . x ;
window - > DC . CursorPosPrevLine . y = window - > DC . CursorPos . y ;
window - > DC . CursorPosPrevLine . y = line_y1 ;
window - > DC . CursorPos . x = IM_FLOOR ( window - > Pos . x + window - > DC . Indent . x + window - > DC . ColumnsOffset . x ) ; // Next line
window - > DC . CursorPos . y = IM_FLOOR ( window - > DC . CursorPos . y + line_height + g . Style . ItemSpacing . y ) ; // Next line
window - > DC . CursorPos . y = IM_FLOOR ( line_y1 + line_height + g . Style . ItemSpacing . y ) ; // Next line
window - > DC . CursorMaxPos . x = ImMax ( window - > DC . CursorMaxPos . x , window - > DC . CursorPosPrevLine . x ) ;
window - > DC . CursorMaxPos . y = ImMax ( window - > DC . CursorMaxPos . y , window - > DC . CursorPos . y - g . Style . ItemSpacing . y ) ;
//if (g.IO.KeyAlt) window->DrawList->AddCircle(window->DC.CursorMaxPos, 3.0f, IM_COL32(255,0,0,255), 4); // [DEBUG]
@ -8219,6 +8223,7 @@ void ImGui::ItemSize(const ImVec2& size, float text_baseline_y)
window - > DC . CurrLineSize . y = 0.0f ;
window - > DC . PrevLineTextBaseOffset = ImMax ( window - > DC . CurrLineTextBaseOffset , text_baseline_y ) ;
window - > DC . CurrLineTextBaseOffset = 0.0f ;
window - > DC . IsSameLine = false ;
// Horizontal layout mode
if ( window - > DC . LayoutType = = ImGuiLayoutType_Horizontal )
@ -8322,6 +8327,7 @@ void ImGui::SameLine(float offset_from_start_x, float spacing_w)
}
window - > DC . CurrLineSize = window - > DC . PrevLineSize ;
window - > DC . CurrLineTextBaseOffset = window - > DC . PrevLineTextBaseOffset ;
window - > DC . IsSameLine = true ;
}
ImVec2 ImGui : : GetCursorScreenPos ( )