@ -1776,6 +1776,12 @@ ImGuiID ImGuiWindow::GetID(const void* ptr)
return id ;
}
ImGuiID ImGuiWindow : : GetIDNoKeepAlive ( const char * str , const char * str_end )
{
ImGuiID seed = IDStack . back ( ) ;
return ImHash ( str , str_end ? ( int ) ( str_end - str ) : 0 , seed ) ;
}
//-----------------------------------------------------------------------------
// Internal API exposed in imgui_internal.h
//-----------------------------------------------------------------------------
@ -7633,7 +7639,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
g . MouseCursor = ImGuiMouseCursor_TextInput ;
}
const bool user_clicked = hovered & & io . MouseClicked [ 0 ] ;
const bool user_scrolled = is_multiline & & g . ActiveId = = 0 & & edit_state . Id = = id & & g . ActiveIdPreviousFrame = = draw_window - > GetID ( " #SCROLLY " ) ;
const bool user_scrolled = is_multiline & & g . ActiveId = = 0 & & edit_state . Id = = id & & g . ActiveIdPreviousFrame = = draw_window - > GetID NoKeepAlive ( " #SCROLLY " ) ;
bool select_all = ( g . ActiveId ! = id ) & & ( flags & ImGuiInputTextFlags_AutoSelectAll ) ! = 0 ;
if ( focus_requested | | user_clicked | | user_scrolled )
@ -7954,7 +7960,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
const ImVec4 clip_rect ( frame_bb . Min . x , frame_bb . Min . y , frame_bb . Min . x + size . x , frame_bb . Min . y + size . y ) ; // Not using frame_bb.Max because we have adjusted size
ImVec2 render_pos = is_multiline ? draw_window - > DC . CursorPos : frame_bb . Min + style . FramePadding ;
ImVec2 text_size ( 0.f , 0.f ) ;
if ( g . ActiveId = = id | | ( edit_state . Id = = id & & is_multiline & & g . ActiveId = = draw_window - > GetID ( " #SCROLLY " ) ) )
if ( g . ActiveId = = id | | ( edit_state . Id = = id & & is_multiline & & g . ActiveId = = draw_window - > GetID NoKeepAlive ( " #SCROLLY " ) ) )
{
edit_state . CursorAnim + = g . IO . DeltaTime ;