Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
da90b6a6
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看板
提交
da90b6a6
编写于
8月 05, 2014
作者:
D
dmarkov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8041990: [macosx] Language specific keys does not work in applets when opened outside the browser
Reviewed-by: alexsch, serb
上级
aec6f2de
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
145 addition
and
6 deletion
+145
-6
src/share/classes/java/awt/EventQueue.java
src/share/classes/java/awt/EventQueue.java
+5
-0
src/share/classes/java/awt/event/InputMethodEvent.java
src/share/classes/java/awt/event/InputMethodEvent.java
+30
-5
src/share/classes/sun/awt/AWTAccessor.java
src/share/classes/sun/awt/AWTAccessor.java
+6
-1
test/java/awt/im/8041990/bug8041990.java
test/java/awt/im/8041990/bug8041990.java
+104
-0
未找到文件。
src/share/classes/java/awt/EventQueue.java
浏览文件 @
da90b6a6
...
@@ -214,6 +214,11 @@ public class EventQueue {
...
@@ -214,6 +214,11 @@ public class EventQueue {
FwDispatcher
dispatcher
)
{
FwDispatcher
dispatcher
)
{
eventQueue
.
setFwDispatcher
(
dispatcher
);
eventQueue
.
setFwDispatcher
(
dispatcher
);
}
}
@Override
public
long
getMostRecentEventTime
(
EventQueue
eventQueue
)
{
return
eventQueue
.
getMostRecentEventTimeImpl
();
}
});
});
}
}
...
...
src/share/classes/java/awt/event/InputMethodEvent.java
浏览文件 @
da90b6a6
...
@@ -25,6 +25,10 @@
...
@@ -25,6 +25,10 @@
package
java.awt.event
;
package
java.awt.event
;
import
sun.awt.AWTAccessor
;
import
sun.awt.AppContext
;
import
sun.awt.SunToolkit
;
import
java.awt.AWTEvent
;
import
java.awt.AWTEvent
;
import
java.awt.Component
;
import
java.awt.Component
;
import
java.awt.EventQueue
;
import
java.awt.EventQueue
;
...
@@ -217,8 +221,10 @@ public class InputMethodEvent extends AWTEvent {
...
@@ -217,8 +221,10 @@ public class InputMethodEvent extends AWTEvent {
public
InputMethodEvent
(
Component
source
,
int
id
,
public
InputMethodEvent
(
Component
source
,
int
id
,
AttributedCharacterIterator
text
,
int
committedCharacterCount
,
AttributedCharacterIterator
text
,
int
committedCharacterCount
,
TextHitInfo
caret
,
TextHitInfo
visiblePosition
)
{
TextHitInfo
caret
,
TextHitInfo
visiblePosition
)
{
this
(
source
,
id
,
EventQueue
.
getMostRecentEventTime
(),
text
,
this
(
source
,
id
,
committedCharacterCount
,
caret
,
visiblePosition
);
getMostRecentEventTimeForSource
(
source
),
text
,
committedCharacterCount
,
caret
,
visiblePosition
);
}
}
/**
/**
...
@@ -258,8 +264,9 @@ public class InputMethodEvent extends AWTEvent {
...
@@ -258,8 +264,9 @@ public class InputMethodEvent extends AWTEvent {
*/
*/
public
InputMethodEvent
(
Component
source
,
int
id
,
TextHitInfo
caret
,
public
InputMethodEvent
(
Component
source
,
int
id
,
TextHitInfo
caret
,
TextHitInfo
visiblePosition
)
{
TextHitInfo
visiblePosition
)
{
this
(
source
,
id
,
EventQueue
.
getMostRecentEventTime
(),
null
,
this
(
source
,
id
,
0
,
caret
,
visiblePosition
);
getMostRecentEventTimeForSource
(
source
),
null
,
0
,
caret
,
visiblePosition
);
}
}
/**
/**
...
@@ -410,7 +417,25 @@ public class InputMethodEvent extends AWTEvent {
...
@@ -410,7 +417,25 @@ public class InputMethodEvent extends AWTEvent {
private
void
readObject
(
ObjectInputStream
s
)
throws
ClassNotFoundException
,
IOException
{
private
void
readObject
(
ObjectInputStream
s
)
throws
ClassNotFoundException
,
IOException
{
s
.
defaultReadObject
();
s
.
defaultReadObject
();
if
(
when
==
0
)
{
if
(
when
==
0
)
{
when
=
EventQueue
.
getMostRecentEventTime
();
when
=
getMostRecentEventTimeForSource
(
this
.
source
);
}
}
/**
* Get the most recent event time in the {@code EventQueue} which the {@code source}
* belongs to.
*
* @param source the source of the event
* @exception IllegalArgumentException if source is null.
* @return most recent event time in the {@code EventQueue}
*/
private
static
long
getMostRecentEventTimeForSource
(
Object
source
)
{
if
(
source
==
null
)
{
// throw the IllegalArgumentException to conform to EventObject spec
throw
new
IllegalArgumentException
(
"null source"
);
}
}
AppContext
appContext
=
SunToolkit
.
targetToAppContext
(
source
);
EventQueue
eventQueue
=
SunToolkit
.
getSystemEventQueueImplPP
(
appContext
);
return
AWTAccessor
.
getEventQueueAccessor
().
getMostRecentEventTime
(
eventQueue
);
}
}
}
}
src/share/classes/sun/awt/AWTAccessor.java
浏览文件 @
da90b6a6
...
@@ -504,7 +504,12 @@ public final class AWTAccessor {
...
@@ -504,7 +504,12 @@ public final class AWTAccessor {
/**
/**
* Sets the delegate for the EventQueue used by FX/AWT single threaded mode
* Sets the delegate for the EventQueue used by FX/AWT single threaded mode
*/
*/
public
void
setFwDispatcher
(
EventQueue
eventQueue
,
FwDispatcher
dispatcher
);
void
setFwDispatcher
(
EventQueue
eventQueue
,
FwDispatcher
dispatcher
);
/**
* Gets most recent event time in the EventQueue
*/
long
getMostRecentEventTime
(
EventQueue
eventQueue
);
}
}
/*
/*
...
...
test/java/awt/im/8041990/bug8041990.java
0 → 100644
浏览文件 @
da90b6a6
/*
* Copyright (c) 2014, 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 8041990
@summary Language specific keys does not work in applets when opened outside the browser
@author Petr Pchelko
*/
import
sun.awt.SunToolkit
;
import
javax.swing.*
;
import
java.awt.*
;
import
java.awt.event.InputMethodEvent
;
import
java.awt.font.TextHitInfo
;
import
java.text.AttributedString
;
import
java.util.concurrent.CountDownLatch
;
import
java.util.concurrent.atomic.AtomicReference
;
public
class
bug8041990
{
private
static
JFrame
frame
;
private
static
JComponent
component
;
public
static
void
main
(
String
[]
args
)
throws
Exception
{
ThreadGroup
stubTG
=
new
ThreadGroup
(
getRootThreadGroup
(),
"Stub Thread Group"
);
ThreadGroup
swingTG
=
new
ThreadGroup
(
getRootThreadGroup
(),
"SwingTG"
);
try
{
Thread
stubThread
=
new
Thread
(
stubTG
,
SunToolkit:
:
createNewAppContext
);
stubThread
.
start
();
stubThread
.
join
();
CountDownLatch
startSwingLatch
=
new
CountDownLatch
(
1
);
new
Thread
(
swingTG
,
()
->
{
SunToolkit
.
createNewAppContext
();
SwingUtilities
.
invokeLater
(()
->
{
frame
=
new
JFrame
();
component
=
new
JLabel
(
"Test Text"
);
frame
.
add
(
component
);
frame
.
setBounds
(
100
,
100
,
100
,
100
);
frame
.
setVisible
(
true
);
startSwingLatch
.
countDown
();
});
}).
start
();
startSwingLatch
.
await
();
AtomicReference
<
Exception
>
caughtException
=
new
AtomicReference
<>();
Thread
checkThread
=
new
Thread
(
getRootThreadGroup
(),
()
->
{
try
{
// If the bug is present this will throw exception
new
InputMethodEvent
(
component
,
InputMethodEvent
.
CARET_POSITION_CHANGED
,
TextHitInfo
.
leading
(
0
),
TextHitInfo
.
trailing
(
0
));
}
catch
(
Exception
e
)
{
caughtException
.
set
(
e
);
}
});
checkThread
.
start
();
checkThread
.
join
();
if
(
caughtException
.
get
()
!=
null
)
{
throw
new
RuntimeException
(
"Failed. Caught exception!"
,
caughtException
.
get
());
}
}
finally
{
new
Thread
(
swingTG
,
()
->
SwingUtilities
.
invokeLater
(()
->
{
if
(
frame
!=
null
)
{
frame
.
dispose
();
}
})).
start
();
}
}
private
static
ThreadGroup
getRootThreadGroup
()
{
ThreadGroup
currentTG
=
Thread
.
currentThread
().
getThreadGroup
();
ThreadGroup
parentTG
=
currentTG
.
getParent
();
while
(
parentTG
!=
null
)
{
currentTG
=
parentTG
;
parentTG
=
currentTG
.
getParent
();
}
return
currentTG
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录