Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
3ae07726
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
3
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3ae07726
编写于
5月 03, 2011
作者:
J
jgodinez
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
7eb62a78
9a9a5e05
变更
29
隐藏空白更改
内联
并排
Showing
29 changed file
with
446 addition
and
118 deletion
+446
-118
src/share/classes/java/awt/Component.java
src/share/classes/java/awt/Component.java
+40
-0
src/share/classes/java/awt/GraphicsDevice.java
src/share/classes/java/awt/GraphicsDevice.java
+7
-0
src/share/classes/java/awt/Toolkit.java
src/share/classes/java/awt/Toolkit.java
+27
-13
src/share/classes/javax/swing/plaf/basic/BasicSplitPaneDivider.java
...classes/javax/swing/plaf/basic/BasicSplitPaneDivider.java
+3
-3
src/share/classes/sun/awt/datatransfer/DataTransferer.java
src/share/classes/sun/awt/datatransfer/DataTransferer.java
+24
-23
src/solaris/classes/sun/awt/X11/XListPeer.java
src/solaris/classes/sun/awt/X11/XListPeer.java
+4
-1
src/windows/classes/sun/awt/windows/WDataTransferer.java
src/windows/classes/sun/awt/windows/WDataTransferer.java
+8
-1
src/windows/native/sun/windows/ObjectList.cpp
src/windows/native/sun/windows/ObjectList.cpp
+5
-2
src/windows/native/sun/windows/ObjectList.h
src/windows/native/sun/windows/ObjectList.h
+1
-1
src/windows/native/sun/windows/awt_Clipboard.cpp
src/windows/native/sun/windows/awt_Clipboard.cpp
+1
-1
src/windows/native/sun/windows/awt_Component.cpp
src/windows/native/sun/windows/awt_Component.cpp
+6
-30
src/windows/native/sun/windows/awt_DnDDS.cpp
src/windows/native/sun/windows/awt_DnDDS.cpp
+1
-1
src/windows/native/sun/windows/awt_Frame.cpp
src/windows/native/sun/windows/awt_Frame.cpp
+23
-3
src/windows/native/sun/windows/awt_Frame.h
src/windows/native/sun/windows/awt_Frame.h
+4
-5
src/windows/native/sun/windows/awt_MenuItem.cpp
src/windows/native/sun/windows/awt_MenuItem.cpp
+1
-2
src/windows/native/sun/windows/awt_Object.cpp
src/windows/native/sun/windows/awt_Object.cpp
+12
-7
src/windows/native/sun/windows/awt_Object.h
src/windows/native/sun/windows/awt_Object.h
+4
-0
src/windows/native/sun/windows/awt_Robot.cpp
src/windows/native/sun/windows/awt_Robot.cpp
+1
-2
src/windows/native/sun/windows/awt_TextComponent.cpp
src/windows/native/sun/windows/awt_TextComponent.cpp
+4
-1
src/windows/native/sun/windows/awt_Toolkit.cpp
src/windows/native/sun/windows/awt_Toolkit.cpp
+21
-5
src/windows/native/sun/windows/awt_TrayIcon.cpp
src/windows/native/sun/windows/awt_TrayIcon.cpp
+1
-2
src/windows/native/sun/windows/awtmsg.h
src/windows/native/sun/windows/awtmsg.h
+1
-0
test/java/awt/Component/Revalidate/Revalidate.java
test/java/awt/Component/Revalidate/Revalidate.java
+122
-0
test/java/awt/List/ScrollOutside/ScrollOut.java
test/java/awt/List/ScrollOutside/ScrollOut.java
+84
-0
test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion.java
.../MouseWheelEvent/InfiniteRecursion/InfiniteRecursion.java
+10
-3
test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_1.java
...ouseWheelEvent/InfiniteRecursion/InfiniteRecursion_1.java
+8
-3
test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_2.java
...ouseWheelEvent/InfiniteRecursion/InfiniteRecursion_2.java
+8
-3
test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_3.java
...ouseWheelEvent/InfiniteRecursion/InfiniteRecursion_3.java
+8
-3
test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_4.java
...ouseWheelEvent/InfiniteRecursion/InfiniteRecursion_4.java
+7
-3
未找到文件。
src/share/classes/java/awt/Component.java
浏览文件 @
3ae07726
...
...
@@ -2944,6 +2944,46 @@ public abstract class Component implements ImageObserver, MenuContainer,
}
}
/**
* Revalidates the component hierarchy up to the nearest validate root.
* <p>
* This method first invalidates the component hierarchy starting from this
* component up to the nearest validate root. Afterwards, the component
* hierarchy is validated starting from the nearest validate root.
* <p>
* This is a convenience method supposed to help application developers
* avoid looking for validate roots manually. Basically, it's equivalent to
* first calling the {@link #invalidate()} method on this component, and
* then calling the {@link #validate()} method on the nearest validate
* root.
*
* @see Container#isValidateRoot
* @since 1.7
*/
public
void
revalidate
()
{
synchronized
(
getTreeLock
())
{
invalidate
();
Container
root
=
getContainer
();
if
(
root
==
null
)
{
// There's no parents. Just validate itself.
validate
();
}
else
{
while
(!
root
.
isValidateRoot
())
{
if
(
root
.
getContainer
()
==
null
)
{
// If there's no validate roots, we'll validate the
// topmost container
break
;
}
root
=
root
.
getContainer
();
}
root
.
validate
();
}
}
}
/**
* Creates a graphics context for this component. This method will
* return <code>null</code> if this component is currently not
...
...
src/share/classes/java/awt/GraphicsDevice.java
浏览文件 @
3ae07726
...
...
@@ -257,6 +257,11 @@ public abstract class GraphicsDevice {
* 1.0f, and the background color alpha is set to 255 (completely opaque).
* These values are not restored when returning to windowed mode.
* <p>
* It is unspecified and platform-dependent how decorated windows operate
* in full-screen mode. For this reason, it is recommended to turn off
* the decorations in a {@code Frame} or {@code Dialog} object by using the
* {@code setUndecorated} method.
* <p>
* When returning to windowed mode from an exclusive full-screen window,
* any display changes made by calling {@code setDisplayMode} are
* automatically restored to their original state.
...
...
@@ -272,6 +277,8 @@ public abstract class GraphicsDevice {
* @see #setDisplayMode
* @see Component#enableInputMethods
* @see Component#setVisible
* @see Frame#setUndecorated
* @see Dialog#setUndecorated
*
* @since 1.4
*/
...
...
src/share/classes/java/awt/Toolkit.java
浏览文件 @
3ae07726
...
...
@@ -1870,11 +1870,15 @@ public abstract class Toolkit {
/**
* Adds the specified property change listener for the named desktop
* property.
* If pcl is null, no exception is thrown and no action is performed.
* property. When a {@link PropertyChangeListenerProxy} object is added,
* its property name is ignored, and the wrapped listener is added.
* If {@code name} is {@code null} or {@code pcl} is {@code null},
* no exception is thrown and no action is performed.
*
* @param name The name of the property to listen for
* @param pcl The property change listener
* @see PropertyChangeSupport#addPropertyChangeListener(String,
PropertyChangeListener)
* @since 1.2
*/
public
void
addPropertyChangeListener
(
String
name
,
PropertyChangeListener
pcl
)
{
...
...
@@ -1883,11 +1887,16 @@ public abstract class Toolkit {
/**
* Removes the specified property change listener for the named
* desktop property.
* If pcl is null, no exception is thrown and no action is performed.
* desktop property. When a {@link PropertyChangeListenerProxy} object
* is removed, its property name is ignored, and
* the wrapped listener is removed.
* If {@code name} is {@code null} or {@code pcl} is {@code null},
* no exception is thrown and no action is performed.
*
* @param name The name of the property to remove
* @param pcl The property change listener
* @see PropertyChangeSupport#removePropertyChangeListener(String,
PropertyChangeListener)
* @since 1.2
*/
public
void
removePropertyChangeListener
(
String
name
,
PropertyChangeListener
pcl
)
{
...
...
@@ -1896,12 +1905,15 @@ public abstract class Toolkit {
/**
* Returns an array of all the property change listeners
* registered on this toolkit.
* registered on this toolkit. The returned array
* contains {@code PropertyChangeListenerProxy} objects
* that associate listeners with the names of desktop properties.
*
* @return all of this toolkit's
<code>PropertyChangeListener</code>s
* o
r an empty array if no property change
*
listeners are currently register
ed
* @return all of this toolkit's
{@ code PropertyChangeListener}
* o
bjects wrapped in {@code PropertyChangeListenerProxy} objects
*
or an empty array if no listeners are add
ed
*
* @see PropertyChangeSupport#getPropertyChangeListeners()
* @since 1.4
*/
public
PropertyChangeListener
[]
getPropertyChangeListeners
()
{
...
...
@@ -1909,13 +1921,15 @@ public abstract class Toolkit {
}
/**
* Returns an array of all
the <code>PropertyChangeListener</code>
s
* associated with the
named
property.
* Returns an array of all
property change listener
s
* associated with the
specified name of a desktop
property.
*
* @param propertyName the named property
* @return all of the <code>PropertyChangeListener</code>s associated with
* the named property or an empty array if no such listeners have
* been added
* @return all of the {@code PropertyChangeListener} objects
* associated with the specified name of a desktop property
* or an empty array if no such listeners are added
*
* @see PropertyChangeSupport#getPropertyChangeListeners(String)
* @since 1.4
*/
public
PropertyChangeListener
[]
getPropertyChangeListeners
(
String
propertyName
)
{
...
...
src/share/classes/javax/swing/plaf/basic/BasicSplitPaneDivider.java
浏览文件 @
3ae07726
...
...
@@ -154,7 +154,7 @@ public class BasicSplitPaneDivider extends Container
setBackground
(
UIManager
.
getColor
(
"SplitPane.background"
));
}
private
void
revalidate
()
{
private
void
revalidate
SplitPane
()
{
invalidate
();
if
(
splitPane
!=
null
)
{
splitPane
.
revalidate
();
...
...
@@ -315,7 +315,7 @@ public class BasicSplitPaneDivider extends Container
setCursor
((
orientation
==
JSplitPane
.
HORIZONTAL_SPLIT
)
?
Cursor
.
getPredefinedCursor
(
Cursor
.
E_RESIZE_CURSOR
)
:
Cursor
.
getPredefinedCursor
(
Cursor
.
S_RESIZE_CURSOR
));
revalidate
();
revalidate
SplitPane
();
}
else
if
(
e
.
getPropertyName
()
==
JSplitPane
.
ONE_TOUCH_EXPANDABLE_PROPERTY
)
{
...
...
@@ -376,7 +376,7 @@ public class BasicSplitPaneDivider extends Container
add
(
rightButton
);
}
}
revalidate
();
revalidate
SplitPane
();
}
...
...
src/share/classes/sun/awt/datatransfer/DataTransferer.java
浏览文件 @
3ae07726
...
...
@@ -29,12 +29,10 @@ import java.awt.AWTError;
import
java.awt.EventQueue
;
import
java.awt.Image
;
import
java.awt.Graphics
;
import
java.awt.Toolkit
;
import
java.awt.datatransfer.DataFlavor
;
import
java.awt.datatransfer.FlavorMap
;
import
java.awt.datatransfer.FlavorTable
;
import
java.awt.datatransfer.StringSelection
;
import
java.awt.datatransfer.Transferable
;
import
java.awt.datatransfer.UnsupportedFlavorException
;
...
...
@@ -66,8 +64,6 @@ import java.lang.reflect.InvocationTargetException;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Modifier
;
import
java.security.AccessControlContext
;
import
java.security.AccessControlException
;
import
java.security.AccessController
;
import
java.security.PrivilegedAction
;
import
java.security.PrivilegedActionException
;
...
...
@@ -171,7 +167,26 @@ public abstract class DataTransferer {
*/
public
static
final
DataFlavor
javaTextEncodingFlavor
;
private
static
SortedSet
standardEncodings
;
/**
* Lazy initialization of Standard Encodings.
*/
private
static
class
StandardEncodingsHolder
{
private
static
final
SortedSet
standardEncodings
=
load
();
private
static
SortedSet
load
()
{
final
Comparator
comparator
=
new
CharsetComparator
(
IndexedComparator
.
SELECT_WORST
);
final
SortedSet
tempSet
=
new
TreeSet
(
comparator
);
tempSet
.
add
(
"US-ASCII"
);
tempSet
.
add
(
"ISO-8859-1"
);
tempSet
.
add
(
"UTF-8"
);
tempSet
.
add
(
"UTF-16BE"
);
tempSet
.
add
(
"UTF-16LE"
);
tempSet
.
add
(
"UTF-16"
);
tempSet
.
add
(
getDefaultTextCharset
());
return
Collections
.
unmodifiableSortedSet
(
tempSet
);
}
}
/**
* Tracks whether a particular text/* MIME type supports the charset
...
...
@@ -509,18 +524,7 @@ public abstract class DataTransferer {
* non-standard, character sets are not included.
*/
public
static
Iterator
standardEncodings
()
{
if
(
standardEncodings
==
null
)
{
TreeSet
tempSet
=
new
TreeSet
(
defaultCharsetComparator
);
tempSet
.
add
(
"US-ASCII"
);
tempSet
.
add
(
"ISO-8859-1"
);
tempSet
.
add
(
"UTF-8"
);
tempSet
.
add
(
"UTF-16BE"
);
tempSet
.
add
(
"UTF-16LE"
);
tempSet
.
add
(
"UTF-16"
);
tempSet
.
add
(
getDefaultTextCharset
());
standardEncodings
=
Collections
.
unmodifiableSortedSet
(
tempSet
);
}
return
standardEncodings
.
iterator
();
return
StandardEncodingsHolder
.
standardEncodings
.
iterator
();
}
/**
...
...
@@ -2398,7 +2402,9 @@ search:
public
static
DataFlavor
[]
setToSortedDataFlavorArray
(
Set
flavorsSet
)
{
DataFlavor
[]
flavors
=
new
DataFlavor
[
flavorsSet
.
size
()];
flavorsSet
.
toArray
(
flavors
);
Arrays
.
sort
(
flavors
,
defaultFlavorComparator
);
final
Comparator
comparator
=
new
DataFlavorComparator
(
IndexedComparator
.
SELECT_WORST
);
Arrays
.
sort
(
flavors
,
comparator
);
return
flavors
;
}
...
...
@@ -2455,11 +2461,6 @@ search:
return
new
ArrayList
();
}
private
static
CharsetComparator
defaultCharsetComparator
=
new
CharsetComparator
(
IndexedComparator
.
SELECT_WORST
);
private
static
DataFlavorComparator
defaultFlavorComparator
=
new
DataFlavorComparator
(
IndexedComparator
.
SELECT_WORST
);
/**
* A Comparator which includes a helper function for comparing two Objects
* which are likely to be keys in the specified Map.
...
...
src/solaris/classes/sun/awt/X11/XListPeer.java
浏览文件 @
3ae07726
...
...
@@ -1479,16 +1479,19 @@ class XListPeer extends XComponentPeer implements ListPeer, XScrollbarClient {
int
h
=
height
-
(
SCROLLBAR_AREA
+
(
2
*
MARGIN
));
hsb
.
setValue
(
hsb
.
getValue
()
+
x
);
int
options
=
PAINT_ITEMS
|
PAINT_HSCROLL
;
Rectangle
source
=
null
;
Point
distance
=
null
;
if
(
x
<
0
)
{
source
=
new
Rectangle
(
MARGIN
+
SPACE
,
MARGIN
,
w
+
x
,
h
);
distance
=
new
Point
(-
x
,
0
);
options
|=
COPY_AREA
;
}
else
if
(
x
>
0
)
{
source
=
new
Rectangle
(
MARGIN
+
SPACE
+
x
,
MARGIN
,
w
-
x
,
h
);
distance
=
new
Point
(-
x
,
0
);
options
|=
COPY_AREA
;
}
int
options
=
COPY_AREA
|
PAINT_ITEMS
|
PAINT_HSCROLL
;
repaint
(
vsb
.
getValue
(),
lastItemDisplayed
(),
options
,
source
,
distance
);
}
...
...
src/windows/classes/sun/awt/windows/WDataTransferer.java
浏览文件 @
3ae07726
...
...
@@ -830,7 +830,14 @@ class HTMLCodec extends InputStream {
if
(
-
1
==
iStartOffset
){
throw
new
IOException
(
FAILURE_MSG
+
"invalid HTML format."
);
}
iReadCount
=
bufferedStream
.
skip
(
iStartOffset
);
int
curOffset
=
0
;
while
(
curOffset
<
iStartOffset
){
curOffset
+=
bufferedStream
.
skip
(
iStartOffset
-
curOffset
);
}
iReadCount
=
curOffset
;
if
(
iStartOffset
!=
iReadCount
){
throw
new
IOException
(
FAILURE_MSG
+
"Byte stream ends in description."
);
}
...
...
src/windows/native/sun/windows/ObjectList.cpp
浏览文件 @
3ae07726
...
...
@@ -48,7 +48,7 @@ void AwtObjectList::Add(AwtObject* obj)
m_head
=
item
;
}
void
AwtObjectList
::
Remove
(
AwtObject
*
obj
)
BOOL
AwtObjectList
::
Remove
(
AwtObject
*
obj
)
{
CriticalSection
::
Lock
l
(
m_lock
);
...
...
@@ -64,11 +64,14 @@ void AwtObjectList::Remove(AwtObject* obj)
}
DASSERT
(
item
!=
NULL
);
delete
item
;
return
;
return
TRUE
;
}
lastItem
=
item
;
item
=
item
->
next
;
}
return
FALSE
;
// DASSERT(FALSE); // should never get here...
// even if it does it shouldn't be fatal.
}
...
...
src/windows/native/sun/windows/ObjectList.h
浏览文件 @
3ae07726
...
...
@@ -46,7 +46,7 @@ public:
AwtObjectList
();
void
Add
(
AwtObject
*
obj
);
void
Remove
(
AwtObject
*
obj
);
BOOL
Remove
(
AwtObject
*
obj
);
#ifdef DEBUG
/* Used for sanity checks only. */
AwtObject
*
LookUp
(
AwtObject
*
obj
);
...
...
src/windows/native/sun/windows/awt_Clipboard.cpp
浏览文件 @
3ae07726
...
...
@@ -294,7 +294,7 @@ Java_sun_awt_windows_WClipboard_publishClipboardData(JNIEnv *env,
if
(
format
==
CF_HDROP
)
{
DROPFILES
*
dropfiles
=
(
DROPFILES
*
)
dataout
;
dropfiles
->
pFiles
=
sizeof
(
DROPFILES
);
dropfiles
->
fWide
=
FALSE
;
// good guess!
dropfiles
->
fWide
=
TRUE
;
// we publish only Unicode
dataout
+=
sizeof
(
DROPFILES
);
}
...
...
src/windows/native/sun/windows/awt_Component.cpp
浏览文件 @
3ae07726
...
...
@@ -549,8 +549,6 @@ AwtComponent::CreateHWnd(JNIEnv *env, LPCWSTR title,
m_hwnd
=
hwnd
;
ImmAssociateContext
(
NULL
);
SetDrawState
((
jint
)
JAWT_LOCK_SURFACE_CHANGED
|
(
jint
)
JAWT_LOCK_BOUNDS_CHANGED
|
(
jint
)
JAWT_LOCK_CLIP_CHANGED
);
...
...
@@ -1203,7 +1201,7 @@ void SpyWinMessage(HWND hwnd, UINT message, LPCTSTR szComment) {
WIN_MSG
(
WM_IME_COMPOSITIONFULL
)
WIN_MSG
(
WM_IME_SELECT
)
WIN_MSG
(
WM_IME_CHAR
)
FMT_MSG
(
0x0288
,
"WM_IME_REQUEST"
)
FMT_MSG
(
WM_IME_REQUEST
)
WIN_MSG
(
WM_IME_KEYDOWN
)
WIN_MSG
(
WM_IME_KEYUP
)
FMT_MSG
(
0x02A1
,
"WM_MOUSEHOVER"
)
...
...
@@ -1733,7 +1731,7 @@ LRESULT AwtComponent::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
case
WM_IME_SELECT
:
case
WM_IME_KEYUP
:
case
WM_IME_KEYDOWN
:
case
0x0288
:
// WM_IME_REQUEST
case
WM_IME_REQUEST
:
CallProxyDefWindowProc
(
message
,
wParam
,
lParam
,
retValue
,
mr
);
break
;
case
WM_CHAR
:
...
...
@@ -1969,7 +1967,9 @@ MsgRouting AwtComponent::WmDestroy()
{
// fix for 6259348: we should enter the SyncCall critical section before
// disposing the native object, that is value 1 of lParam is intended for
AwtToolkit
::
GetInstance
().
SendMessage
(
WM_AWT_DISPOSE
,
(
WPARAM
)
this
,
(
LPARAM
)
1
);
if
(
m_peerObject
!=
NULL
)
{
// is not being terminating
AwtToolkit
::
GetInstance
().
SendMessage
(
WM_AWT_DISPOSE
,
(
WPARAM
)
m_peerObject
,
(
LPARAM
)
1
);
}
return
mrConsume
;
}
...
...
@@ -2020,25 +2020,6 @@ MsgRouting AwtComponent::WmExitMenuLoop(BOOL isTrackPopupMenu)
MsgRouting
AwtComponent
::
WmShowWindow
(
BOOL
show
,
UINT
status
)
{
// NULL-InputContext is associated to all window just after they created.
// ( see CreateHWnd() )
// But to TextField and TextArea on Win95, valid InputContext is associated
// by system after that. This is not happen on NT4.0
// For workaround, force context to NULL here.
// Fix for 4730228
// Check if we already have Java-associated input method
HIMC
context
=
0
;
if
(
m_InputMethod
!=
NULL
)
{
// If so get the appropriate context from it and use it instead of empty context
JNIEnv
*
env
=
(
JNIEnv
*
)
JNU_GetEnv
(
jvm
,
JNI_VERSION_1_2
);
context
=
(
HIMC
)(
UINT_PTR
)(
JNU_GetFieldByName
(
env
,
NULL
,
m_InputMethod
,
"context"
,
"I"
).
i
);
}
if
(
ImmGetContext
()
!=
0
&&
ImmGetContext
()
!=
context
)
{
ImmAssociateContext
(
context
);
}
return
mrDoDefault
;
}
...
...
@@ -4655,10 +4636,6 @@ void* AwtComponent::SetNativeFocusOwner(void *self) {
ret:
if
(
c
&&
::
IsWindow
(
c
->
GetHWnd
()))
{
sm_focusOwner
=
c
->
GetHWnd
();
AwtFrame
*
owner
=
(
AwtFrame
*
)
GetComponent
(
c
->
GetProxyToplevelContainer
());
if
(
owner
)
{
owner
->
SetLastProxiedFocusOwner
(
sm_focusOwner
);
}
}
else
{
sm_focusOwner
=
NULL
;
}
...
...
@@ -6534,8 +6511,7 @@ Java_sun_awt_windows_WComponentPeer__1dispose(JNIEnv *env, jobject self)
{
TRY_NO_HANG
;
PDATA
pData
=
JNI_GET_PDATA
(
self
);
AwtObject
::
_Dispose
(
pData
);
AwtObject
::
_Dispose
(
self
);
CATCH_BAD_ALLOC
;
}
...
...
src/windows/native/sun/windows/awt_DnDDS.cpp
浏览文件 @
3ae07726
...
...
@@ -843,7 +843,7 @@ HRESULT __stdcall AwtDragSource::GetData(FORMATETC __RPC_FAR *pFormatEtc,
dropfiles
->
pt
.
x
=
m_dropPoint
.
x
;
dropfiles
->
pt
.
y
=
m_dropPoint
.
y
;
dropfiles
->
fNC
=
m_fNC
;
dropfiles
->
fWide
=
TRUE
;
//
good guess!
dropfiles
->
fWide
=
TRUE
;
//
we publish only Unicode
dataout
+=
sizeof
(
DROPFILES
);
}
...
...
src/windows/native/sun/windows/awt_Frame.cpp
浏览文件 @
3ae07726
...
...
@@ -109,7 +109,7 @@ AwtFrame::AwtFrame() {
m_isMenuDropped
=
FALSE
;
m_isInputMethodWindow
=
FALSE
;
m_isUndecorated
=
FALSE
;
m_
lastProxiedFocusOwner
=
NULL
;
m_
imeTargetComponent
=
NULL
;
m_actualFocusedWindow
=
NULL
;
m_iconic
=
FALSE
;
m_zoomed
=
FALSE
;
...
...
@@ -311,6 +311,8 @@ LRESULT AwtFrame::ProxyWindowProc(UINT message, WPARAM wParam, LPARAM lParam, Ms
LRESULT
retValue
=
0L
;
AwtComponent
*
focusOwner
=
NULL
;
AwtComponent
*
imeTargetComponent
=
NULL
;
// IME and input language related messages need to be sent to a window
// which has the Java input focus
switch
(
message
)
{
...
...
@@ -323,15 +325,29 @@ LRESULT AwtFrame::ProxyWindowProc(UINT message, WPARAM wParam, LPARAM lParam, Ms
case
WM_IME_COMPOSITIONFULL
:
case
WM_IME_SELECT
:
case
WM_IME_CHAR
:
case
0x0288
:
// WM_IME_REQUEST
case
WM_IME_REQUEST
:
case
WM_IME_KEYDOWN
:
case
WM_IME_KEYUP
:
case
WM_INPUTLANGCHANGEREQUEST
:
case
WM_INPUTLANGCHANGE
:
if
(
message
==
WM_IME_STARTCOMPOSITION
)
{
SetImeTargetComponent
(
sm_focusOwner
);
}
imeTargetComponent
=
AwtComponent
::
GetComponent
(
GetImeTargetComponent
());
if
(
imeTargetComponent
!=
NULL
&&
imeTargetComponent
!=
this
)
// avoid recursive calls
{
retValue
=
imeTargetComponent
->
WindowProc
(
message
,
wParam
,
lParam
);
mr
=
mrConsume
;
}
if
(
message
==
WM_IME_ENDCOMPOSITION
)
{
SetImeTargetComponent
(
NULL
);
}
break
;
// TODO: when a Choice's list is dropped down and we're scrolling in
// the list WM_MOUSEWHEEL messages come to the poxy, not to the list. Why?
case
WM_MOUSEWHEEL
:
focusOwner
=
AwtComponent
::
GetComponent
(
GetLastProxiedFocusOwner
()
);
focusOwner
=
AwtComponent
::
GetComponent
(
sm_focusOwner
);
if
(
focusOwner
!=
NULL
&&
focusOwner
!=
this
)
// avoid recursive calls
{
...
...
@@ -340,12 +356,16 @@ LRESULT AwtFrame::ProxyWindowProc(UINT message, WPARAM wParam, LPARAM lParam, Ms
}
break
;
case
WM_SETFOCUS
:
if
(
sm_inSynthesizeFocus
)
break
;
// pass it up the WindowProc chain
if
(
!
sm_suppressFocusAndActivation
&&
IsEmbeddedFrame
())
{
AwtSetActiveWindow
();
}
mr
=
mrConsume
;
break
;
case
WM_KILLFOCUS
:
if
(
sm_inSynthesizeFocus
)
break
;
// pass it up the WindowProc chain
if
(
!
sm_suppressFocusAndActivation
&&
IsEmbeddedFrame
())
{
AwtWindow
::
SynthesizeWmActivate
(
FALSE
,
GetHWnd
(),
NULL
);
...
...
src/windows/native/sun/windows/awt_Frame.h
浏览文件 @
3ae07726
...
...
@@ -150,8 +150,8 @@ public:
void
CheckRetainActualFocusedWindow
(
HWND
activatedOpositeHWnd
);
BOOL
CheckActivateActualFocusedWindow
(
HWND
deactivatedOpositeHWnd
);
INLINE
HWND
Get
LastProxiedFocusOwner
()
{
return
m_lastProxiedFocusOwner
;
}
INLINE
void
Set
LastProxiedFocusOwner
(
HWND
hwnd
)
{
m_lastProxiedFocusOwner
=
hwnd
;
}
INLINE
HWND
Get
ImeTargetComponent
()
{
return
m_imeTargetComponent
;
}
INLINE
void
Set
ImeTargetComponent
(
HWND
hwnd
)
{
m_imeTargetComponent
=
hwnd
;
}
protected:
/* The frame is undecorated. */
...
...
@@ -179,9 +179,8 @@ private:
/* The frame is an InputMethodWindow */
BOOL
m_isInputMethodWindow
;
/* Retains the last/current sm_focusOwner proxied. Actually, it should be
* a component of an owned window last/currently active. */
HWND
m_lastProxiedFocusOwner
;
// retains the target component for the IME messages
HWND
m_imeTargetComponent
;
/*
* Fix for 4823903.
...
...
src/windows/native/sun/windows/awt_MenuItem.cpp
浏览文件 @
3ae07726
...
...
@@ -974,8 +974,7 @@ Java_sun_awt_windows_WMenuItemPeer__1dispose(JNIEnv *env, jobject self)
{
TRY_NO_HANG
;
PDATA
pData
=
JNI_GET_PDATA
(
self
);
AwtObject
::
_Dispose
(
pData
);
AwtObject
::
_Dispose
(
self
);
CATCH_BAD_ALLOC
;
}
...
...
src/windows/native/sun/windows/awt_Object.cpp
浏览文件 @
3ae07726
...
...
@@ -60,11 +60,20 @@ AwtObject::~AwtObject()
void
AwtObject
::
Dispose
()
{
theAwtObjectList
.
Remove
(
this
);
AwtToolkit
::
GetInstance
().
PostMessage
(
WM_AWT_DELETEOBJECT
,
(
WPARAM
)
this
,
(
LPARAM
)
0
);
}
void
AwtObject
::
_Dispose
(
jobject
self
)
{
TRY_NO_VERIFY
;
CriticalSection
::
Lock
l
(
AwtToolkit
::
GetInstance
().
GetSyncCS
());
// value 0 of lParam means that we should not attempt to enter the
// SyncCall critical section, as it was entered someshere earlier
AwtToolkit
::
GetInstance
().
PostMessage
(
WM_AWT_DELETEOBJECT
,
(
WPARAM
)
this
,
(
LPARAM
)
0
);
AwtToolkit
::
GetInstance
().
SendMessage
(
WM_AWT_DISPOSE
,
(
WPARAM
)
self
,
(
LPARAM
)
0
);
CATCH_BAD_ALLOC
;
}
void
AwtObject
::
_Dispose
(
PDATA
pData
)
...
...
@@ -73,14 +82,10 @@ void AwtObject::_Dispose(PDATA pData)
CriticalSection
::
Lock
l
(
AwtToolkit
::
GetInstance
().
GetSyncCS
());
if
(
pData
!=
NULL
)
{
AwtObject
*
o
=
(
AwtObject
*
)
pData
;
AwtToolkit
::
GetInstance
().
SendMessage
(
WM_AWT_DISPOSE
,
(
WPARAM
)
o
,
(
LPARAM
)
0
);
}
AwtToolkit
::
GetInstance
().
SendMessage
(
WM_AWT_DISPOSEPDATA
,
(
WPARAM
)
pData
,
(
LPARAM
)
0
);
CATCH_BAD_ALLOC
;
}
/*
* Return the peer associated with some target. This information is
* maintained in a hashtable at the java level.
...
...
src/windows/native/sun/windows/awt_Object.h
浏览文件 @
3ae07726
...
...
@@ -66,6 +66,10 @@ public:
// After this method has been called, this object must not be used in any way.
virtual
void
Dispose
();
// Static method to be called from JNI methods to dispose AwtObject
// specified by jobject
static
void
_Dispose
(
jobject
self
);
// Static method to be called from JNI methods to dispose AwtObject
// specified by pData
static
void
_Dispose
(
PDATA
pData
);
...
...
src/windows/native/sun/windows/awt_Robot.cpp
浏览文件 @
3ae07726
...
...
@@ -353,8 +353,7 @@ JNIEXPORT void JNICALL Java_sun_awt_windows_WRobotPeer__1dispose(
{
TRY_NO_VERIFY
;
PDATA
pData
=
JNI_GET_PDATA
(
self
);
AwtObject
::
_Dispose
(
pData
);
AwtObject
::
_Dispose
(
self
);
CATCH_BAD_ALLOC
;
}
...
...
src/windows/native/sun/windows/awt_TextComponent.cpp
浏览文件 @
3ae07726
...
...
@@ -191,8 +191,11 @@ void AwtTextComponent::SetCompositionWindow(RECT& rc)
{
HIMC
hIMC
=
ImmGetContext
();
// rc is not used for text component.
COMPOSITIONFORM
cf
=
{
CFS_
POINT
,
{
0
,
0
},
{
0
,
0
,
0
,
0
}
};
COMPOSITIONFORM
cf
=
{
CFS_
FORCE_POSITION
,
{
0
,
0
},
{
0
,
0
,
0
,
0
}
};
GetCaretPos
(
&
(
cf
.
ptCurrentPos
));
// the proxy is the native focus owner and it contains the composition window
// let's convert the position to a coordinate space relative to proxy
::
MapWindowPoints
(
GetHWnd
(),
GetProxyFocusOwner
(),
(
LPPOINT
)
&
cf
.
ptCurrentPos
,
1
);
ImmSetCompositionWindow
(
hIMC
,
&
cf
);
LOGFONT
lf
;
...
...
src/windows/native/sun/windows/awt_Toolkit.cpp
浏览文件 @
3ae07726
...
...
@@ -740,18 +740,34 @@ LRESULT CALLBACK AwtToolkit::WndProc(HWND hWnd, UINT message,
canDispose
=
syncCS
.
TryEnter
();
}
if
(
canDispose
)
{
AwtObject
*
o
=
(
AwtObject
*
)
wParam
;
o
->
Dispose
();
if
(
shouldEnterCriticalSection
)
{
syncCS
.
Leave
();
if
(
wParam
!=
NULL
)
{
AwtObject
*
o
=
(
AwtObject
*
)
JNI_GET_PDATA
((
jobject
)
wParam
);
if
(
o
!=
NULL
&&
theAwtObjectList
.
Remove
(
o
))
{
o
->
Dispose
();
}
if
(
shouldEnterCriticalSection
)
{
syncCS
.
Leave
();
}
}
}
else
{
AwtToolkit
::
GetInstance
().
PostMessage
(
WM_AWT_DISPOSE
,
wParam
,
lParam
);
}
return
0
;
}
case
WM_AWT_DISPOSEPDATA
:
{
/*
* NOTE: synchronization routine (like in WM_AWT_DISPOSE) was omitted because
* this handler is called ONLY while disposing Cursor and Font objects where
* synchronization takes place.
*/
AwtObject
*
o
=
(
AwtObject
*
)
wParam
;
if
(
o
!=
NULL
&&
theAwtObjectList
.
Remove
(
o
))
{
o
->
Dispose
();
}
return
0
;
}
case
WM_AWT_DELETEOBJECT
:
{
AwtObject
*
p
=
(
AwtObject
*
)
wParam
;
AwtObject
*
p
=
(
AwtObject
*
)
wParam
;
if
(
p
->
CanBeDeleted
())
{
// all the messages for this component are processed, so
// it can be deleted
...
...
src/windows/native/sun/windows/awt_TrayIcon.cpp
浏览文件 @
3ae07726
...
...
@@ -926,8 +926,7 @@ Java_sun_awt_windows_WTrayIconPeer__1dispose(JNIEnv *env, jobject self)
{
TRY
;
PDATA
pData
=
JNI_GET_PDATA
(
self
);
AwtObject
::
_Dispose
(
pData
);
AwtObject
::
_Dispose
(
self
);
CATCH_BAD_ALLOC
;
}
...
...
src/windows/native/sun/windows/awtmsg.h
浏览文件 @
3ae07726
...
...
@@ -219,6 +219,7 @@ enum {
WM_AWT_ENDCOMPOSITION
,
WM_AWT_DISPOSE
,
WM_AWT_DISPOSEPDATA
,
WM_AWT_DELETEOBJECT
,
WM_AWT_SETCONVERSIONSTATUS
,
WM_AWT_GETCONVERSIONSTATUS
,
...
...
test/java/awt/Component/Revalidate/Revalidate.java
0 → 100644
浏览文件 @
3ae07726
/*
* Copyright (c) 2011, Oracle and/or its affiliates. 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
@test
@bug 7036669
@summary Test Component.revalidate() method
@author anthony.petrov@oracle.com: area=awt.component
@run main Revalidate
*/
import
java.awt.*
;
public
class
Revalidate
{
private
static
Frame
frame
=
new
Frame
();
private
static
Panel
panel
=
new
Panel
()
{
@Override
public
boolean
isValidateRoot
()
{
return
true
;
}
};
private
static
Button
button
=
new
Button
(
"Test"
);
private
static
void
sleep
()
{
try
{
Thread
.
sleep
(
500
);
}
catch
(
Exception
e
)
{}
}
private
static
void
printState
(
String
str
)
{
System
.
out
.
println
(
str
+
" isValid state: "
);
System
.
out
.
println
(
" frame: "
+
frame
.
isValid
());
System
.
out
.
println
(
" panel: "
+
panel
.
isValid
());
System
.
out
.
println
(
" button: "
+
button
.
isValid
());
}
private
static
void
fail
(
String
msg
)
{
frame
.
dispose
();
throw
new
RuntimeException
(
msg
);
}
private
static
void
check
(
String
n
,
Component
c
,
boolean
v
)
{
if
(
c
.
isValid
()
!=
v
)
{
fail
(
n
+
".isValid() = "
+
c
.
isValid
()
+
"; expected: "
+
v
);
}
}
private
static
void
check
(
String
str
,
boolean
f
,
boolean
p
,
boolean
b
)
{
printState
(
str
);
check
(
"frame"
,
frame
,
f
);
check
(
"panel"
,
panel
,
p
);
check
(
"button"
,
button
,
b
);
}
public
static
void
main
(
String
[]
args
)
{
// setup
frame
.
add
(
panel
);
panel
.
add
(
button
);
frame
.
setBounds
(
200
,
200
,
300
,
200
);
frame
.
setVisible
(
true
);
sleep
();
check
(
"Upon showing"
,
true
,
true
,
true
);
button
.
setBounds
(
1
,
1
,
30
,
30
);
sleep
();
check
(
"button.setBounds():"
,
true
,
false
,
false
);
button
.
revalidate
();
sleep
();
check
(
"button.revalidate():"
,
true
,
true
,
true
);
button
.
setBounds
(
1
,
1
,
30
,
30
);
sleep
();
check
(
"button.setBounds():"
,
true
,
false
,
false
);
panel
.
revalidate
();
sleep
();
// because the panel's validate root is actually OK
check
(
"panel.revalidate():"
,
true
,
false
,
false
);
button
.
revalidate
();
sleep
();
check
(
"button.revalidate():"
,
true
,
true
,
true
);
panel
.
setBounds
(
2
,
2
,
125
,
130
);
sleep
();
check
(
"panel.setBounds():"
,
false
,
false
,
true
);
button
.
revalidate
();
sleep
();
check
(
"button.revalidate():"
,
false
,
true
,
true
);
panel
.
setBounds
(
3
,
3
,
152
,
121
);
sleep
();
check
(
"panel.setBounds():"
,
false
,
false
,
true
);
panel
.
revalidate
();
sleep
();
check
(
"panel.revalidate():"
,
true
,
true
,
true
);
// cleanup
frame
.
dispose
();
}
}
test/java/awt/List/ScrollOutside/ScrollOut.java
0 → 100644
浏览文件 @
3ae07726
/*
* Copyright (c) 2011 Oracle and/or its affiliates. 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
@test
@bug 7036733
@summary Regression : NullPointerException when scrolling horizontally on AWT List
@author Andrei Dmitriev area=awt-list
@library ../../regtesthelpers
@build Util
@run main ScrollOut
*/
import
java.awt.*
;
import
java.awt.event.*
;
import
sun.awt.SunToolkit
;
import
test.java.awt.regtesthelpers.Util
;
public
class
ScrollOut
{
public
static
final
void
main
(
String
args
[])
{
final
Frame
frame
=
new
Frame
();
final
List
list
=
new
List
();
Robot
robot
=
null
;
for
(
int
i
=
0
;
i
<
5
;
i
++){
list
.
add
(
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
);
}
frame
.
add
(
list
);
frame
.
pack
();
frame
.
setLocationRelativeTo
(
null
);
frame
.
setVisible
(
true
);
((
SunToolkit
)
Toolkit
.
getDefaultToolkit
()).
realSync
();
try
{
robot
=
new
Robot
();
}
catch
(
AWTException
e
){
throw
new
RuntimeException
(
e
);
}
//Drag from center to the outside on left
Point
from
=
new
Point
(
list
.
getLocationOnScreen
().
x
+
list
.
getWidth
()/
2
,
list
.
getLocationOnScreen
().
y
+
list
.
getHeight
()/
2
);
Point
to
=
new
Point
(
list
.
getLocationOnScreen
().
x
-
30
,
from
.
y
);
((
SunToolkit
)
Toolkit
.
getDefaultToolkit
()).
realSync
();
Util
.
drag
(
robot
,
from
,
to
,
InputEvent
.
BUTTON1_MASK
);
((
SunToolkit
)
Toolkit
.
getDefaultToolkit
()).
realSync
();
//Drag from center to the outside on up
to
=
new
Point
(
from
.
x
,
list
.
getLocationOnScreen
().
y
-
50
);
((
SunToolkit
)
Toolkit
.
getDefaultToolkit
()).
realSync
();
Util
.
drag
(
robot
,
from
,
to
,
InputEvent
.
BUTTON1_MASK
);
}
//End init()
}
test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion.java
浏览文件 @
3ae07726
/*
* Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007,
2011
Oracle and/or its affiliates. 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
...
...
@@ -50,6 +50,11 @@ import test.java.awt.regtesthelpers.Sysout;
public
class
InfiniteRecursion
{
final
static
Robot
robot
=
Util
.
createRobot
();
final
static
int
MOVE_COUNT
=
5
;
//*2 for both rotation directions,
//*2 as Java sends the wheel event to every for nested component in hierarchy under cursor
final
static
int
EXPECTED_COUNT
=
MOVE_COUNT
*
2
*
2
;
static
int
actualEvents
=
0
;
public
static
void
main
(
String
[]
s
)
...
...
@@ -96,8 +101,10 @@ public class InfiniteRecursion {
Util
.
waitForIdle
(
robot
);
if
(
actualEvents
!=
MOVE_COUNT
*
2
)
{
AbstractTest
.
fail
(
"Expected events count: "
+
MOVE_COUNT
+
" Actual events count: "
+
actualEvents
);
//Not fair to check for multiplier 4 as it's not specified actual number of WheelEvents
//result in a single wheel rotation.
if
(
actualEvents
!=
EXPECTED_COUNT
)
{
AbstractTest
.
fail
(
"Expected events count: "
+
EXPECTED_COUNT
+
" Actual events count: "
+
actualEvents
);
}
}
}
test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_1.java
浏览文件 @
3ae07726
/*
* Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007,
2011
Oracle and/or its affiliates. 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
...
...
@@ -50,6 +50,9 @@ import test.java.awt.regtesthelpers.Sysout;
public
class
InfiniteRecursion_1
{
final
static
Robot
robot
=
Util
.
createRobot
();
final
static
int
MOVE_COUNT
=
5
;
//*2 for both rotation directions,
//*2 as Java sends the wheel event to every for nested component in hierarchy under cursor
final
static
int
EXPECTED_COUNT
=
MOVE_COUNT
*
2
*
2
;
static
int
actualEvents
=
0
;
public
static
void
main
(
String
[]
s
)
...
...
@@ -95,8 +98,10 @@ public class InfiniteRecursion_1 {
}
Util
.
waitForIdle
(
robot
);
if
(
actualEvents
!=
MOVE_COUNT
*
2
)
{
AbstractTest
.
fail
(
"Expected events count: "
+
MOVE_COUNT
+
" Actual events count: "
+
actualEvents
);
//Not fair to check for multiplier 4 as it's not specified actual number of WheelEvents
//result in a single wheel rotation.
if
(
actualEvents
!=
EXPECTED_COUNT
)
{
AbstractTest
.
fail
(
"Expected events count: "
+
EXPECTED_COUNT
+
" Actual events count: "
+
actualEvents
);
}
}
}
test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_2.java
浏览文件 @
3ae07726
/*
* Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007,
2011
Oracle and/or its affiliates. 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
...
...
@@ -56,6 +56,9 @@ import java.applet.Applet;
public
class
InfiniteRecursion_2
extends
Applet
{
final
static
Robot
robot
=
Util
.
createRobot
();
final
static
int
MOVE_COUNT
=
5
;
//*2 for both rotation directions,
//*2 as Java sends the wheel event to every for nested component in hierarchy under cursor
final
static
int
EXPECTED_COUNT
=
MOVE_COUNT
*
2
*
2
;
static
int
actualEvents
=
0
;
public
void
init
()
...
...
@@ -107,8 +110,10 @@ public class InfiniteRecursion_2 extends Applet {
}
Util
.
waitForIdle
(
robot
);
if
(
actualEvents
!=
MOVE_COUNT
*
2
)
{
AbstractTest
.
fail
(
"Expected events count: "
+
MOVE_COUNT
+
" Actual events count: "
+
actualEvents
);
//Not fair to check for multiplier 4 as it's not specified actual number of WheelEvents
//result in a single wheel rotation.
if
(
actualEvents
!=
EXPECTED_COUNT
)
{
AbstractTest
.
fail
(
"Expected events count: "
+
EXPECTED_COUNT
+
" Actual events count: "
+
actualEvents
);
}
}
// start()
}
test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_3.java
浏览文件 @
3ae07726
/*
* Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007,
2011
Oracle and/or its affiliates. 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
...
...
@@ -50,6 +50,9 @@ import java.applet.Applet;
public
class
InfiniteRecursion_3
extends
Applet
{
final
static
Robot
robot
=
Util
.
createRobot
();
final
static
int
MOVE_COUNT
=
5
;
//*2 for both rotation directions,
//*2 as Java sends the wheel event to every for nested component in hierarchy under cursor
final
static
int
EXPECTED_COUNT
=
MOVE_COUNT
*
2
*
2
;
static
int
actualEvents
=
0
;
public
void
init
()
...
...
@@ -91,8 +94,10 @@ public class InfiniteRecursion_3 extends Applet {
}
Util
.
waitForIdle
(
robot
);
if
(
actualEvents
!=
MOVE_COUNT
*
2
)
{
AbstractTest
.
fail
(
"Expected events count: "
+
MOVE_COUNT
+
" Actual events count: "
+
actualEvents
);
//Not fair to check for multiplier 4 as it's not specified actual number of WheelEvents
//result in a single wheel rotation.
if
(
actualEvents
!=
EXPECTED_COUNT
)
{
AbstractTest
.
fail
(
"Expected events count: "
+
EXPECTED_COUNT
+
" Actual events count: "
+
actualEvents
);
}
}
// start()
}
test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_4.java
浏览文件 @
3ae07726
/*
* Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007,
2011
Oracle and/or its affiliates. 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
...
...
@@ -47,6 +47,8 @@ import test.java.awt.regtesthelpers.Sysout;
public
class
InfiniteRecursion_4
{
final
static
Robot
robot
=
Util
.
createRobot
();
final
static
int
MOVE_COUNT
=
5
;
//*2 for both rotation directions over a single frame without any siblings
final
static
int
EXPECTED_COUNT
=
MOVE_COUNT
*
2
;
static
int
actualEvents
=
0
;
public
static
void
main
(
String
[]
s
)
...
...
@@ -80,8 +82,10 @@ public class InfiniteRecursion_4 {
}
Util
.
waitForIdle
(
robot
);
if
(
actualEvents
!=
MOVE_COUNT
*
2
)
{
AbstractTest
.
fail
(
"Expected events count: "
+
MOVE_COUNT
+
" Actual events count: "
+
actualEvents
);
//Not fair to check for multiplier 4 as it's not specified actual number of WheelEvents
//result in a single wheel rotation.
if
(
actualEvents
!=
EXPECTED_COUNT
)
{
AbstractTest
.
fail
(
"Expected events count: "
+
EXPECTED_COUNT
+
" Actual events count: "
+
actualEvents
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录