From bd6e8a1025d868d70572740f7338828ec688376f Mon Sep 17 00:00:00 2001 From: uta Date: Wed, 14 Apr 2010 15:28:37 +0400 Subject: [PATCH] 6920842: Wheel events do not bubbling to the browser if they was not treated in applet. Reviewed-by: art, anthony, peterz --- src/share/classes/java/awt/Component.java | 6 +++++- src/share/classes/java/awt/Container.java | 11 ++++++++++- .../javax/swing/plaf/basic/BasicScrollPaneUI.java | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/share/classes/java/awt/Component.java b/src/share/classes/java/awt/Component.java index 702d81b8f..6fd49ce1a 100644 --- a/src/share/classes/java/awt/Component.java +++ b/src/share/classes/java/awt/Component.java @@ -4941,9 +4941,13 @@ public abstract class Component implements ImageObserver, MenuContainer, // If we dispatch the event to toplevel ancestor, // this could encolse the loop: 6480024. anc.dispatchEventToSelf(newMWE); + if (newMWE.isConsumed()) { + e.consume(); + } + return true; } } - return true; + return false; } boolean checkWindowClosingException() { diff --git a/src/share/classes/java/awt/Container.java b/src/share/classes/java/awt/Container.java index 94273ade4..5a8e3a22d 100644 --- a/src/share/classes/java/awt/Container.java +++ b/src/share/classes/java/awt/Container.java @@ -4492,7 +4492,10 @@ class LightweightDispatcher implements java.io.Serializable, AWTEventListener { retargetMouseEvent(mouseOver, id, e); break; } - e.consume(); + //Consuming of wheel events is implemented in "retargetMouseEvent". + if (id != MouseEvent.MOUSE_WHEEL) { + e.consume(); + } } return e.isConsumed(); } @@ -4800,6 +4803,12 @@ class LightweightDispatcher implements java.io.Serializable, AWTEventListener { target.dispatchEvent(retargeted); } } + if (id == MouseEvent.MOUSE_WHEEL && retargeted.isConsumed()) { + //An exception for wheel bubbling to the native system. + //In "processMouseEvent" total event consuming for wheel events is skipped. + //Protection from bubbling of Java-accepted wheel events. + e.consume(); + } } } diff --git a/src/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java b/src/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java index ec33129c3..e1e81861c 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java @@ -870,6 +870,8 @@ public class BasicScrollPaneUI orientation = SwingConstants.HORIZONTAL; } + e.consume(); + if (e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL) { JViewport vp = scrollpane.getViewport(); if (vp == null) { return; } -- GitLab