@ -611,6 +611,7 @@
# include <math.h> // sqrtf, fabsf, fmodf, powf, cosf, sinf, floorf, ceilf
# include <stdlib.h> // NULL, malloc, free, qsort, atoi
# include <stdio.h> // vsnprintf, sscanf, printf
# include <limits.h> // INT_MIN, INT_MAX
# if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier
# include <stddef.h> // intptr_t
# else
@ -863,9 +864,6 @@ void ImGuiIO::AddInputCharactersUTF8(const char* utf8_chars)
# define IM_F32_TO_INT8(_VAL) ((int)((_VAL) * 255.0f + 0.5f))
# define IM_INT_MIN (-2147483647-1)
# define IM_INT_MAX (2147483647)
// Play it nice with Windows users. Notepad in 2015 still doesn't display text data with Unix-style \n.
# ifdef _WIN32
# define IM_NEWLINE "\r\n"
@ -1645,7 +1643,7 @@ void ImGuiListClipper::End()
if ( ItemsCount < 0 )
return ;
// In theory here we should assert that ImGui::GetCursorPosY() == StartPosY + DisplayEnd * ItemsHeight, but it feels saner to just seek at the end and not assert/crash the user.
if ( ItemsCount < IM_I NT_MAX )
if ( ItemsCount < INT_MAX )
SetCursorPosYAndSetupDummyPrevLine ( StartPosY + ItemsCount * ItemsHeight , ItemsHeight ) ; // advance cursor
ItemsCount = - 1 ;
StepNo = 3 ;
@ -1735,8 +1733,8 @@ ImGuiWindow::ImGuiWindow(const char* name)
ParentWindow = NULL ;
FocusIdxAllCounter = FocusIdxTabCounter = - 1 ;
FocusIdxAllRequestCurrent = FocusIdxTabRequestCurrent = IM_I NT_MAX ;
FocusIdxAllRequestNext = FocusIdxTabRequestNext = IM_I NT_MAX ;
FocusIdxAllRequestCurrent = FocusIdxTabRequestCurrent = INT_MAX ;
FocusIdxAllRequestNext = FocusIdxTabRequestNext = INT_MAX ;
}
ImGuiWindow : : ~ ImGuiWindow ( )
@ -1900,7 +1898,7 @@ bool ImGui::FocusableItemRegister(ImGuiWindow* window, bool is_active, bool tab_
// Process keyboard input at this point: TAB, Shift-TAB switch focus
// We can always TAB out of a widget that doesn't allow tabbing in.
if ( tab_stop & & window - > FocusIdxAllRequestNext = = IM_I NT_MAX & & window - > FocusIdxTabRequestNext = = IM_ INT_MAX & & is_active & & IsKeyPressedMap ( ImGuiKey_Tab ) )
if ( tab_stop & & window - > FocusIdxAllRequestNext = = INT_MAX & & window - > FocusIdxTabRequestNext = = INT_MAX & & is_active & & IsKeyPressedMap ( ImGuiKey_Tab ) )
{
// Modulo on index will be applied at the end of frame once we've got the total counter of items.
window - > FocusIdxTabRequestNext = window - > FocusIdxTabCounter + ( g . IO . KeyShift ? ( allow_keyboard_focus ? - 1 : 0 ) : + 1 ) ;
@ -4050,10 +4048,10 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
window - > ItemWidthDefault = ( float ) ( int ) ( g . FontSize * 16.0f ) ;
// Prepare for focus requests
window - > FocusIdxAllRequestCurrent = ( window - > FocusIdxAllRequestNext = = IM_I NT_MAX | | window - > FocusIdxAllCounter = = - 1 ) ? IM_ INT_MAX : ( window - > FocusIdxAllRequestNext + ( window - > FocusIdxAllCounter + 1 ) ) % ( window - > FocusIdxAllCounter + 1 ) ;
window - > FocusIdxTabRequestCurrent = ( window - > FocusIdxTabRequestNext = = IM_I NT_MAX | | window - > FocusIdxTabCounter = = - 1 ) ? IM_ INT_MAX : ( window - > FocusIdxTabRequestNext + ( window - > FocusIdxTabCounter + 1 ) ) % ( window - > FocusIdxTabCounter + 1 ) ;
window - > FocusIdxAllRequestCurrent = ( window - > FocusIdxAllRequestNext = = INT_MAX | | window - > FocusIdxAllCounter = = - 1 ) ? INT_MAX : ( window - > FocusIdxAllRequestNext + ( window - > FocusIdxAllCounter + 1 ) ) % ( window - > FocusIdxAllCounter + 1 ) ;
window - > FocusIdxTabRequestCurrent = ( window - > FocusIdxTabRequestNext = = INT_MAX | | window - > FocusIdxTabCounter = = - 1 ) ? INT_MAX : ( window - > FocusIdxTabRequestNext + ( window - > FocusIdxTabCounter + 1 ) ) % ( window - > FocusIdxTabCounter + 1 ) ;
window - > FocusIdxAllCounter = window - > FocusIdxTabCounter = - 1 ;
window - > FocusIdxAllRequestNext = window - > FocusIdxTabRequestNext = IM_I NT_MAX ;
window - > FocusIdxAllRequestNext = window - > FocusIdxTabRequestNext = INT_MAX ;
// Apply scrolling
if ( window - > ScrollTarget . x < FLT_MAX )
@ -5147,7 +5145,7 @@ void ImGui::SetKeyboardFocusHere(int offset)
{
ImGuiWindow * window = GetCurrentWindow ( ) ;
window - > FocusIdxAllRequestNext = window - > FocusIdxAllCounter + 1 + offset ;
window - > FocusIdxTabRequestNext = IM_I NT_MAX ;
window - > FocusIdxTabRequestNext = INT_MAX ;
}
void ImGui : : SetStateStorage ( ImGuiStorage * tree )
@ -6936,10 +6934,10 @@ bool ImGui::DragIntRange2(const char* label, int* v_current_min, int* v_current_
ImGui : : BeginGroup ( ) ;
PushMultiItemsWidths ( 2 ) ;
bool value_changed = ImGui : : DragInt ( " ##min " , v_current_min , v_speed , ( v_min > = v_max ) ? IM_I NT_MIN : v_min , ( v_min > = v_max ) ? * v_current_max : ImMin ( v_max , * v_current_max ) , display_format ) ;
bool value_changed = ImGui : : DragInt ( " ##min " , v_current_min , v_speed , ( v_min > = v_max ) ? INT_MIN : v_min , ( v_min > = v_max ) ? * v_current_max : ImMin ( v_max , * v_current_max ) , display_format ) ;
ImGui : : PopItemWidth ( ) ;
ImGui : : SameLine ( 0 , g . Style . ItemInnerSpacing . x ) ;
value_changed | = ImGui : : DragInt ( " ##max " , v_current_max , v_speed , ( v_min > = v_max ) ? * v_current_min : ImMax ( v_min , * v_current_min ) , ( v_min > = v_max ) ? IM_I NT_MAX : v_max , display_format_max ? display_format_max : display_format ) ;
value_changed | = ImGui : : DragInt ( " ##max " , v_current_max , v_speed , ( v_min > = v_max ) ? * v_current_min : ImMax ( v_min , * v_current_min ) , ( v_min > = v_max ) ? INT_MAX : v_max , display_format_max ? display_format_max : display_format ) ;
ImGui : : PopItemWidth ( ) ;
ImGui : : SameLine ( 0 , g . Style . ItemInnerSpacing . x ) ;