# HG changeset patch # User yan # Date 1212141760 25200 # Node ID f8bf65e95e8c872f8fc71bc922663de079b20981 # Parent 8850388e2e168713445ae1ed6e57dfd855792886# Parent 69a80895db217e9789a861ef756bb9cdf150d073 Merge diff -r 8850388e2e16 -r f8bf65e95e8c jdk/src/share/classes/java/awt/Component.java --- a/jdk/src/share/classes/java/awt/Component.java Tue May 27 17:18:01 2008 -0700 +++ b/jdk/src/share/classes/java/awt/Component.java Fri May 30 03:02:40 2008 -0700 @@ -3057,10 +3057,24 @@ // services. Additionally, the request is restricted to // the bounds of the component. if (parent != null) { - int px = this.x + ((x < 0) ? 0 : x); - int py = this.y + ((y < 0) ? 0 : y); + if (x < 0) { + width += x; + x = 0; + } + if (y < 0) { + height += y; + y = 0; + } + int pwidth = (width > this.width) ? this.width : width; int pheight = (height > this.height) ? this.height : height; + + if (pwidth <= 0 || pheight <= 0) { + return; + } + + int px = this.x + x; + int py = this.y + y; parent.repaint(tm, px, py, pwidth, pheight); } } else { diff -r 8850388e2e16 -r f8bf65e95e8c jdk/src/share/classes/java/awt/dnd/DragSourceContext.java --- a/jdk/src/share/classes/java/awt/dnd/DragSourceContext.java Tue May 27 17:18:01 2008 -0700 +++ b/jdk/src/share/classes/java/awt/dnd/DragSourceContext.java Fri May 30 03:02:40 2008 -0700 @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -485,7 +485,6 @@ Cursor c = null; - targetAct = DnDConstants.ACTION_NONE; switch (status) { case ENTER: case OVER: @@ -507,6 +506,10 @@ else c = DragSource.DefaultCopyDrop; } + break; + default: + targetAct = DnDConstants.ACTION_NONE; + } setCursorImpl(c); diff -r 8850388e2e16 -r f8bf65e95e8c jdk/src/windows/native/sun/windows/awt_Component.cpp --- a/jdk/src/windows/native/sun/windows/awt_Component.cpp Tue May 27 17:18:01 2008 -0700 +++ b/jdk/src/windows/native/sun/windows/awt_Component.cpp Fri May 30 03:02:40 2008 -0700 @@ -3464,6 +3464,21 @@ return java_awt_event_KeyEvent_VK_UNDEFINED; } +BOOL AwtComponent::IsNavigationKey(UINT wkey) { + switch (wkey) { + case VK_END: + case VK_PRIOR: // PageUp + case VK_NEXT: // PageDown + case VK_HOME: + case VK_LEFT: + case VK_UP: + case VK_RIGHT: + case VK_DOWN: + return TRUE; + } + return FALSE; +} + // determine if a key is a numpad key (distinguishes the numpad // arrow keys from the non-numpad arrow keys, for example). BOOL AwtComponent::IsNumPadKey(UINT vkey, BOOL extended) @@ -3563,7 +3578,10 @@ // fix for 4623376,4737679,4501485,4740906,4708221 (4173679/4122715) // Here we try to resolve a conflict with ::ToAsciiEx's translating // ALT+number key combinations. kdm@sarc.spb.su - keyboardState[VK_MENU] &= ~KEY_STATE_DOWN; + // yan: Do it for navigation keys only, otherwise some AltGr deadkeys fail. + if( IsNavigationKey(wkey) ) { + keyboardState[VK_MENU] &= ~KEY_STATE_DOWN; + } if (ctrlIsDown) { diff -r 8850388e2e16 -r f8bf65e95e8c jdk/src/windows/native/sun/windows/awt_Component.h --- a/jdk/src/windows/native/sun/windows/awt_Component.h Tue May 27 17:18:01 2008 -0700 +++ b/jdk/src/windows/native/sun/windows/awt_Component.h Fri May 30 03:02:40 2008 -0700 @@ -823,6 +823,7 @@ private: AwtComponent* SearchChild(UINT id); void RemoveChild(UINT id) ; + static BOOL IsNavigationKey(UINT wkey); ChildListItem* m_childList;