File tree Expand file tree Collapse file tree
src/ImGui.NET.SampleProgram Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -332,13 +332,34 @@ private void UpdateImGuiInput(InputSnapshot snapshot)
332332
333333 Vector2 mousePosition = snapshot . MousePosition ;
334334
335- io . MousePos = mousePosition ;
336- io . MouseDown [ 0 ] = snapshot . IsMouseDown ( MouseButton . Left ) ;
337- io . MouseDown [ 1 ] = snapshot . IsMouseDown ( MouseButton . Right ) ;
338- io . MouseDown [ 2 ] = snapshot . IsMouseDown ( MouseButton . Middle ) ;
335+ // Determine if any of the mouse buttons were pressed during this snapshot period, even if they are no longer held.
336+ bool leftPressed = false ;
337+ bool middlePressed = false ;
338+ bool rightPressed = false ;
339+ foreach ( MouseEvent me in snapshot . MouseEvents )
340+ {
341+ if ( me . Down )
342+ {
343+ switch ( me . MouseButton )
344+ {
345+ case MouseButton . Left :
346+ leftPressed = true ;
347+ break ;
348+ case MouseButton . Middle :
349+ middlePressed = true ;
350+ break ;
351+ case MouseButton . Right :
352+ rightPressed = true ;
353+ break ;
354+ }
355+ }
356+ }
339357
340- float delta = snapshot . WheelDelta ;
341- io . MouseWheel = delta ;
358+ io . MouseDown [ 0 ] = leftPressed || snapshot . IsMouseDown ( MouseButton . Left ) ;
359+ io . MouseDown [ 1 ] = middlePressed || snapshot . IsMouseDown ( MouseButton . Right ) ;
360+ io . MouseDown [ 2 ] = rightPressed || snapshot . IsMouseDown ( MouseButton . Middle ) ;
361+ io . MousePos = mousePosition ;
362+ io . MouseWheel = snapshot . WheelDelta ;
342363
343364 IReadOnlyList < char > keyCharPresses = snapshot . KeyCharPresses ;
344365 for ( int i = 0 ; i < keyCharPresses . Count ; i ++ )
You can’t perform that action at this time.
0 commit comments