@@ -40,9 +40,15 @@ public A2SEvent(AWTEvent e) {
4040 public void run () {
4141 Event e = this .e ;
4242 Component target = (Component ) this .target ;
43- if (target instanceof Container )
43+ if (target instanceof Container ) {
4444 target = ((Container )target ).getMouseEventTarget (e .x , e .y , true , null , false );
45-
45+ Component parent = target ;
46+ while (parent != null && parent != this .target ) {
47+ e .x -= parent .getX ();
48+ e .y -= parent .getY ();
49+ parent = parent .getParent ();
50+ }
51+ }
4652
4753 /**
4854 * Otherwise the states have not changed
@@ -104,74 +110,69 @@ static int getOldEventKey(KeyEvent e) {
104110 };
105111
106112
107- /**
108- * Converts a new event to an old one (used for compatibility).
109- * If the new event cannot be converted (because no old equivalent
110- * exists) then this returns null.
111- *
112- * Note: this method is here instead of in each individual new
113- * event class in java.awt.event because we don't want to make
114- * it public and it needs to be called from java.awt.
115- */
116- static Event convertToOld (AWTEvent e ) {
117- Object src = e .getSource ();
118- int id = e .getID ();
119- int newid = id ;
113+ /**
114+ * Converts a new event to an old one (used for compatibility). If the new event
115+ * cannot be converted (because no old equivalent exists) then this returns
116+ * null.
117+ *
118+ * Note: this method is here instead of in each individual new event class in
119+ * java.awt.event because we don't want to make it public and it needs to be
120+ * called from java.awt.
121+ */
122+ static Event convertToOld (AWTEvent e ) {
123+ Object src = e .getSource ();
124+ int id = e .getID ();
125+ int newid = id ;
120126
121- switch (id ) {
122- case KeyEvent .KEY_PRESSED :
123- case KeyEvent .KEY_RELEASED :
124- KeyEvent ke = (KeyEvent )e ;
125- if (ke .isActionKey ()) {
126- newid = (id == KeyEvent .KEY_PRESSED ?
127- Event .KEY_ACTION : Event .KEY_ACTION_RELEASE );
128- }
129- int keyCode = ke .getKeyCode ();
130- if (keyCode == KeyEvent .VK_SHIFT ||
131- keyCode == KeyEvent .VK_CONTROL ||
132- keyCode == KeyEvent .VK_ALT ) {
133- return null ; // suppress modifier keys in old event model.
134- }
135- // no mask for button1 existed in old Event - strip it out
136- return new Event (src , ke .getWhen (), newid , 0 , 0 ,
137- getOldEventKey (ke ),
138- (ke .getModifiers () & ~InputEvent .BUTTON1_MASK ));
127+ switch (id ) {
128+ case KeyEvent .KEY_PRESSED :
129+ case KeyEvent .KEY_RELEASED :
130+ KeyEvent ke = (KeyEvent ) e ;
131+ if (ke .isActionKey ()) {
132+ newid = (id == KeyEvent .KEY_PRESSED ? Event .KEY_ACTION : Event .KEY_ACTION_RELEASE );
133+ }
134+ int keyCode = ke .getKeyCode ();
135+ if (keyCode == KeyEvent .VK_SHIFT || keyCode == KeyEvent .VK_CONTROL || keyCode == KeyEvent .VK_ALT ) {
136+ return null ; // suppress modifier keys in old event model.
137+ }
138+ // no mask for button1 existed in old Event - strip it out
139+ return new Event (src , ke .getWhen (), newid , 0 , 0 , getOldEventKey (ke ),
140+ (ke .getModifiers () & ~InputEvent .BUTTON1_MASK ));
139141
140- case MouseEvent .MOUSE_CLICKED :
141- case MouseEvent .MOUSE_PRESSED :
142- case MouseEvent .MOUSE_RELEASED :
143- case MouseEvent .MOUSE_MOVED :
144- case MouseEvent .MOUSE_DRAGGED :
145- case MouseEvent .MOUSE_ENTERED :
146- case MouseEvent .MOUSE_EXITED :
147- MouseEvent me = (MouseEvent )e ;
148- // no mask for button1 existed in old Event - strip it out
149- Event olde = new Event (src , me .getWhen (), newid ,
150- me .getX (), me .getY (), 0 ,
151- (me .getModifiers () & ~InputEvent .BUTTON1_MASK ));
152- olde .clickCount = me .getClickCount ();
153- return olde ;
142+ case MouseEvent .MOUSE_CLICKED :
143+ case MouseEvent .MOUSE_PRESSED :
144+ case MouseEvent .MOUSE_RELEASED :
145+ case MouseEvent .MOUSE_MOVED :
146+ case MouseEvent .MOUSE_DRAGGED :
147+ case MouseEvent .MOUSE_ENTERED :
148+ case MouseEvent .MOUSE_EXITED :
149+ MouseEvent me = (MouseEvent ) e ;
150+ // no mask for button1 existed in old Event - strip it out
151+ Event olde = new Event (src , me .getWhen (), newid , me .getX (), me .getY (), 0 ,
152+ (me .getModifiers () & ~InputEvent .BUTTON1_MASK ));
153+ olde .clickCount = me .getClickCount ();
154+ return olde ;
154155
155- case FocusEvent .FOCUS_GAINED :
156- return new Event (src , Event .GOT_FOCUS , null );
156+ case FocusEvent .FOCUS_GAINED :
157+ return new Event (src , Event .GOT_FOCUS , null );
157158
158- case FocusEvent .FOCUS_LOST :
159- return new Event (src , Event .LOST_FOCUS , null );
159+ case FocusEvent .FOCUS_LOST :
160+ return new Event (src , Event .LOST_FOCUS , null );
160161
161- case WindowEvent .WINDOW_CLOSING :
162- case WindowEvent .WINDOW_ICONIFIED :
163- case WindowEvent .WINDOW_DEICONIFIED :
164- return new Event (src , newid , null );
162+ case WindowEvent .WINDOW_CLOSING :
163+ case WindowEvent .WINDOW_ICONIFIED :
164+ case WindowEvent .WINDOW_DEICONIFIED :
165+ return new Event (src , newid , null );
165166
166- case ComponentEvent .COMPONENT_MOVED :
167- if (src instanceof Frame || src instanceof Dialog ) {
168- Point p = ((Component )src ).getLocation ();
169- return new Event (src , 0 , Event .WINDOW_MOVED , p .x , p .y , 0 , 0 );
170- }
171- break ;
167+ case ComponentEvent .COMPONENT_MOVED :
168+ if (src instanceof Frame || src instanceof Dialog ) {
169+ Point p = ((Component ) src ).getLocation ();
170+ return new Event (src , 0 , Event .WINDOW_MOVED , p .x , p .y , 0 , 0 );
171+ }
172+ break ;
172173
173- case ActionEvent .ACTION_PERFORMED :
174- ActionEvent ae = (ActionEvent )e ;
174+ case ActionEvent .ACTION_PERFORMED :
175+ ActionEvent ae = (ActionEvent ) e ;
175176 String cmd ;
176177 if (src instanceof AbstractButton ) {
177178 cmd = ((AbstractButton )src ).getText ();
@@ -180,58 +181,56 @@ static Event convertToOld(AWTEvent e) {
180181 } else {
181182 cmd = ae .getActionCommand ();
182183 }
183- return new Event (src , 0 , newid , 0 , 0 , 0 , ae .getModifiers (), cmd );
184+ return new Event (src , 0 , newid , 0 , 0 , 0 , ae .getModifiers (), cmd );
184185
185- case ItemEvent .ITEM_STATE_CHANGED :
186- ItemEvent ie = (ItemEvent )e ;
187- Object arg ;
188- if (src instanceof List ) {
189- newid = (ie .getStateChange () == ItemEvent .SELECTED ?
190- Event .LIST_SELECT : Event .LIST_DESELECT );
191- arg = ie .getItem ();
192- } else {
193- newid = Event .ACTION_EVENT ;
194- if (src instanceof Choice ) {
195- arg = ie .getItem ();
186+ case ItemEvent .ITEM_STATE_CHANGED :
187+ ItemEvent ie = (ItemEvent ) e ;
188+ Object arg ;
189+ if (src instanceof List ) {
190+ newid = (ie .getStateChange () == ItemEvent .SELECTED ? Event .LIST_SELECT : Event .LIST_DESELECT );
191+ arg = ie .getItem ();
192+ } else {
193+ newid = Event .ACTION_EVENT ;
194+ if (src instanceof Choice ) {
195+ arg = ie .getItem ();
196196
197- } else { // Checkbox
198- arg = Boolean .valueOf (ie .getStateChange () == ItemEvent .SELECTED );
199- }
200- }
201- return new Event (src , newid , arg );
197+ } else { // Checkbox
198+ arg = Boolean .valueOf (ie .getStateChange () == ItemEvent .SELECTED );
199+ }
200+ }
201+ return new Event (src , newid , arg );
202202
203- case AdjustmentEvent .ADJUSTMENT_VALUE_CHANGED :
204- AdjustmentEvent aje = (AdjustmentEvent )e ;
205- switch (aje .getAdjustmentType ()) {
206- case AdjustmentEvent .UNIT_INCREMENT :
207- newid = Event .SCROLL_LINE_DOWN ;
208- break ;
209- case AdjustmentEvent .UNIT_DECREMENT :
210- newid = Event .SCROLL_LINE_UP ;
211- break ;
212- case AdjustmentEvent .BLOCK_INCREMENT :
213- newid = Event .SCROLL_PAGE_DOWN ;
214- break ;
215- case AdjustmentEvent .BLOCK_DECREMENT :
216- newid = Event .SCROLL_PAGE_UP ;
217- break ;
218- case AdjustmentEvent .TRACK :
219- if (aje .getValueIsAdjusting ()) {
220- newid = Event .SCROLL_ABSOLUTE ;
221- }
222- else {
223- newid = Event .SCROLL_END ;
224- }
225- break ;
226- default :
227- return null ;
228- }
229- return new Event (src , newid , Integer .valueOf (aje .getValue ()));
203+ case AdjustmentEvent .ADJUSTMENT_VALUE_CHANGED :
204+ AdjustmentEvent aje = (AdjustmentEvent ) e ;
205+ switch (aje .getAdjustmentType ()) {
206+ case AdjustmentEvent .UNIT_INCREMENT :
207+ newid = Event .SCROLL_LINE_DOWN ;
208+ break ;
209+ case AdjustmentEvent .UNIT_DECREMENT :
210+ newid = Event .SCROLL_LINE_UP ;
211+ break ;
212+ case AdjustmentEvent .BLOCK_INCREMENT :
213+ newid = Event .SCROLL_PAGE_DOWN ;
214+ break ;
215+ case AdjustmentEvent .BLOCK_DECREMENT :
216+ newid = Event .SCROLL_PAGE_UP ;
217+ break ;
218+ case AdjustmentEvent .TRACK :
219+ if (aje .getValueIsAdjusting ()) {
220+ newid = Event .SCROLL_ABSOLUTE ;
221+ } else {
222+ newid = Event .SCROLL_END ;
223+ }
224+ break ;
225+ default :
226+ return null ;
227+ }
228+ return new Event (src , newid , Integer .valueOf (aje .getValue ()));
230229
231- default :
232- }
233- return null ;
234- }
230+ default :
231+ }
232+ return null ;
233+ }
235234
236235 public static Component addListener (JComponent container , Component comp ) {
237236 A2SContainer top = (container == null ? null : ((A2SContainer ) container .getTopLevelAncestor ()));
0 commit comments