@ -7625,10 +7625,6 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // NB: we are only allowed to access 'edit_state' if we are the active widget.
   
					 
					 
					 
					    // NB: we are only allowed to access 'edit_state' if we are the active widget.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiTextEditState &  edit_state  =  g . InputTextState ;   
					 
					 
					 
					    ImGuiTextEditState &  edit_state  =  g . InputTextState ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  bool  is_ctrl_down  =  io . KeyCtrl ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  bool  is_shift_down  =  io . KeyShift ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  bool  is_alt_down  =  io . KeyAlt ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  bool  is_super_down  =  io . KeySuper ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  bool  focus_requested  =  FocusableItemRegister ( window ,  g . ActiveId  = =  id ,  ( flags  &  ( ImGuiInputTextFlags_CallbackCompletion | ImGuiInputTextFlags_AllowTabInput ) )  = =  0 ) ;     // Using completion callback disable keyboard tabbing
   
					 
					 
					 
					    const  bool  focus_requested  =  FocusableItemRegister ( window ,  g . ActiveId  = =  id ,  ( flags  &  ( ImGuiInputTextFlags_CallbackCompletion | ImGuiInputTextFlags_AllowTabInput ) )  = =  0 ) ;     // Using completion callback disable keyboard tabbing
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  bool  focus_requested_by_code  =  focus_requested  & &  ( window - > FocusIdxAllCounter  = =  window - > FocusIdxAllRequestCurrent ) ;   
					 
					 
					 
					    const  bool  focus_requested_by_code  =  focus_requested  & &  ( window - > FocusIdxAllCounter  = =  window - > FocusIdxAllRequestCurrent ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  bool  focus_requested_by_tab  =  focus_requested  & &  ! focus_requested_by_code ;   
					 
					 
					 
					    const  bool  focus_requested_by_tab  =  focus_requested  & &  ! focus_requested_by_code ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -7678,7 +7674,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( flags  &  ImGuiInputTextFlags_AlwaysInsertMode )   
					 
					 
					 
					            if  ( flags  &  ImGuiInputTextFlags_AlwaysInsertMode )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                edit_state . StbState . insert_mode  =  true ;   
					 
					 
					 
					                edit_state . StbState . insert_mode  =  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( ! is_multiline  & &  ( focus_requested_by_tab  | |  ( user_clicked  & &  is_ctrl_down  ) ) )   
					 
					 
					 
					            if  ( ! is_multiline  & &  ( focus_requested_by_tab  | |  ( user_clicked  & &  io . KeyCtrl  ) ) )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                select_all  =  true ;   
					 
					 
					 
					                select_all  =  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        SetActiveID ( id ,  window ) ;   
					 
					 
					 
					        SetActiveID ( id ,  window ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -7746,7 +7742,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            // Process text input (before we check for Return because using some IME will effectively send a Return?)
   
					 
					 
					 
					            // Process text input (before we check for Return because using some IME will effectively send a Return?)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            // We ignore CTRL inputs, but need to allow CTRL+ALT as some keyboards (e.g. German) use AltGR - which is Alt+Ctrl - to input certain characters.
   
					 
					 
					 
					            // We ignore CTRL inputs, but need to allow CTRL+ALT as some keyboards (e.g. German) use AltGR - which is Alt+Ctrl - to input certain characters.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( ! ( is_ctrl_down   & &  ! is_alt_down  )  & &  is_editable )   
					 
					 
					 
					            if  ( ! ( io . KeyCtrl   & &  ! io . KeyAlt  )  & &  is_editable )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                for  ( int  n  =  0 ;  n  <  IM_ARRAYSIZE ( io . InputCharacters )  & &  io . InputCharacters [ n ] ;  n + + )   
					 
					 
					 
					                for  ( int  n  =  0 ;  n  <  IM_ARRAYSIZE ( io . InputCharacters )  & &  io . InputCharacters [ n ] ;  n + + )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    if  ( unsigned  int  c  =  ( unsigned  int ) io . InputCharacters [ n ] )   
					 
					 
					 
					                    if  ( unsigned  int  c  =  ( unsigned  int ) io . InputCharacters [ n ] )   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -7764,31 +7760,31 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // Handle various key-presses
   
					 
					 
					 
					        // Handle various key-presses
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        bool  cancel_edit  =  false ;   
					 
					 
					 
					        bool  cancel_edit  =  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  int  k_mask  =  ( is_shift_down   ?  STB_TEXTEDIT_K_SHIFT  :  0 ) ;   
					 
					 
					 
					        const  int  k_mask  =  ( io . KeyShift   ?  STB_TEXTEDIT_K_SHIFT  :  0 ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  bool  is_shortcutkey_only  =  ( io . OSXBehaviors  ?  ( is_super_down   & &  ! is_ctrl_down )  :  ( is_ctrl_down   & &  ! is_super_down  ) )  & &  ! is_alt_down   & &  ! is_shift_down  ;  // OS X style: Shortcuts using Cmd/Super instead of Ctrl
   
					 
					 
					 
					        const  bool  is_shortcut_ key_only  =  ( io . OSXBehaviors  ?  ( io . KeySuper   & &  ! io . KeyCtrl )  :  ( io . KeyCtrl   & &  ! io . KeySuper  ) )  & &  ! io . KeyAlt   & &  ! io . KeyShift  ;  // OS X style: Shortcuts using Cmd/Super instead of Ctrl
   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  bool  is_wordmove_key_down  =  io . OSXBehaviors  ?  is_alt_down  :  is_ctrl_down ;                           // OS X style: Text editing cursor movement using Alt instead of Ctrl
   
					 
					 
					 
					        const  bool  is_wordmove_key_down  =  io . OSXBehaviors  ?  io . KeyAlt  :  io . KeyCtrl ;                       // OS X style: Text editing cursor movement using Alt instead of Ctrl
   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  bool  is_startend_key_down  =  io . OSXBehaviors  & &  is_super_down   & &  ! is_ctrl_down   & &  ! is_alt_down ;      // OS X style: Line/Text Start and End using Cmd+Arrows instead of Home/End
   
					 
					 
					 
					        const  bool  is_startend_key_down  =  io . OSXBehaviors  & &  io . KeySuper   & &  ! io . KeyCtrl   & &  ! io . KeyAlt ;    // OS X style: Line/Text Start and End using Cmd+Arrows instead of Home/End
   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( IsKeyPressedMap ( ImGuiKey_LeftArrow ) )                         {  edit_state . OnKeyPressed ( ( is_startend_key_down  ?  STB_TEXTEDIT_K_LINESTART  :  is_wordmove_key_down  ?  STB_TEXTEDIT_K_WORDLEFT  :  STB_TEXTEDIT_K_LEFT )  |  k_mask ) ;  }   
					 
					 
					 
					        if  ( IsKeyPressedMap ( ImGuiKey_LeftArrow ) )                         {  edit_state . OnKeyPressed ( ( is_startend_key_down  ?  STB_TEXTEDIT_K_LINESTART  :  is_wordmove_key_down  ?  STB_TEXTEDIT_K_WORDLEFT  :  STB_TEXTEDIT_K_LEFT )  |  k_mask ) ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_RightArrow ) )                   {  edit_state . OnKeyPressed ( ( is_startend_key_down  ?  STB_TEXTEDIT_K_LINEEND  :  is_wordmove_key_down  ?  STB_TEXTEDIT_K_WORDRIGHT  :  STB_TEXTEDIT_K_RIGHT )  |  k_mask ) ;  }   
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_RightArrow ) )                   {  edit_state . OnKeyPressed ( ( is_startend_key_down  ?  STB_TEXTEDIT_K_LINEEND  :  is_wordmove_key_down  ?  STB_TEXTEDIT_K_WORDRIGHT  :  STB_TEXTEDIT_K_RIGHT )  |  k_mask ) ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_UpArrow )  & &  is_multiline )      {  if  ( is_ctrl_down  )  SetWindowScrollY ( draw_window ,  ImMax ( draw_window - > Scroll . y  -  g . FontSize ,  0.0f ) ) ;  else  edit_state . OnKeyPressed ( ( is_startend_key_down  ?  STB_TEXTEDIT_K_TEXTSTART  :  STB_TEXTEDIT_K_UP )  |  k_mask ) ;  }   
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_UpArrow )  & &  is_multiline )      {  if  ( io . KeyCtrl  )  SetWindowScrollY ( draw_window ,  ImMax ( draw_window - > Scroll . y  -  g . FontSize ,  0.0f ) ) ;  else  edit_state . OnKeyPressed ( ( is_startend_key_down  ?  STB_TEXTEDIT_K_TEXTSTART  :  STB_TEXTEDIT_K_UP )  |  k_mask ) ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_DownArrow )  & &  is_multiline )    {  if  ( is_ctrl_down  )  SetWindowScrollY ( draw_window ,  ImMin ( draw_window - > Scroll . y  +  g . FontSize ,  GetScrollMaxY ( ) ) ) ;  else  edit_state . OnKeyPressed ( ( is_startend_key_down  ?  STB_TEXTEDIT_K_TEXTEND  :  STB_TEXTEDIT_K_DOWN )  |  k_mask ) ;  }   
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_DownArrow )  & &  is_multiline )    {  if  ( io . KeyCtrl  )  SetWindowScrollY ( draw_window ,  ImMin ( draw_window - > Scroll . y  +  g . FontSize ,  GetScrollMaxY ( ) ) ) ;  else  edit_state . OnKeyPressed ( ( is_startend_key_down  ?  STB_TEXTEDIT_K_TEXTEND  :  STB_TEXTEDIT_K_DOWN )  |  k_mask ) ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_Home ) )                         {  edit_state . OnKeyPressed ( is_ctrl_down   ?  STB_TEXTEDIT_K_TEXTSTART  |  k_mask  :  STB_TEXTEDIT_K_LINESTART  |  k_mask ) ;  }   
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_Home ) )                         {  edit_state . OnKeyPressed ( io . KeyCtrl   ?  STB_TEXTEDIT_K_TEXTSTART  |  k_mask  :  STB_TEXTEDIT_K_LINESTART  |  k_mask ) ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_End ) )                          {  edit_state . OnKeyPressed ( is_ctrl_down   ?  STB_TEXTEDIT_K_TEXTEND  |  k_mask  :  STB_TEXTEDIT_K_LINEEND  |  k_mask ) ;  }   
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_End ) )                          {  edit_state . OnKeyPressed ( io . KeyCtrl   ?  STB_TEXTEDIT_K_TEXTEND  |  k_mask  :  STB_TEXTEDIT_K_LINEEND  |  k_mask ) ;  }   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_Delete )  & &  is_editable )        {  edit_state . OnKeyPressed ( STB_TEXTEDIT_K_DELETE  |  k_mask ) ;  }   
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_Delete )  & &  is_editable )        {  edit_state . OnKeyPressed ( STB_TEXTEDIT_K_DELETE  |  k_mask ) ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_Backspace )  & &  is_editable )   
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_Backspace )  & &  is_editable )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( ! edit_state . HasSelection ( ) )   
					 
					 
					 
					            if  ( ! edit_state . HasSelection ( ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                if  ( is_wordmove_key_down )  edit_state . OnKeyPressed ( STB_TEXTEDIT_K_WORDLEFT | STB_TEXTEDIT_K_SHIFT ) ;   
					 
					 
					 
					                if  ( is_wordmove_key_down )  edit_state . OnKeyPressed ( STB_TEXTEDIT_K_WORDLEFT | STB_TEXTEDIT_K_SHIFT ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                else  if  ( io . OSXBehaviors  & &  is_super_down   & &  ! is_alt_down   & &  ! is_ctrl_down  )  edit_state . OnKeyPressed ( STB_TEXTEDIT_K_LINESTART | STB_TEXTEDIT_K_SHIFT ) ;   
					 
					 
					 
					                else  if  ( io . OSXBehaviors  & &  io . KeySuper   & &  ! io . KeyAlt   & &  ! io . KeyCtrl  )  edit_state . OnKeyPressed ( STB_TEXTEDIT_K_LINESTART | STB_TEXTEDIT_K_SHIFT ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            edit_state . OnKeyPressed ( STB_TEXTEDIT_K_BACKSPACE  |  k_mask ) ;   
					 
					 
					 
					            edit_state . OnKeyPressed ( STB_TEXTEDIT_K_BACKSPACE  |  k_mask ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_Enter ) )   
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_Enter ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            bool  ctrl_enter_for_new_line  =  ( flags  &  ImGuiInputTextFlags_CtrlEnterForNewLine )  ! =  0 ;   
					 
					 
					 
					            bool  ctrl_enter_for_new_line  =  ( flags  &  ImGuiInputTextFlags_CtrlEnterForNewLine )  ! =  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( ! is_multiline  | |  ( ctrl_enter_for_new_line  & &  ! is_ctrl_down  )  | |  ( ! ctrl_enter_for_new_line  & &  is_ctrl_down  ) )   
					 
					 
					 
					            if  ( ! is_multiline  | |  ( ctrl_enter_for_new_line  & &  ! io . KeyCtrl  )  | |  ( ! ctrl_enter_for_new_line  & &  io . KeyCtrl  ) )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                SetActiveID ( 0 ) ;   
					 
					 
					 
					                SetActiveID ( 0 ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                enter_pressed  =  true ;   
					 
					 
					 
					                enter_pressed  =  true ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -7800,17 +7796,17 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    edit_state . OnKeyPressed ( ( int ) c ) ;   
					 
					 
					 
					                    edit_state . OnKeyPressed ( ( int ) c ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( ( flags  &  ImGuiInputTextFlags_AllowTabInput )  & &  IsKeyPressedMap ( ImGuiKey_Tab )  & &  ! is_ctrl_down   & &  ! is_shift_down   & &  ! is_alt_down   & &  is_editable )   
					 
					 
					 
					        else  if  ( ( flags  &  ImGuiInputTextFlags_AllowTabInput )  & &  IsKeyPressedMap ( ImGuiKey_Tab )  & &  ! io . KeyCtrl   & &  ! io . KeyShift   & &  ! io . KeyAlt   & &  is_editable )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            unsigned  int  c  =  ' \t ' ;  // Insert TAB
   
					 
					 
					 
					            unsigned  int  c  =  ' \t ' ;  // Insert TAB
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( InputTextFilterCharacter ( & c ,  flags ,  callback ,  user_data ) )   
					 
					 
					 
					            if  ( InputTextFilterCharacter ( & c ,  flags ,  callback ,  user_data ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                edit_state . OnKeyPressed ( ( int ) c ) ;   
					 
					 
					 
					                edit_state . OnKeyPressed ( ( int ) c ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_Escape ) )                                      {  SetActiveID ( 0 ) ;  cancel_edit  =  true ;  }   
					 
					 
					 
					        else  if  ( IsKeyPressedMap ( ImGuiKey_Escape ) )                                      {  SetActiveID ( 0 ) ;  cancel_edit  =  true ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( is_shortcutkey_only  & &  IsKeyPressedMap ( ImGuiKey_Z )  & &  is_editable )      {  edit_state . OnKeyPressed ( STB_TEXTEDIT_K_UNDO ) ;  edit_state . ClearSelection ( ) ;  }   
					 
					 
					 
					        else  if  ( is_shortcut_ key_only  & &  IsKeyPressedMap ( ImGuiKey_Z )  & &  is_editable )    {  edit_state . OnKeyPressed ( STB_TEXTEDIT_K_UNDO ) ;  edit_state . ClearSelection ( ) ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( is_shortcutkey_only  & &  IsKeyPressedMap ( ImGuiKey_Y )  & &  is_editable )      {  edit_state . OnKeyPressed ( STB_TEXTEDIT_K_REDO ) ;  edit_state . ClearSelection ( ) ;  }   
					 
					 
					 
					        else  if  ( is_shortcut_ key_only  & &  IsKeyPressedMap ( ImGuiKey_Y )  & &  is_editable )    {  edit_state . OnKeyPressed ( STB_TEXTEDIT_K_REDO ) ;  edit_state . ClearSelection ( ) ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( is_shortcutkey_only  & &  IsKeyPressedMap ( ImGuiKey_A ) )                     {  edit_state . SelectAll ( ) ;  edit_state . CursorFollow  =  true ;  }   
					 
					 
					 
					        else  if  ( is_shortcut_ key_only  & &  IsKeyPressedMap ( ImGuiKey_A ) )                   {  edit_state . SelectAll ( ) ;  edit_state . CursorFollow  =  true ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( is_shortcutkey_only  & &  ! is_password  & &  ( ( IsKeyPressedMap ( ImGuiKey_X )  & &  is_editable )  | |  IsKeyPressedMap ( ImGuiKey_C ) )  & &  ( ! is_multiline  | |  edit_state . HasSelection ( ) ) )   
					 
					 
					 
					        else  if  ( is_shortcut_ key_only  & &  ! is_password  & &  ( ( IsKeyPressedMap ( ImGuiKey_X )  & &  is_editable )  | |  IsKeyPressedMap ( ImGuiKey_C ) )  & &  ( ! is_multiline  | |  edit_state . HasSelection ( ) ) )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            // Cut, Copy
   
					 
					 
					 
					            // Cut, Copy
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            const  bool  cut  =  IsKeyPressedMap ( ImGuiKey_X ) ;   
					 
					 
					 
					            const  bool  cut  =  IsKeyPressedMap ( ImGuiKey_X ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -7832,12 +7828,12 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                stb_textedit_cut ( & edit_state ,  & edit_state . StbState ) ;   
					 
					 
					 
					                stb_textedit_cut ( & edit_state ,  & edit_state . StbState ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            }   
					 
					 
					 
					            }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else  if  ( is_shortcutkey_only  & &  IsKeyPressedMap ( ImGuiKey_V )  & &  is_editable )   
					 
					 
					 
					        else  if  ( is_shortcut_ key_only  & &  IsKeyPressedMap ( ImGuiKey_V )  & &  is_editable )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            // Paste
   
					 
					 
					 
					            // Paste
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            if  ( const  char *  clipboard  =  io . GetClipboardTextFn  ?  io . GetClipboardTextFn ( )  :  NULL )   
					 
					 
					 
					            if  ( const  char *  clipboard  =  io . GetClipboardTextFn  ?  io . GetClipboardTextFn ( )  :  NULL )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            {   
					 
					 
					 
					            {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                // Remove new-line from  pasted buffer
   
					 
					 
					 
					                // Filter  pasted buffer
   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                const  int  clipboard_len  =  ( int ) strlen ( clipboard ) ;   
					 
					 
					 
					                const  int  clipboard_len  =  ( int ) strlen ( clipboard ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ImWchar *  clipboard_filtered  =  ( ImWchar * ) ImGui : : MemAlloc ( ( clipboard_len + 1 )  *  sizeof ( ImWchar ) ) ;   
					 
					 
					 
					                ImWchar *  clipboard_filtered  =  ( ImWchar * ) ImGui : : MemAlloc ( ( clipboard_len + 1 )  *  sizeof ( ImWchar ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                int  clipboard_filtered_len  =  0 ;   
					 
					 
					 
					                int  clipboard_filtered_len  =  0 ;