@@ -713,16 +713,11 @@ public void handleMouseScroll(double mouseX, double mouseY, double delta)
713713 if (handlePopupMouseScroll (mouseX , mouseY , delta ))
714714 return ;
715715
716- int dWheel = (int )delta * 4 ;
717- if (dWheel == 0 )
718- return ;
719-
720716 for (int i = windows .size () - 1 ; i >= 0 ; i --)
721717 {
722718 Window window = windows .get (i );
723719
724- if (!window .isScrollingEnabled () || window .isMinimized ()
725- || window .isInvisible ())
720+ if (window .isMinimized () || window .isInvisible ())
726721 continue ;
727722
728723 if (mouseX < window .getX () || mouseY < window .getY () + 13 )
@@ -731,6 +726,19 @@ public void handleMouseScroll(double mouseX, double mouseY, double delta)
731726 || mouseY >= window .getY () + window .getHeight ())
732727 continue ;
733728
729+ if (handleWindowComponentMouseScroll (window , mouseX , mouseY , delta ))
730+ {
731+ closeInvalidPopups ();
732+ break ;
733+ }
734+
735+ int dWheel = (int )delta * 4 ;
736+ if (dWheel == 0 )
737+ return ;
738+
739+ if (!window .isScrollingEnabled ())
740+ continue ;
741+
734742 int scroll = window .getScrollOffset () + dWheel ;
735743 scroll = Math .min (scroll , 0 );
736744 scroll = Math .max (scroll ,
@@ -751,17 +759,13 @@ public boolean handlePinnedMouseScroll(double mouseX, double mouseY,
751759 if (handlePinnedPopupMouseScroll (mouseX , mouseY , delta ))
752760 return true ;
753761
754- int dWheel = (int )delta * 4 ;
755- if (dWheel == 0 )
756- return false ;
757-
758762 for (int i = windows .size () - 1 ; i >= 0 ; i --)
759763 {
760764 Window window = windows .get (i );
761765 if (!window .isPinned () || window .isInvisible ())
762766 continue ;
763767
764- if (! window . isScrollingEnabled () || window .isMinimized ())
768+ if (window .isMinimized ())
765769 continue ;
766770
767771 if (mouseX < window .getX () || mouseY < window .getY () + 13 )
@@ -770,6 +774,19 @@ public boolean handlePinnedMouseScroll(double mouseX, double mouseY,
770774 || mouseY >= window .getY () + window .getHeight ())
771775 continue ;
772776
777+ if (handleWindowComponentMouseScroll (window , mouseX , mouseY , delta ))
778+ {
779+ closeInvalidPopups ();
780+ return true ;
781+ }
782+
783+ int dWheel = (int )delta * 4 ;
784+ if (dWheel == 0 )
785+ return false ;
786+
787+ if (!window .isScrollingEnabled ())
788+ continue ;
789+
773790 int scroll = window .getScrollOffset () + dWheel ;
774791 scroll = Math .min (scroll , 0 );
775792 scroll = Math .max (scroll ,
@@ -1318,6 +1335,20 @@ private void handleComponentMouseClick(Window window, double mouseX,
13181335 }
13191336 }
13201337
1338+ private boolean handleWindowComponentMouseScroll (Window window ,
1339+ double mouseX , double mouseY , double delta )
1340+ {
1341+ window .validate ();
1342+
1343+ int cMouseX = (int )(mouseX - window .getX ());
1344+ int cMouseY = (int )(mouseY - window .getY () - 13 );
1345+ if (window .isScrollingEnabled ())
1346+ cMouseY -= window .getScrollOffset ();
1347+
1348+ return handleNavigatorComponentMouseScroll (cMouseX , cMouseY , delta ,
1349+ window );
1350+ }
1351+
13211352 public void extractRenderState (GuiGraphicsExtractor context , int mouseX ,
13221353 int mouseY , float partialTicks )
13231354 {
0 commit comments