Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
33a6e77f
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
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看板
提交
33a6e77f
编写于
4月 10, 2012
作者:
S
serb
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7097771: setEnabled does not work for components in disabled containers.
Reviewed-by: art, anthony
上级
049b650b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
111 addition
and
42 deletion
+111
-42
src/solaris/classes/sun/awt/X11/XComponentPeer.java
src/solaris/classes/sun/awt/X11/XComponentPeer.java
+30
-42
test/java/awt/Component/7097771/bug7097771.java
test/java/awt/Component/7097771/bug7097771.java
+81
-0
未找到文件。
src/solaris/classes/sun/awt/X11/XComponentPeer.java
浏览文件 @
33a6e77f
...
...
@@ -82,7 +82,7 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget
boolean
paintPending
=
false
;
boolean
isLayouting
=
false
;
boolean
enabled
;
private
boolean
enabled
;
// Actually used only by XDecoratedPeer
protected
int
boundsOperation
;
...
...
@@ -128,9 +128,6 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget
}
void
postInit
(
XCreateWindowParams
params
)
{
super
.
postInit
(
params
);
Color
c
;
Font
f
;
Cursor
cursor
;
pSetCursor
(
target
.
getCursor
());
...
...
@@ -143,19 +140,7 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget
reshape
(
r
.
x
,
r
.
y
,
r
.
width
,
r
.
height
);
}
enabled
=
target
.
isEnabled
();
// If any of our heavyweight ancestors are disable, we should be too
// See 6176875 for more information
Component
comp
=
target
;
while
(
!(
comp
==
null
||
comp
instanceof
Window
)
)
{
comp
=
comp
.
getParent
();
if
(
comp
!=
null
&&
!
comp
.
isEnabled
()
&&
!
comp
.
isLightweight
()
){
setEnabled
(
false
);
break
;
}
}
enableLog
.
fine
(
"Initial enable state: {0}"
,
Boolean
.
valueOf
(
enabled
));
setEnabled
(
target
.
isEnabled
());
if
(
target
.
isVisible
())
{
setVisible
(
true
);
...
...
@@ -384,45 +369,48 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget
setVisible
(
false
);
}
/**
* @see java.awt.peer.ComponentPeer
*/
public
void
setEnabled
(
boolean
value
)
{
enableLog
.
fine
(
"{0}ing {1}"
,
(
value
?
"Enabl"
:
"Disabl"
),
this
);
boolean
repaintNeeded
=
(
enabled
!=
value
);
enabled
=
value
;
public
void
setEnabled
(
final
boolean
value
)
{
if
(
enableLog
.
isLoggable
(
PlatformLogger
.
FINE
))
{
enableLog
.
fine
(
"{0}ing {1}"
,
(
value
?
"Enabl"
:
"Disabl"
),
this
);
}
boolean
status
=
value
;
// If any of our heavyweight ancestors are disable, we should be too
// See 6176875 for more information
final
Container
cp
=
SunToolkit
.
getNativeContainer
(
target
);
if
(
cp
!=
null
)
{
status
&=
((
XComponentPeer
)
cp
.
getPeer
()).
isEnabled
();
}
synchronized
(
getStateLock
())
{
if
(
enabled
==
status
)
{
return
;
}
enabled
=
status
;
}
if
(
target
instanceof
Container
)
{
Component
list
[]
=
((
Container
)
target
).
getComponents
();
for
(
int
i
=
0
;
i
<
list
.
length
;
++
i
)
{
boolean
childEnabled
=
list
[
i
].
isEnabled
();
ComponentPeer
p
=
list
[
i
].
getPeer
();
if
(
p
!=
null
)
{
p
.
setEnabled
(
value
&&
childEnabled
);
final
Component
[]
list
=
((
Container
)
target
).
getComponents
();
for
(
final
Component
child
:
list
)
{
final
ComponentPeer
p
=
child
.
getPeer
();
if
(
p
!=
null
)
{
p
.
setEnabled
(
status
&&
child
.
isEnabled
());
}
}
}
if
(
repaintNeeded
)
{
repaint
();
}
repaint
();
}
//
// public so aw/Window can call it
//
public
boolean
isEnabled
()
{
return
enabled
;
}
public
void
enable
()
{
setEnabled
(
true
);
public
final
boolean
isEnabled
()
{
synchronized
(
getStateLock
())
{
return
enabled
;
}
}
public
void
disable
()
{
setEnabled
(
false
);
}
@Override
public
void
paint
(
final
Graphics
g
)
{
super
.
paint
(
g
);
...
...
test/java/awt/Component/7097771/bug7097771.java
0 → 100644
浏览文件 @
33a6e77f
/*
* Copyright (c) 2012, 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.
*/
import
sun.awt.SunToolkit
;
import
test.java.awt.regtesthelpers.Util
;
import
java.awt.AWTException
;
import
java.awt.Button
;
import
java.awt.Frame
;
import
java.awt.Robot
;
import
java.awt.Toolkit
;
import
java.awt.event.ActionEvent
;
import
java.awt.event.ActionListener
;
/*
@test
@bug 7097771
@summary setEnabled does not work for components in disabled containers.
@author sergey.bylokhov@oracle.com: area=awt.component
@library ../../regtesthelpers
@build Util
@run main bug7097771
*/
public
final
class
bug7097771
extends
Frame
implements
ActionListener
{
private
static
volatile
boolean
action
;
public
static
void
main
(
final
String
[]
args
)
throws
AWTException
{
final
bug7097771
frame
=
new
bug7097771
();
frame
.
setSize
(
300
,
300
);
frame
.
setLocationRelativeTo
(
null
);
final
Button
button
=
new
Button
();
button
.
addActionListener
(
frame
);
frame
.
add
(
button
);
frame
.
setVisible
(
true
);
sleep
();
frame
.
setEnabled
(
false
);
button
.
setEnabled
(
false
);
button
.
setEnabled
(
true
);
sleep
();
Util
.
clickOnComp
(
button
,
new
Robot
());
sleep
();
frame
.
dispose
();
if
(
action
)
{
throw
new
RuntimeException
(
"Button is not disabled."
);
}
}
@Override
public
void
actionPerformed
(
final
ActionEvent
e
)
{
action
=
true
;
}
private
static
void
sleep
()
{
((
SunToolkit
)
Toolkit
.
getDefaultToolkit
()).
realSync
();
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
ignored
)
{
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录