@@ -517,7 +517,6 @@ public void RenderTileGrid()
517517 /// </summary>
518518 public void RenderHoverAndSelection ( )
519519 {
520- int lastHoveredTile = HoveredTile ;
521520 TileEventArgs hoverChangedArgs = null ;
522521
523522 // Determine hovered tile
@@ -552,9 +551,6 @@ public void RenderHoverAndSelection()
552551 }
553552 }
554553
555- if ( HoveredTile != lastHoveredTile )
556- hoverChangedArgs = new TileEventArgs ( HoveredTile ) ;
557-
558554 bool isMousePosValid = isHovered && mouseIndex != - 1 && draggingTileIndex == - 1 ;
559555 bool selectingRectangleThisFrame = SelectingRectangle ;
560556
@@ -595,15 +591,13 @@ public void RenderHoverAndSelection()
595591 activeRectSelectAction = action ;
596592 rectSelectStart = mouseIndex ;
597593 rectSelectEnd = mouseIndex ;
598- hoverChangedArgs = new ( rectSelectStart , rectSelectEnd ) ;
599594 }
600595 else
601596 {
602597 // Button still being held
603598 if ( mouseIndex != - 1 )
604599 {
605600 rectSelectEnd = mouseIndex ;
606- hoverChangedArgs = new ( rectSelectStart , rectSelectEnd ) ;
607601 }
608602
609603 // If clicked the alternate button, cancel the rectangle selection without doing anything
@@ -669,34 +663,42 @@ public void RenderHoverAndSelection()
669663 RenderBrushPreview ( ) ;
670664
671665 FRect hoverRect = null ;
672- int hoverBottomRightTile = - 1 ;
666+ int hoverTile1 = - 1 ;
667+ int hoverTile2 = - 1 ;
673668
674- if ( isMousePosValid && ! SelectingRectangle )
669+ if ( SelectingRectangle )
670+ {
671+ // Draw hover rectangle (currently actively selecting a rectangle)
672+ hoverTile1 = rectSelectStart ;
673+ hoverTile2 = rectSelectEnd ;
674+ hoverRect = TileRangeRect ( rectSelectStart , rectSelectEnd ) ;
675+ base . AddRect ( hoverRect , SelectColor , RectThickness * ImGuiX . ScaleUnit ) ;
676+ }
677+ else if ( isMousePosValid )
675678 {
676- // Draw hover rectangle
679+ // Draw hover rectangle (based on brush size)
677680 int hoverX = mouseIndex % Width ;
678681 int hoverY = mouseIndex / Width ;
679- hoverBottomRightTile = XYToTile (
682+ hoverTile1 = mouseIndex ;
683+ hoverTile2 = XYToTile (
680684 hoverX + hoverWidth - 1 ,
681685 hoverY + hoverHeight - 1 ,
682686 clamp : true ) ;
683- hoverRect = TileRangeRect ( mouseIndex , hoverBottomRightTile ) ;
687+ hoverRect = TileRangeRect ( mouseIndex , hoverTile2 ) ;
684688 base . AddRect ( hoverRect , HoverColor , thickness : RectThickness * ImGuiX . ScaleUnit ) ;
685689 }
686690
687691 if ( hoverRect != lastHoverRect )
688692 {
689693 if ( hoverRect == null )
690694 hoverChangedArgs = new ( - 1 ) ;
691- else if ( hoverWidth == 1 && hoverHeight == 1 )
692- hoverChangedArgs = new ( mouseIndex ) ;
693695 else
694- hoverChangedArgs = new ( mouseIndex , hoverBottomRightTile ) ;
696+ hoverChangedArgs = new ( hoverTile1 , hoverTile2 ) ;
695697 }
696698
697699 lastHoverRect = hoverRect ;
698700
699- if ( RectangleSelected || SelectingRectangle )
701+ if ( RectangleSelected )
700702 {
701703 // Draw rectangle selection range
702704 base . AddRect ( TileRangeRect ( rectSelectStart , rectSelectEnd ) , SelectColor , RectThickness * ImGuiX . ScaleUnit ) ;
0 commit comments