From b2b125f8a93bd33671928018eea4b8d3d2bbd147 Mon Sep 17 00:00:00 2001 From: Dmitry Cherepanov Date: Mon, 31 Mar 2008 15:41:56 +0400 Subject: [PATCH] 6508505: JComboBox collapses immediately if it is placed to embedded frame XWindowPeer should translate absolute coordinates to local Reviewed-by: son --- jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java index be679208974..c5fc7e1a7d4 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java @@ -1974,8 +1974,9 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, // So, I do not want to implement complicated logic for better retargeting. target = pressTarget.isVisible() ? pressTarget : this; xme.set_window(target.getWindow()); - xme.set_x(xme.get_x_root() - target.getX()); - xme.set_y(xme.get_y_root() - target.getY()); + Point localCoord = target.toLocal(xme.get_x_root(), xme.get_y_root()); + xme.set_x(localCoord.x); + xme.set_y(localCoord.y); } grabLog.log(Level.FINER, " - Grab event target {0}", new Object[] {target}); if (target != null) { @@ -2026,8 +2027,9 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, // see 6390326 for more information. target = pressTarget.isVisible() ? pressTarget : this; xbe.set_window(target.getWindow()); - xbe.set_x(xbe.get_x_root() - target.getX()); - xbe.set_y(xbe.get_y_root() - target.getY()); + Point localCoord = target.toLocal(xbe.get_x_root(), xbe.get_y_root()); + xbe.set_x(localCoord.x); + xbe.set_y(localCoord.y); pressTarget = this; } if (target != null && target != getContentXWindow() && target != this) {