@@ -704,16 +704,11 @@ public void handleMouseScroll(double mouseX, double mouseY, double delta)
704704 if (handlePopupMouseScroll (mouseX , mouseY , delta ))
705705 return ;
706706
707- int dWheel = (int )delta * 4 ;
708- if (dWheel == 0 )
709- return ;
710-
711707 for (int i = windows .size () - 1 ; i >= 0 ; i --)
712708 {
713709 Window window = windows .get (i );
714710
715- if (!window .isScrollingEnabled () || window .isMinimized ()
716- || window .isInvisible ())
711+ if (window .isMinimized () || window .isInvisible ())
717712 continue ;
718713
719714 if (mouseX < window .getX () || mouseY < window .getY () + 13 )
@@ -722,6 +717,19 @@ public void handleMouseScroll(double mouseX, double mouseY, double delta)
722717 || mouseY >= window .getY () + window .getHeight ())
723718 continue ;
724719
720+ if (handleWindowComponentMouseScroll (window , mouseX , mouseY , delta ))
721+ {
722+ closeInvalidPopups ();
723+ break ;
724+ }
725+
726+ int dWheel = (int )delta * 4 ;
727+ if (dWheel == 0 )
728+ return ;
729+
730+ if (!window .isScrollingEnabled ())
731+ continue ;
732+
725733 int scroll = window .getScrollOffset () + dWheel ;
726734 scroll = Math .min (scroll , 0 );
727735 scroll = Math .max (scroll ,
@@ -742,17 +750,13 @@ public boolean handlePinnedMouseScroll(double mouseX, double mouseY,
742750 if (handlePinnedPopupMouseScroll (mouseX , mouseY , delta ))
743751 return true ;
744752
745- int dWheel = (int )delta * 4 ;
746- if (dWheel == 0 )
747- return false ;
748-
749753 for (int i = windows .size () - 1 ; i >= 0 ; i --)
750754 {
751755 Window window = windows .get (i );
752756 if (!window .isPinned () || window .isInvisible ())
753757 continue ;
754758
755- if (! window . isScrollingEnabled () || window .isMinimized ())
759+ if (window .isMinimized ())
756760 continue ;
757761
758762 if (mouseX < window .getX () || mouseY < window .getY () + 13 )
@@ -761,6 +765,19 @@ public boolean handlePinnedMouseScroll(double mouseX, double mouseY,
761765 || mouseY >= window .getY () + window .getHeight ())
762766 continue ;
763767
768+ if (handleWindowComponentMouseScroll (window , mouseX , mouseY , delta ))
769+ {
770+ closeInvalidPopups ();
771+ return true ;
772+ }
773+
774+ int dWheel = (int )delta * 4 ;
775+ if (dWheel == 0 )
776+ return false ;
777+
778+ if (!window .isScrollingEnabled ())
779+ continue ;
780+
764781 int scroll = window .getScrollOffset () + dWheel ;
765782 scroll = Math .min (scroll , 0 );
766783 scroll = Math .max (scroll ,
@@ -1309,6 +1326,20 @@ private void handleComponentMouseClick(Window window, double mouseX,
13091326 }
13101327 }
13111328
1329+ private boolean handleWindowComponentMouseScroll (Window window ,
1330+ double mouseX , double mouseY , double delta )
1331+ {
1332+ window .validate ();
1333+
1334+ int cMouseX = (int )(mouseX - window .getX ());
1335+ int cMouseY = (int )(mouseY - window .getY () - 13 );
1336+ if (window .isScrollingEnabled ())
1337+ cMouseY -= window .getScrollOffset ();
1338+
1339+ return handleNavigatorComponentMouseScroll (cMouseX , cMouseY , delta ,
1340+ window );
1341+ }
1342+
13121343 public void extractRenderState (GuiGraphicsExtractor context , int mouseX ,
13131344 int mouseY , float partialTicks )
13141345 {
0 commit comments