Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
2814a74a
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,发现更多精彩内容 >>
提交
2814a74a
编写于
10月 07, 2013
作者:
A
alexsch
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8007219: [macosx] Frame size reverts meaning of maximized attribute if frame size close to display
Reviewed-by: serb, anthony
上级
b54aeefe
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
122 addition
and
11 deletion
+122
-11
src/macosx/classes/sun/lwawt/LWWindowPeer.java
src/macosx/classes/sun/lwawt/LWWindowPeer.java
+17
-6
src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
+5
-5
src/macosx/classes/sun/lwawt/macosx/CWrapper.java
src/macosx/classes/sun/lwawt/macosx/CWrapper.java
+1
-0
src/macosx/native/sun/awt/CWrapper.m
src/macosx/native/sun/awt/CWrapper.m
+23
-0
test/java/awt/Frame/MaximizedToMaximized/MaximizedToMaximized.java
.../awt/Frame/MaximizedToMaximized/MaximizedToMaximized.java
+76
-0
未找到文件。
src/macosx/classes/sun/lwawt/LWWindowPeer.java
浏览文件 @
2814a74a
...
...
@@ -317,9 +317,25 @@ public class LWWindowPeer
op
|=
SET_SIZE
;
}
// Don't post ComponentMoved/Resized and Paint events
// until we've got a notification from the delegate
Rectangle
cb
=
constrainBounds
(
x
,
y
,
w
,
h
);
setBounds
(
cb
.
x
,
cb
.
y
,
cb
.
width
,
cb
.
height
,
op
,
false
,
false
);
// Get updated bounds, so we don't have to handle 'op' here manually
Rectangle
r
=
getBounds
();
platformWindow
.
setBounds
(
r
.
x
,
r
.
y
,
r
.
width
,
r
.
height
);
}
public
Rectangle
constrainBounds
(
Rectangle
bounds
)
{
return
constrainBounds
(
bounds
.
x
,
bounds
.
y
,
bounds
.
width
,
bounds
.
height
);
}
public
Rectangle
constrainBounds
(
int
x
,
int
y
,
int
w
,
int
h
)
{
if
(
w
<
MINIMUM_WIDTH
)
{
w
=
MINIMUM_WIDTH
;
}
if
(
h
<
MINIMUM_HEIGHT
)
{
h
=
MINIMUM_HEIGHT
;
}
...
...
@@ -334,12 +350,7 @@ public class LWWindowPeer
h
=
maxH
;
}
// Don't post ComponentMoved/Resized and Paint events
// until we've got a notification from the delegate
setBounds
(
x
,
y
,
w
,
h
,
op
,
false
,
false
);
// Get updated bounds, so we don't have to handle 'op' here manually
Rectangle
r
=
getBounds
();
platformWindow
.
setBounds
(
r
.
x
,
r
.
y
,
r
.
width
,
r
.
height
);
return
new
Rectangle
(
x
,
y
,
w
,
h
);
}
@Override
...
...
src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
浏览文件 @
2814a74a
...
...
@@ -210,7 +210,6 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
private
boolean
undecorated
;
// initialized in getInitialStyleBits()
private
Rectangle
normalBounds
=
null
;
// not-null only for undecorated maximized windows
private
CPlatformResponder
responder
;
private
volatile
boolean
zoomed
=
false
;
// from native perspective
public
CPlatformWindow
()
{
super
(
0
,
true
);
...
...
@@ -231,7 +230,9 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
contentView
.
initialize
(
peer
,
responder
);
final
long
ownerPtr
=
owner
!=
null
?
owner
.
getNSWindowPtr
()
:
0L
;
final
long
nativeWindowPtr
=
nativeCreateNSWindow
(
contentView
.
getAWTView
(),
ownerPtr
,
styleBits
,
0
,
0
,
0
,
0
);
Rectangle
bounds
=
_peer
.
constrainBounds
(
_target
.
getBounds
());
final
long
nativeWindowPtr
=
nativeCreateNSWindow
(
contentView
.
getAWTView
(),
ownerPtr
,
styleBits
,
bounds
.
x
,
bounds
.
y
,
bounds
.
width
,
bounds
.
height
);
setPtr
(
nativeWindowPtr
);
if
(
target
instanceof
javax
.
swing
.
RootPaneContainer
)
{
...
...
@@ -466,7 +467,8 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
}
private
boolean
isMaximized
()
{
return
undecorated
?
this
.
normalBounds
!=
null
:
zoomed
;
return
undecorated
?
this
.
normalBounds
!=
null
:
CWrapper
.
NSWindow
.
isZoomed
(
getNSWindowPtr
());
}
private
void
maximize
()
{
...
...
@@ -474,7 +476,6 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
return
;
}
if
(!
undecorated
)
{
zoomed
=
true
;
CWrapper
.
NSWindow
.
zoom
(
getNSWindowPtr
());
}
else
{
deliverZoom
(
true
);
...
...
@@ -496,7 +497,6 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
return
;
}
if
(!
undecorated
)
{
zoomed
=
false
;
CWrapper
.
NSWindow
.
zoom
(
getNSWindowPtr
());
}
else
{
deliverZoom
(
false
);
...
...
src/macosx/classes/sun/lwawt/macosx/CWrapper.java
浏览文件 @
2814a74a
...
...
@@ -68,6 +68,7 @@ public final class CWrapper {
public
static
native
void
miniaturize
(
long
window
);
public
static
native
void
deminiaturize
(
long
window
);
public
static
native
boolean
isZoomed
(
long
window
);
public
static
native
void
zoom
(
long
window
);
public
static
native
void
makeFirstResponder
(
long
window
,
long
responder
);
...
...
src/macosx/native/sun/awt/CWrapper.m
浏览文件 @
2814a74a
...
...
@@ -435,6 +435,29 @@ JNF_COCOA_ENTER(env);
JNF_COCOA_EXIT
(
env
);
}
/
*
*
Class:
sun_lwawt_macosx_CWrapper
$
NSWindow
*
Method:
isZoomed
*
Signature:
(
J
)
Z
*
/
JNIEXPORT
jboolean
JNICALL
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_isZoomed
(
JNIEnv
*env
,
jclass
cls
,
jlong
windowPtr
)
{
__block
jboolean
isZoomed =
JNI_FALSE;
JNF_COCOA_ENTER
(
env
);
NSWindow
*window =
(NSWindow
*
)
jlong_to_ptr
(
windowPtr
);
[
ThreadUtilities
performOnMainThreadWaiting:YES
block:
^(){
isZoomed =
[window
isZoomed
];
}];
JNF_COCOA_EXIT
(
env
);
return
isZoomed
;
}
/
*
*
Class:
sun_lwawt_macosx_CWrapper
$
NSWindow
*
Method:
zoom
...
...
test/java/awt/Frame/MaximizedToMaximized/MaximizedToMaximized.java
0 → 100644
浏览文件 @
2814a74a
/*
* Copyright (c) 2013, 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
java.awt.Dimension
;
import
java.awt.Frame
;
import
java.awt.GraphicsDevice
;
import
java.awt.GraphicsEnvironment
;
import
java.awt.Insets
;
import
java.awt.Rectangle
;
import
java.awt.Toolkit
;
import
sun.awt.SunToolkit
;
/**
* @test
* @bug 8007219
* @author Alexander Scherbatiy
* @summary Frame size reverts meaning of maximized attribute
* @run main MaximizedToMaximized
*/
public
class
MaximizedToMaximized
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
Frame
frame
=
new
Frame
();
final
Toolkit
toolkit
=
Toolkit
.
getDefaultToolkit
();
final
GraphicsEnvironment
graphicsEnvironment
=
GraphicsEnvironment
.
getLocalGraphicsEnvironment
();
final
GraphicsDevice
graphicsDevice
=
graphicsEnvironment
.
getDefaultScreenDevice
();
final
Dimension
screenSize
=
toolkit
.
getScreenSize
();
final
Insets
screenInsets
=
toolkit
.
getScreenInsets
(
graphicsDevice
.
getDefaultConfiguration
());
final
Rectangle
availableScreenBounds
=
new
Rectangle
(
screenSize
);
availableScreenBounds
.
x
+=
screenInsets
.
left
;
availableScreenBounds
.
y
+=
screenInsets
.
top
;
availableScreenBounds
.
width
-=
(
screenInsets
.
left
+
screenInsets
.
right
);
availableScreenBounds
.
height
-=
(
screenInsets
.
top
+
screenInsets
.
bottom
);
frame
.
setBounds
(
availableScreenBounds
.
x
,
availableScreenBounds
.
y
,
availableScreenBounds
.
width
,
availableScreenBounds
.
height
);
frame
.
setVisible
(
true
);
Rectangle
frameBounds
=
frame
.
getBounds
();
frame
.
setExtendedState
(
Frame
.
MAXIMIZED_BOTH
);
((
SunToolkit
)
toolkit
).
realSync
();
Rectangle
maximizedFrameBounds
=
frame
.
getBounds
();
if
(
maximizedFrameBounds
.
width
<
frameBounds
.
width
||
maximizedFrameBounds
.
height
<
frameBounds
.
height
)
{
throw
new
RuntimeException
(
"Maximized frame is smaller than non maximized"
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录