@ -739,7 +739,7 @@ bool ImGui::ButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFlags
// Render
const ImU32 col = GetColorU32 ( ( held & & hovered ) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button ) ;
RenderNavHighlight ( bb , id ) ;
RenderNavCursor ( bb , id ) ;
RenderFrame ( bb . Min , bb . Max , col , true , style . FrameRounding ) ;
if ( g . LogEnabled )
@ -791,7 +791,7 @@ bool ImGui::InvisibleButton(const char* str_id, const ImVec2& size_arg, ImGuiBut
bool hovered , held ;
bool pressed = ButtonBehavior ( bb , id , & hovered , & held , flags ) ;
RenderNavHighlight ( bb , id ) ;
RenderNavCursor ( bb , id ) ;
IMGUI_TEST_ENGINE_ITEM_INFO ( id , str_id , g . LastItemData . StatusFlags ) ;
return pressed ;
@ -817,7 +817,7 @@ bool ImGui::ArrowButtonEx(const char* str_id, ImGuiDir dir, ImVec2 size, ImGuiBu
// Render
const ImU32 bg_col = GetColorU32 ( ( held & & hovered ) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button ) ;
const ImU32 text_col = GetColorU32 ( ImGuiCol_Text ) ;
RenderNavHighlight ( bb , id ) ;
RenderNavCursor ( bb , id ) ;
RenderFrame ( bb . Min , bb . Max , bg_col , true , g . Style . FrameRounding ) ;
RenderArrow ( window - > DrawList , bb . Min + ImVec2 ( ImMax ( 0.0f , ( size . x - g . FontSize ) * 0.5f ) , ImMax ( 0.0f , ( size . y - g . FontSize ) * 0.5f ) ) , text_col , dir ) ;
@ -858,7 +858,7 @@ bool ImGui::CloseButton(ImGuiID id, const ImVec2& pos)
ImU32 bg_col = GetColorU32 ( held ? ImGuiCol_ButtonActive : ImGuiCol_ButtonHovered ) ;
if ( hovered )
window - > DrawList - > AddRectFilled ( bb . Min , bb . Max , bg_col ) ;
RenderNavHighlight ( bb , id , ImGuiNavHighlight Flags_Compact ) ;
RenderNavCursor ( bb , id , ImGuiNavRenderCursor Flags_Compact ) ;
ImU32 cross_col = GetColorU32 ( ImGuiCol_Text ) ;
ImVec2 cross_center = bb . GetCenter ( ) - ImVec2 ( 0.5f , 0.5f ) ;
float cross_extent = g . FontSize * 0.5f * 0.7071f - 1.0f ;
@ -885,7 +885,7 @@ bool ImGui::CollapseButton(ImGuiID id, const ImVec2& pos)
ImU32 text_col = GetColorU32 ( ImGuiCol_Text ) ;
if ( hovered | | held )
window - > DrawList - > AddRectFilled ( bb . Min , bb . Max , bg_col ) ;
RenderNavHighlight ( bb , id , ImGuiNavHighlight Flags_Compact ) ;
RenderNavCursor ( bb , id , ImGuiNavRenderCursor Flags_Compact ) ;
RenderArrow ( window - > DrawList , bb . Min , text_col , window - > Collapsed ? ImGuiDir_Right : ImGuiDir_Down , 1.0f ) ;
// Switch to moving the window after mouse is moved beyond the initial drag threshold
@ -1092,7 +1092,7 @@ bool ImGui::ImageButtonEx(ImGuiID id, ImTextureID texture_id, const ImVec2& imag
// Render
const ImU32 col = GetColorU32 ( ( held & & hovered ) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button ) ;
RenderNavHighlight ( bb , id ) ;
RenderNavCursor ( bb , id ) ;
RenderFrame ( bb . Min , bb . Max , col , true , ImClamp ( ( float ) ImMin ( padding . x , padding . y ) , 0.0f , g . Style . FrameRounding ) ) ;
if ( bg_col . w > 0.0f )
window - > DrawList - > AddRectFilled ( bb . Min + padding , bb . Max - padding , GetColorU32 ( bg_col ) ) ;
@ -1183,7 +1183,7 @@ bool ImGui::Checkbox(const char* label, bool* v)
const bool mixed_value = ( g . LastItemData . ItemFlags & ImGuiItemFlags_MixedValue ) ! = 0 ;
if ( is_visible )
{
RenderNavHighlight ( total_bb , id ) ;
RenderNavCursor ( total_bb , id ) ;
RenderFrame ( check_bb . Min , check_bb . Max , GetColorU32 ( ( held & & hovered ) ? ImGuiCol_FrameBgActive : hovered ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg ) , true , style . FrameRounding ) ;
ImU32 check_col = GetColorU32 ( ImGuiCol_CheckMark ) ;
if ( mixed_value )
@ -1285,7 +1285,7 @@ bool ImGui::RadioButton(const char* label, bool active)
if ( pressed )
MarkItemEdited ( id ) ;
RenderNavHighlight ( total_bb , id ) ;
RenderNavCursor ( total_bb , id ) ;
const int num_segment = window - > DrawList - > _CalcCircleAutoSegmentCount ( radius ) ;
window - > DrawList - > AddCircleFilled ( center , radius , GetColorU32 ( ( held & & hovered ) ? ImGuiCol_FrameBgActive : hovered ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg ) , num_segment ) ;
if ( active )
@ -1425,7 +1425,7 @@ bool ImGui::TextLink(const char* label)
bool hovered , held ;
bool pressed = ButtonBehavior ( bb , id , & hovered , & held ) ;
RenderNavHighlight ( bb , id , ImGuiNavHighlightFlags_None ) ;
RenderNavCursor ( bb , id ) ;
if ( hovered )
SetMouseCursor ( ImGuiMouseCursor_Hand ) ;
@ -1856,7 +1856,7 @@ bool ImGui::BeginCombo(const char* label, const char* preview_value, ImGuiComboF
// Render shape
const ImU32 frame_col = GetColorU32 ( hovered ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg ) ;
const float value_x2 = ImMax ( bb . Min . x , bb . Max . x - arrow_size ) ;
RenderNavHighlight ( bb , id ) ;
RenderNavCursor ( bb , id ) ;
if ( ! ( flags & ImGuiComboFlags_NoPreview ) )
window - > DrawList - > AddRectFilled ( bb . Min , ImVec2 ( value_x2 , bb . Max . y ) , frame_col , style . FrameRounding , ( flags & ImGuiComboFlags_NoArrowButton ) ? ImDrawFlags_RoundCornersAll : ImDrawFlags_RoundCornersLeft ) ;
if ( ! ( flags & ImGuiComboFlags_NoArrowButton ) )
@ -2658,7 +2658,7 @@ bool ImGui::DragScalar(const char* label, ImGuiDataType data_type, void* p_data,
// Draw frame
const ImU32 frame_col = GetColorU32 ( g . ActiveId = = id ? ImGuiCol_FrameBgActive : hovered ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg ) ;
RenderNavHighlight ( frame_bb , id ) ;
RenderNavCursor ( frame_bb , id ) ;
RenderFrame ( frame_bb . Min , frame_bb . Max , frame_col , true , style . FrameRounding ) ;
// Drag behavior
@ -3240,7 +3240,7 @@ bool ImGui::SliderScalar(const char* label, ImGuiDataType data_type, void* p_dat
// Draw frame
const ImU32 frame_col = GetColorU32 ( g . ActiveId = = id ? ImGuiCol_FrameBgActive : hovered ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg ) ;
RenderNavHighlight ( frame_bb , id ) ;
RenderNavCursor ( frame_bb , id ) ;
RenderFrame ( frame_bb . Min , frame_bb . Max , frame_col , true , g . Style . FrameRounding ) ;
// Slider behavior
@ -3389,7 +3389,7 @@ bool ImGui::VSliderScalar(const char* label, const ImVec2& size, ImGuiDataType d
// Draw frame
const ImU32 frame_col = GetColorU32 ( g . ActiveId = = id ? ImGuiCol_FrameBgActive : hovered ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg ) ;
RenderNavHighlight ( frame_bb , id ) ;
RenderNavCursor ( frame_bb , id ) ;
RenderFrame ( frame_bb . Min , frame_bb . Max , frame_col , true , g . Style . FrameRounding ) ;
// Slider behavior
@ -5102,7 +5102,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
// Render frame
if ( ! is_multiline )
{
RenderNavHighlight ( frame_bb , id ) ;
RenderNavCursor ( frame_bb , id ) ;
RenderFrame ( frame_bb . Min , frame_bb . Max , GetColorU32 ( ImGuiCol_FrameBg ) , true , style . FrameRounding ) ;
}
@ -6113,7 +6113,7 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl
else
window - > DrawList - > AddRectFilled ( bb_inner . Min , bb_inner . Max , GetColorU32 ( col_source ) , rounding ) ;
}
RenderNavHighlight ( bb , id ) ;
RenderNavCursor ( bb , id ) ;
if ( ( flags & ImGuiColorEditFlags_NoBorder ) = = 0 )
{
if ( g . Style . FrameBorderSize > 0.0f )
@ -6677,15 +6677,15 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l
// Render
{
const ImU32 text_col = GetColorU32 ( ImGuiCol_Text ) ;
ImGuiNavHighlightFlags nav_highlight_flags = ImGuiNavHighlight Flags_Compact ;
ImGuiNavRenderCursorFlags nav_render_cursor_flags = ImGuiNavRenderCursor Flags_Compact ;
if ( is_multi_select )
nav_highlight_flags | = ImGuiNavHighlight Flags_AlwaysDraw ; // Always show the nav rectangle
nav_render_cursor_flags | = ImGuiNavRenderCursor Flags_AlwaysDraw ; // Always show the nav rectangle
if ( display_frame )
{
// Framed type
const ImU32 bg_col = GetColorU32 ( ( held & & hovered ) ? ImGuiCol_HeaderActive : hovered ? ImGuiCol_HeaderHovered : ImGuiCol_Header ) ;
RenderFrame ( frame_bb . Min , frame_bb . Max , bg_col , true , style . FrameRounding ) ;
RenderNavHighlight ( frame_bb , id , nav_highlight _flags ) ;
RenderNavCursor ( frame_bb , id , nav_render_cursor _flags ) ;
if ( flags & ImGuiTreeNodeFlags_Bullet )
RenderBullet ( window - > DrawList , ImVec2 ( text_pos . x - text_offset_x * 0.60f , text_pos . y + g . FontSize * 0.5f ) , text_col ) ;
else if ( ! is_leaf )
@ -6705,7 +6705,7 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l
const ImU32 bg_col = GetColorU32 ( ( held & & hovered ) ? ImGuiCol_HeaderActive : hovered ? ImGuiCol_HeaderHovered : ImGuiCol_Header ) ;
RenderFrame ( frame_bb . Min , frame_bb . Max , bg_col , false ) ;
}
RenderNavHighlight ( frame_bb , id , nav_highlight _flags ) ;
RenderNavCursor ( frame_bb , id , nav_render_cursor _flags ) ;
if ( flags & ImGuiTreeNodeFlags_Bullet )
RenderBullet ( window - > DrawList , ImVec2 ( text_pos . x - text_offset_x * 0.5f , text_pos . y + g . FontSize * 0.5f ) , text_col ) ;
else if ( ! is_leaf )
@ -7026,10 +7026,10 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl
}
if ( g . NavId = = id )
{
ImGuiNavHighlightFlags nav_highlight_flags = ImGuiNavHighlightFlags_Compact | ImGuiNavHighlight Flags_NoRounding ;
ImGuiNavRenderCursorFlags nav_render_cursor_flags = ImGuiNavRenderCursorFlags_Compact | ImGuiNavRenderCursor Flags_NoRounding ;
if ( is_multi_select )
nav_highlight_flags | = ImGuiNavHighlight Flags_AlwaysDraw ; // Always show the nav rectangle
RenderNavHighlight ( bb , id , nav_highlight _flags ) ;
nav_render_cursor_flags | = ImGuiNavRenderCursor Flags_AlwaysDraw ; // Always show the nav rectangle
RenderNavCursor ( bb , id , nav_render_cursor _flags ) ;
}
}
@ -10109,7 +10109,7 @@ bool ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open,
float y_offset = 1.0f * g . CurrentDpiScale ;
display_draw_list - > AddLine ( bb . GetTL ( ) + ImVec2 ( x_offset , y_offset ) , bb . GetTR ( ) + ImVec2 ( - x_offset , y_offset ) , GetColorU32 ( tab_bar_focused ? ImGuiCol_TabSelectedOverline : ImGuiCol_TabDimmedSelectedOverline ) , style . TabBarOverlineSize ) ;
}
RenderNavHighlight ( bb , id ) ;
RenderNavCursor ( bb , id ) ;
// Select with right mouse button. This is so the common idiom for context menu automatically highlight the current widget.
const bool hovered_unblocked = IsItemHovered ( ImGuiHoveredFlags_AllowWhenBlockedByPopup ) ;