@ -7938,10 +7938,13 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
}
}
}
}
// Render
// Select which buffer we are going to display. When ImGuiInputTextFlags_NoLiveEdit is set 'buf' might still be the old value. We set buf to NULL to prevent accidental usage from now on.
const char * buf_display = ( g . ActiveId = = id & & is_editable ) ? edit_state . TempTextBuffer . Data : buf ; buf = NULL ;
if ( ! is_multiline )
if ( ! is_multiline )
RenderFrame ( frame_bb . Min , frame_bb . Max , GetColorU32 ( ImGuiCol_FrameBg ) , true , style . FrameRounding ) ;
RenderFrame ( frame_bb . Min , frame_bb . Max , GetColorU32 ( ImGuiCol_FrameBg ) , true , style . FrameRounding ) ;
// Render
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
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 render_pos = is_multiline ? draw_window - > DC . CursorPos : frame_bb . Min + style . FramePadding ;
ImVec2 text_size ( 0.f , 0.f ) ;
ImVec2 text_size ( 0.f , 0.f ) ;
@ -8067,7 +8070,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
}
}
}
}
draw_window - > DrawList - > AddText ( g . Font , g . FontSize , render_pos - render_scroll , GetColorU32 ( ImGuiCol_Text ) , buf , buf + edit_state . CurLenA , 0.0f , is_multiline ? NULL : & clip_rect ) ;
draw_window - > DrawList - > AddText ( g . Font , g . FontSize , render_pos - render_scroll , GetColorU32 ( ImGuiCol_Text ) , buf _display , buf _display + edit_state . CurLenA , 0.0f , is_multiline ? NULL : & clip_rect ) ;
// Draw blinking cursor
// Draw blinking cursor
bool cursor_is_visible = ( g . InputTextState . CursorAnim < = 0.0f ) | | fmodf ( g . InputTextState . CursorAnim , 1.20f ) < = 0.80f ;
bool cursor_is_visible = ( g . InputTextState . CursorAnim < = 0.0f ) | | fmodf ( g . InputTextState . CursorAnim , 1.20f ) < = 0.80f ;
@ -8085,8 +8088,8 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
// Render text only
// Render text only
const char * buf_end = NULL ;
const char * buf_end = NULL ;
if ( is_multiline )
if ( is_multiline )
text_size = ImVec2 ( size . x , InputTextCalcTextLenAndLineCount ( buf , & buf_end ) * g . FontSize ) ; // We don't need width
text_size = ImVec2 ( size . x , InputTextCalcTextLenAndLineCount ( buf _display , & buf_end ) * g . FontSize ) ; // We don't need width
draw_window - > DrawList - > AddText ( g . Font , g . FontSize , render_pos , GetColorU32 ( ImGuiCol_Text ) , buf , buf_end , 0.0f , is_multiline ? NULL : & clip_rect ) ;
draw_window - > DrawList - > AddText ( g . Font , g . FontSize , render_pos , GetColorU32 ( ImGuiCol_Text ) , buf _display , buf_end , 0.0f , is_multiline ? NULL : & clip_rect ) ;
}
}
if ( is_multiline )
if ( is_multiline )
@ -8101,7 +8104,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
// Log as text
// Log as text
if ( g . LogEnabled & & ! is_password )
if ( g . LogEnabled & & ! is_password )
LogRenderedText ( render_pos , buf , NULL ) ;
LogRenderedText ( render_pos , buf _display , NULL ) ;
if ( label_size . x > 0 )
if ( label_size . x > 0 )
RenderText ( ImVec2 ( frame_bb . Max . x + style . ItemInnerSpacing . x , frame_bb . Min . y + style . FramePadding . y ) , label ) ;
RenderText ( ImVec2 ( frame_bb . Max . x + style . ItemInnerSpacing . x , frame_bb . Min . y + style . FramePadding . y ) , label ) ;