@ -5403,29 +5403,34 @@ static void ShowDemoWindowMisc() 
			
		
	
		
		
			
				
					
					        ImGui : : Text ( " WantSetMousePos: %d " ,  io . WantSetMousePos ) ;          ImGui : : Text ( " WantSetMousePos: %d " ,  io . WantSetMousePos ) ;   
			
		
	
		
		
			
				
					
					        ImGui : : Text ( " NavActive: %d, NavVisible: %d " ,  io . NavActive ,  io . NavVisible ) ;          ImGui : : Text ( " NavActive: %d, NavVisible: %d " ,  io . NavActive ,  io . NavVisible ) ;   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        // Display Keyboard/ Mouse state
          // Display Mouse state
   
			
				
				
			
		
	
		
		
			
				
					
					        if  ( ImGui : : TreeNode ( " Keyboard,  Mouse & Navigation  State" ) )          if  ( ImGui : : TreeNode ( " Mouse State " ) )   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					        {          {   
			
		
	
		
		
			
				
					
					            if  ( ImGui : : IsMousePosValid ( ) )              if  ( ImGui : : IsMousePosValid ( ) )   
			
		
	
		
		
			
				
					
					                ImGui : : Text ( " Mouse pos: (%g, %g) " ,  io . MousePos . x ,  io . MousePos . y ) ;                  ImGui : : Text ( " Mouse pos: (%g, %g) " ,  io . MousePos . x ,  io . MousePos . y ) ;   
			
		
	
		
		
			
				
					
					            else              else   
			
		
	
		
		
			
				
					
					                ImGui : : Text ( " Mouse pos: <INVALID> " ) ;                  ImGui : : Text ( " Mouse pos: <INVALID> " ) ;   
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Mouse delta: (%g, %g) " ,  io . MouseDelta . x ,  io . MouseDelta . y ) ;              ImGui : : Text ( " Mouse delta: (%g, %g) " ,  io . MouseDelta . x ,  io . MouseDelta . y ) ;   
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Mouse down: " ) ;      for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . MouseDown ) ;  i + + )  if  ( io . MouseDownDuration [ i ]  > =  0.0f ) {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " b%d (%.02f secs) " ,  i ,  io . MouseDownDuration [ i ] ) ;  }              ImGui : : Text ( " Mouse down: " ) ;      for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . MouseDown ) ;  i + + )  if  ( ImGui : : IsMouseDown ( i ) )       {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " b%d (%.02f secs) " ,  i ,  io . MouseDownDuration [ i ] ) ;  }   
			
				
				
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Mouse clicked: " ) ;   for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . MouseDown ) ;  i + + )  if  ( ImGui : : IsMouseClicked ( i ) )            {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " b%d " ,  i ) ;  }              ImGui : : Text ( " Mouse clicked: " ) ;   for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . MouseDown ) ;  i + + )  if  ( ImGui : : IsMouseClicked ( i ) )       {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " b%d " ,  i ) ;  }   
			
				
				
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Mouse dblclick: " ) ;  for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . MouseDown ) ;  i + + )  if  ( ImGui : : IsMouseDoubleClicked ( i ) )      {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " b%d " ,  i ) ;  }              ImGui : : Text ( " Mouse dblclick: " ) ;  for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . MouseDown ) ;  i + + )  if  ( ImGui : : IsMouseDoubleClicked ( i ) ) {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " b%d " ,  i ) ;  }   
			
				
				
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Mouse released: " ) ;  for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . MouseDown ) ;  i + + )  if  ( ImGui : : IsMouseReleased ( i ) )           {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " b%d " ,  i ) ;  }              ImGui : : Text ( " Mouse released: " ) ;  for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . MouseDown ) ;  i + + )  if  ( ImGui : : IsMouseReleased ( i ) )      {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " b%d " ,  i ) ;  }   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					            ImGui : : Text ( " Mouse wheel: %.1f " ,  io . MouseWheel ) ;              ImGui : : Text ( " Mouse wheel: %.1f " ,  io . MouseWheel ) ;   
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Pen Pressure: %.1f " ,  io . PenPressure ) ;  // Note: currently unused
   
			
		
	
		
		
			
				
					
					            ImGui : : TreePop ( ) ;   
			
		
	
		
		
			
				
					
					        }   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Keys down: " ) ;       for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . KeysDown ) ;  i + + )  if  ( io . KeysDownDuration [ i ]  > =  0.0f )      {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " %d (0x%X) (%.02f secs) " ,  i ,  i ,  io . KeysDownDuration [ i ] ) ;  }          // Display Keyboard/Mouse state
   
			
				
				
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Keys pressed: " ) ;    for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . KeysDown ) ;  i + + )  if  ( ImGui : : IsKeyPressed ( i ) )              {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " %d (0x%X) " ,  i ,  i ) ;  }          if  ( ImGui : : TreeNode ( " Keyboard & Navigation State " ) )   
			
				
				
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Keys release: " ) ;    for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . KeysDown ) ;  i + + )  if  ( ImGui : : IsKeyReleased ( i ) )             {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " %d (0x%X) " ,  i ,  i ) ;  }          {   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					            ImGui : : Text ( " Keys down: " ) ;           for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . KeysDown ) ;  i + + )  if  ( ImGui : : IsKeyDown ( i ) )         {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " %d (0x%X) (%.02f secs) " ,  i ,  i ,  io . KeysDownDuration [ i ] ) ;  }   
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Keys pressed: " ) ;        for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . KeysDown ) ;  i + + )  if  ( ImGui : : IsKeyPressed ( i ) )      {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " %d (0x%X) " ,  i ,  i ) ;  }   
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Keys release: " ) ;        for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . KeysDown ) ;  i + + )  if  ( ImGui : : IsKeyReleased ( i ) )     {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " %d (0x%X) " ,  i ,  i ) ;  }   
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Keys mods: %s%s%s%s " ,  io . KeyCtrl  ?  " CTRL  "  :  " " ,  io . KeyShift  ?  " SHIFT  "  :  " " ,  io . KeyAlt  ?  " ALT  "  :  " " ,  io . KeySuper  ?  " SUPER  "  :  " " ) ;              ImGui : : Text ( " Keys mods: %s%s%s%s " ,  io . KeyCtrl  ?  " CTRL  "  :  " " ,  io . KeyShift  ?  " SHIFT  "  :  " " ,  io . KeyAlt  ?  " ALT  "  :  " " ,  io . KeySuper  ?  " SUPER  "  :  " " ) ;   
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " Chars queue: " ) ;     for  ( int  i  =  0 ;  i  <  io . InputQueueCharacters . Size ;  i + + )  {  ImWchar  c  =  io . InputQueueCharacters [ i ] ;  ImGui : : SameLine ( ) ;   ImGui : : Text ( " \' %c \'  (0x%04X) " ,  ( c  >  '   '  & &  c  < =  255 )  ?  ( char ) c  :  ' ? ' ,  c ) ;  }  // FIXME: We should convert 'c' to UTF-8 here but the functions are not public.
              ImGui : : Text ( " Chars queue: " ) ;          for  ( int  i  =  0 ;  i  <  io . InputQueueCharacters . Size ;  i + + )  {  ImWchar  c  =  io . InputQueueCharacters [ i ] ;  ImGui : : SameLine ( ) ;   ImGui : : Text ( " \' %c \'  (0x%04X) " ,  ( c  >  '   '  & &  c  < =  255 )  ?  ( char ) c  :  ' ? ' ,  c ) ;  }  // FIXME: We should convert 'c' to UTF-8 here but the functions are not public.
   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " NavInputs down: " ) ;      for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . NavInputs ) ;  i + + )  if  ( io . NavInputs [ i ]  >  0.0f )               {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " [%d] %.2f " ,  i ,  io . NavInputs [ i ] ) ;  }              ImGui : : Text ( " NavInputs down: " ) ;      for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . NavInputs ) ;  i + + )  if  ( io . NavInputs [ i ]  >  0.0f )               {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " [%d] %.2f (%.02f secs)  " ,  i ,  io . NavInputs [ i ] ,  io . NavInputsDownDuration [ i ] ) ;  }   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					            ImGui : : Text ( " NavInputs pressed: " ) ;   for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . NavInputs ) ;  i + + )  if  ( io . NavInputsDownDuration [ i ]  = =  0.0f )  {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " [%d] " ,  i ) ;  }              ImGui : : Text ( " NavInputs pressed: " ) ;   for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . NavInputs ) ;  i + + )  if  ( io . NavInputsDownDuration [ i ]  = =  0.0f )  {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " [%d] " ,  i ) ;  }   
			
		
	
		
		
			
				
					
					            ImGui : : Text ( " NavInputs duration: " ) ;  for  ( int  i  =  0 ;  i  <  IM_ARRAYSIZE ( io . NavInputs ) ;  i + + )  if  ( io . NavInputsDownDuration [ i ]  > =  0.0f )  {  ImGui : : SameLine ( ) ;  ImGui : : Text ( " [%d] %.2f " ,  i ,  io . NavInputsDownDuration [ i ] ) ;  }   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					            ImGui : : Button ( " Hovering me sets the \n keyboard capture flag " ) ;              ImGui : : Button ( " Hovering me sets the \n keyboard capture flag " ) ;   
			
		
	
		
		
			
				
					
					            if  ( ImGui : : IsItemHovered ( ) )              if  ( ImGui : : IsItemHovered ( ) )   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -5434,7 +5439,6 @@ static void ShowDemoWindowMisc() 
			
		
	
		
		
			
				
					
					            ImGui : : Button ( " Holding me clears the \n the keyboard capture flag " ) ;              ImGui : : Button ( " Holding me clears the \n the keyboard capture flag " ) ;   
			
		
	
		
		
			
				
					
					            if  ( ImGui : : IsItemActive ( ) )              if  ( ImGui : : IsItemActive ( ) )   
			
		
	
		
		
			
				
					
					                ImGui : : CaptureKeyboardFromApp ( false ) ;                  ImGui : : CaptureKeyboardFromApp ( false ) ;   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					            ImGui : : TreePop ( ) ;              ImGui : : TreePop ( ) ;   
			
		
	
		
		
			
				
					
					        }          }