mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2026-01-04 07:31:38 +01:00
Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
404824c124 | ||
|
|
5921056ad5 | ||
|
|
d556351235 | ||
|
|
35ea7a9383 | ||
|
|
ade3440e62 | ||
|
|
8e86f4e33f | ||
|
|
6ba192eb09 | ||
|
|
9b910efa02 | ||
|
|
ff94df27a5 | ||
|
|
630f1020f3 | ||
|
|
883cdbcf18 | ||
|
|
43ac75acf6 | ||
|
|
417a3fad8f | ||
|
|
c431bfdab4 | ||
|
|
2b4fafc126 | ||
|
|
ccb4c7267e | ||
|
|
686896eb1c | ||
|
|
f11b7b2c25 | ||
|
|
b82180bc6a | ||
|
|
675107c690 | ||
|
|
c76473c4cb | ||
|
|
dce5b869a0 | ||
|
|
16cef9f362 |
@@ -137,10 +137,18 @@ echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module_aarch64.patch || do_exit $?
|
||||
update_jsdk_mods $JSDK $JCEF_PATH/jmods $JSDK/jmods $JSDK_MODS_DIR || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
|
||||
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||
if [ -d "$JCEF_PATH" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module_aarch64.patch || do_exit $?
|
||||
update_jsdk_mods $JSDK $JCEF_PATH/jmods $JSDK/jmods $JSDK_MODS_DIR || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
|
||||
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||
else
|
||||
if [ "$bundle_type" == "jcef" ]; then
|
||||
echo "*** ERROR *** $JCEF_PATH not found" && do_exit 1
|
||||
else
|
||||
echo "*** WARNING *** $JCEF_PATH not found"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# create runtime image bundle
|
||||
|
||||
@@ -137,10 +137,18 @@ echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
update_jsdk_mods $JSDK $JCEF_PATH/jmods $JSDK/jmods $JSDK_MODS_DIR || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
|
||||
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||
if [ -d "$JCEF_PATH" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
update_jsdk_mods $JSDK $JCEF_PATH/jmods $JSDK/jmods $JSDK_MODS_DIR || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
|
||||
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||
else
|
||||
if [ "$bundle_type" == "jcef" ]; then
|
||||
echo "*** ERROR *** $JCEF_PATH not found" && do_exit 1
|
||||
else
|
||||
echo "*** WARNING *** $JCEF_PATH not found"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# create runtime image bundle
|
||||
|
||||
@@ -138,10 +138,18 @@ JSDK_MODS_DIR=$IMAGES_DIR/jmods
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
update_jsdk_mods "$JSDK" "$JCEF_PATH"/jmods "$JSDK"/jmods "$JSDK_MODS_DIR" || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
|
||||
|
||||
if [ -d "$JCEF_PATH" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
update_jsdk_mods "$JSDK" "$JCEF_PATH"/jmods "$JSDK"/jmods "$JSDK_MODS_DIR" || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not changed
|
||||
#JBR-5426 write JCEF version info inside release file
|
||||
else
|
||||
if [ "$bundle_type" == "jcef" ]; then
|
||||
echo "*** ERROR *** $JCEF_PATH not found" && do_exit 1
|
||||
else
|
||||
echo "*** WARNING *** $JCEF_PATH not found"
|
||||
fi
|
||||
fi
|
||||
jbr_name_postfix="_${bundle_type}"
|
||||
else
|
||||
jbr_name_postfix=""
|
||||
|
||||
@@ -126,12 +126,19 @@ if [ $? -eq 0 ]; then
|
||||
fi
|
||||
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module_aarch64.patch || do_exit $?
|
||||
update_jsdk_mods "$BUILD_JDK" "$JCEF_PATH"/jmods "$JSDK"/jmods "$JSDK_MODS_DIR" || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not unchanged
|
||||
|
||||
if [ -d "$JCEF_PATH" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module_aarch64.patch || do_exit $?
|
||||
update_jsdk_mods "$BUILD_JDK" "$JCEF_PATH"/jmods "$JSDK"/jmods "$JSDK_MODS_DIR" || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* $JSDK_MODS_DIR # $JSDK/jmods is not unchanged
|
||||
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||
else
|
||||
if [ "$bundle_type" == "jcef" ]; then
|
||||
echo "*** ERROR *** $JCEF_PATH not found" && do_exit 1
|
||||
else
|
||||
echo "*** WARNING *** $JCEF_PATH not found"
|
||||
fi
|
||||
fi
|
||||
jbr_name_postfix="_${bundle_type}"
|
||||
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||
else
|
||||
jbr_name_postfix=""
|
||||
fi
|
||||
|
||||
@@ -117,12 +117,19 @@ if [ $? -eq 0 ]; then
|
||||
fi
|
||||
|
||||
if [ "$bundle_type" == "jcef" ] || [ "$bundle_type" == "fd" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
update_jsdk_mods "$JSDK" "$JCEF_PATH"/jmods "$JSDK"/jmods "$JSDK_MODS_DIR" || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* ${JSDK_MODS_DIR} # $JSDK/jmods is not unchanged
|
||||
|
||||
if [ -d "$JCEF_PATH" ]; then
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
update_jsdk_mods "$JSDK" "$JCEF_PATH"/jmods "$JSDK"/jmods "$JSDK_MODS_DIR" || do_exit $?
|
||||
cp $JCEF_PATH/jmods/* ${JSDK_MODS_DIR} # $JSDK/jmods is not unchanged
|
||||
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||
else
|
||||
if [ "$bundle_type" == "jcef" ]; then
|
||||
echo "*** ERROR *** $JCEF_PATH not found" && do_exit 1
|
||||
else
|
||||
echo "*** WARNING *** $JCEF_PATH not found"
|
||||
fi
|
||||
fi
|
||||
jbr_name_postfix="_${bundle_type}"
|
||||
cat $JCEF_PATH/jcef.version >> $JSDK/release
|
||||
else
|
||||
jbr_name_postfix=""
|
||||
fi
|
||||
|
||||
@@ -109,7 +109,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
private static native boolean nativeDelayShowing(long nsWindowPtr);
|
||||
private static native void nativeUpdateCustomTitleBar(long nsWindowPtr);
|
||||
private static native void nativeCallDeliverMoveResizeEvent(long nsWindowPtr);
|
||||
private static native void nativeSetRoundedCorners(long nsWindowPrt, float radius);
|
||||
private static native void nativeSetRoundedCorners(long nsWindowPrt, float radius, int borderWidth, int borderColor);
|
||||
|
||||
// Logger to report issues happened during execution but that do not affect functionality
|
||||
private static final PlatformLogger logger = PlatformLogger.getLogger("sun.lwawt.macosx.CPlatformWindow");
|
||||
@@ -991,6 +991,14 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
return ref.get();
|
||||
}
|
||||
|
||||
private boolean isTabbedWindow() {
|
||||
AtomicBoolean ref = new AtomicBoolean();
|
||||
execute(ptr -> {
|
||||
ref.set(CWrapper.NSWindow.isTabbedWindow(ptr));
|
||||
});
|
||||
return ref.get();
|
||||
}
|
||||
|
||||
// We want a window to be always shown at the same space as its owning window.
|
||||
// But macOS doesn't have an API to control the target space for a window -
|
||||
// it's always shown at the active space. So if the target space isn't active now,
|
||||
@@ -1353,7 +1361,9 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
// which is going to become 'main window', are placed above their siblings.
|
||||
CPlatformWindow rootOwner = getRootOwner();
|
||||
if (rootOwner.isVisible() && !rootOwner.isIconified() && !rootOwner.isActive()) {
|
||||
rootOwner.execute(CWrapper.NSWindow::orderFrontIfOnActiveSpace);
|
||||
if (rootOwner != this || !isTabbedWindow()) {
|
||||
rootOwner.execute(CWrapper.NSWindow::orderFrontIfOnActiveSpace);
|
||||
}
|
||||
}
|
||||
|
||||
// Do not order child windows of iconified owner.
|
||||
@@ -1500,7 +1510,13 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
|
||||
private void setRoundedCorners(Object params) {
|
||||
if (params instanceof Float) {
|
||||
execute(ptr -> nativeSetRoundedCorners(ptr, (float) params));
|
||||
execute(ptr -> nativeSetRoundedCorners(ptr, (float) params, 0, 0));
|
||||
} else if (params instanceof Object[]) {
|
||||
Object[] values = (Object[]) params;
|
||||
if (values.length == 3 && values[0] instanceof Float && values[1] instanceof Integer && values[2] instanceof Color) {
|
||||
Color color = (Color) values[2];
|
||||
execute(ptr -> nativeSetRoundedCorners(ptr, (float) values[0], (int) values[1], color.getRGB()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ import java.awt.*;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.print.*;
|
||||
import java.io.File;
|
||||
import java.net.URI;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
@@ -185,6 +186,15 @@ public final class CPrinterJob extends RasterPrinterJob {
|
||||
if (attributes == null) {
|
||||
return;
|
||||
}
|
||||
if (getPrintService() == null && isPrintToFile) {
|
||||
Destination destination = (Destination)attributes.get(Destination.class);
|
||||
if (destination != null) {
|
||||
try {
|
||||
destinationAttr = "" + new File(destination.getURI().getSchemeSpecificPart());
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
Attribute attr = attributes.get(Media.class);
|
||||
if (attr instanceof CustomMediaTray) {
|
||||
CustomMediaTray customTray = (CustomMediaTray) attr;
|
||||
|
||||
@@ -108,6 +108,8 @@ final class CWrapper {
|
||||
static native void zoom(long window);
|
||||
|
||||
static native void makeFirstResponder(long window, long responder);
|
||||
|
||||
static native boolean isTabbedWindow(long window);
|
||||
}
|
||||
|
||||
static final class NSView {
|
||||
|
||||
@@ -50,6 +50,10 @@
|
||||
NSWindowTabbingMode javaWindowTabbingMode;
|
||||
BOOL isEnterFullScreen;
|
||||
CGFloat _customTitleBarHeight;
|
||||
BOOL hideTabController;
|
||||
NSView *_fullScreenButtons;
|
||||
NSView *_fullScreenOriginalButtons;
|
||||
|
||||
}
|
||||
|
||||
// An instance of either AWTWindow_Normal or AWTWindow_Panel
|
||||
@@ -74,6 +78,7 @@
|
||||
@property (nonatomic, retain) NSMutableArray *customTitleBarConstraints;
|
||||
@property (nonatomic, retain) NSLayoutConstraint *customTitleBarHeightConstraint;
|
||||
@property (nonatomic, retain) NSMutableArray *customTitleBarButtonCenterXConstraints;
|
||||
@property (nonatomic) BOOL hideTabController;
|
||||
|
||||
- (id) initWithPlatformWindow:(jobject)javaPlatformWindow
|
||||
ownerWindow:owner
|
||||
@@ -97,7 +102,9 @@
|
||||
|
||||
@end
|
||||
|
||||
@interface AWTWindow_Normal : NSWindow
|
||||
@interface AWTWindow_Normal : NSWindow {
|
||||
@private BOOL _ignoreMove;
|
||||
}
|
||||
- (id) initWithDelegate:(AWTWindow *)delegate
|
||||
frameRect:(NSRect)rect
|
||||
styleMask:(NSUInteger)styleMask
|
||||
@@ -116,4 +123,13 @@
|
||||
- (id) initWithPlatformWindow:(jobject)javaPlatformWindow;
|
||||
@end
|
||||
|
||||
@interface AWTButtonsView : NSView {
|
||||
@private BOOL _showButtons;
|
||||
NSColor* _color;
|
||||
}
|
||||
|
||||
- (void)configureColors;
|
||||
|
||||
@end
|
||||
|
||||
#endif _AWTWINDOW_H
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#import "ThreadUtilities.h"
|
||||
#import "NSApplicationAWT.h"
|
||||
#import "JNIUtilities.h"
|
||||
#import "PropertiesUtilities.h"
|
||||
|
||||
#define MASK(KEY) \
|
||||
(sun_lwawt_macosx_CPlatformWindow_ ## KEY)
|
||||
@@ -55,6 +56,16 @@ static jclass jc_CPlatformWindow = NULL;
|
||||
#define GET_CPLATFORM_WINDOW_CLASS_RETURN(ret) \
|
||||
GET_CLASS_RETURN(jc_CPlatformWindow, "sun/lwawt/macosx/CPlatformWindow", ret);
|
||||
|
||||
@interface NSTitlebarAccessoryViewController (Private)
|
||||
- (void)_setHidden:(BOOL)h animated:(BOOL)a;
|
||||
@end
|
||||
|
||||
@interface NSWindow (Private)
|
||||
- (void)_setTabBarAccessoryViewController:(id)controller;
|
||||
- (void)setIgnoreMove:(BOOL)value;
|
||||
- (void)_adjustWindowToScreen;
|
||||
@end
|
||||
|
||||
// Cocoa windowDidBecomeKey/windowDidResignKey notifications
|
||||
// doesn't provide information about "opposite" window, so we
|
||||
// have to do a bit of tracking. This variable points to a window
|
||||
@@ -348,6 +359,44 @@ AWT_NS_WINDOW_IMPLEMENTATION
|
||||
[super orderOut:sender];
|
||||
}
|
||||
|
||||
- (void)_setTabBarAccessoryViewController:(id)_controller {
|
||||
if (((AWTWindow *)self.delegate).hideTabController) {
|
||||
NSTitlebarAccessoryViewController* controller = [[NSTitlebarAccessoryViewController alloc] init];
|
||||
controller.view = [[NSView alloc] init];
|
||||
[controller.view setFrame:NSMakeRect(0, 0, 0, 0)];
|
||||
[controller _setHidden:YES animated:NO];
|
||||
|
||||
[super _setTabBarAccessoryViewController:controller];
|
||||
} else {
|
||||
[super _setTabBarAccessoryViewController:_controller];
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)isNativeSelected {
|
||||
if (@available(macOS 10.13, *)) {
|
||||
return [[self tabGroup] selectedWindow] == self;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (void)setIgnoreMove:(BOOL)value {
|
||||
_ignoreMove = value;
|
||||
self.movable = !value;
|
||||
}
|
||||
|
||||
- (void)_adjustWindowToScreen {
|
||||
if (_ignoreMove) {
|
||||
self.movable = YES;
|
||||
}
|
||||
|
||||
[super _adjustWindowToScreen];
|
||||
[(AWTWindow *)self.delegate updateFullScreenButtons];
|
||||
|
||||
if (_ignoreMove) {
|
||||
self.movable = NO;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@implementation AWTWindow_Panel
|
||||
AWT_NS_WINDOW_IMPLEMENTATION
|
||||
@@ -372,6 +421,7 @@ AWT_NS_WINDOW_IMPLEMENTATION
|
||||
@synthesize isJustCreated;
|
||||
@synthesize javaWindowTabbingMode;
|
||||
@synthesize isEnterFullScreen;
|
||||
@synthesize hideTabController;
|
||||
|
||||
- (void) updateMinMaxSize:(BOOL)resizable {
|
||||
if (resizable) {
|
||||
@@ -547,6 +597,8 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
self.nsWindow.collectionBehavior = NSWindowCollectionBehaviorManaged;
|
||||
self.isEnterFullScreen = NO;
|
||||
|
||||
[self configureJavaWindowTabbingIdentifier];
|
||||
|
||||
if (self.isCustomTitleBarEnabled && !self.isFullScreen) {
|
||||
[self setUpCustomTitleBar];
|
||||
}
|
||||
@@ -569,6 +621,64 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
return [self.nsWindow windowNumber] == [AWTWindow getTopmostWindowUnderMouseID];
|
||||
}
|
||||
|
||||
- (void) configureJavaWindowTabbingIdentifier {
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
self.hideTabController = NO;
|
||||
|
||||
if (self.javaWindowTabbingMode != NSWindowTabbingModeAutomatic) {
|
||||
return;
|
||||
}
|
||||
|
||||
JNIEnv *env = [ThreadUtilities getJNIEnv];
|
||||
jobject platformWindow = (*env)->NewLocalRef(env, self.javaPlatformWindow);
|
||||
if (platformWindow == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
GET_CPLATFORM_WINDOW_CLASS();
|
||||
DECLARE_FIELD(jf_target, jc_CPlatformWindow, "target", "Ljava/awt/Window;");
|
||||
jobject awtWindow = (*env)->GetObjectField(env, platformWindow, jf_target);
|
||||
|
||||
if (awtWindow != NULL) {
|
||||
DECLARE_CLASS(jc_RootPaneContainer, "javax/swing/RootPaneContainer");
|
||||
if ((*env)->IsInstanceOf(env, awtWindow, jc_RootPaneContainer)) {
|
||||
DECLARE_METHOD(jm_getRootPane, jc_RootPaneContainer, "getRootPane", "()Ljavax/swing/JRootPane;");
|
||||
jobject rootPane = (*env)->CallObjectMethod(env, awtWindow, jm_getRootPane);
|
||||
CHECK_EXCEPTION();
|
||||
|
||||
if (rootPane != NULL) {
|
||||
DECLARE_CLASS(jc_JComponent, "javax/swing/JComponent");
|
||||
DECLARE_METHOD(jm_getClientProperty, jc_JComponent, "getClientProperty", "(Ljava/lang/Object;)Ljava/lang/Object;");
|
||||
jstring jKey = NSStringToJavaString(env, @"JavaWindowTabbingIdentifier");
|
||||
jobject jValue = (*env)->CallObjectMethod(env, rootPane, jm_getClientProperty, jKey);
|
||||
CHECK_EXCEPTION();
|
||||
|
||||
if (jValue != NULL) {
|
||||
DECLARE_CLASS(jc_String, "java/lang/String");
|
||||
if ((*env)->IsInstanceOf(env, jValue, jc_String)) {
|
||||
NSString *winId = JavaStringToNSString(env, (jstring)jValue);
|
||||
[self.nsWindow setTabbingIdentifier:winId];
|
||||
if ([winId characterAtIndex:0] == '+') {
|
||||
self.hideTabController = YES;
|
||||
[self.nsWindow _setTabBarAccessoryViewController:nil];
|
||||
}
|
||||
}
|
||||
|
||||
(*env)->DeleteLocalRef(env, jValue);
|
||||
}
|
||||
|
||||
(*env)->DeleteLocalRef(env, jKey);
|
||||
(*env)->DeleteLocalRef(env, rootPane);
|
||||
}
|
||||
}
|
||||
|
||||
(*env)->DeleteLocalRef(env, awtWindow);
|
||||
}
|
||||
|
||||
(*env)->DeleteLocalRef(env, platformWindow);
|
||||
}
|
||||
|
||||
- (NSWindowTabbingMode) getJavaWindowTabbingMode {
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
@@ -1309,6 +1419,15 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
if (self.isCustomTitleBarEnabled) {
|
||||
[self forceHideCustomTitleBarTitle:NO];
|
||||
[self updateCustomTitleBarInsets:NO];
|
||||
|
||||
JNIEnv *env = [ThreadUtilities getJNIEnvUncached];
|
||||
NSString *newFullScreenControls1 = [PropertiesUtilities
|
||||
javaSystemPropertyForKey:@"apple.awt.newFullScreeControls" withEnv:env];
|
||||
NSString *newFullScreenControls2 = [PropertiesUtilities
|
||||
javaSystemPropertyForKey:@"apple.awt.newFullScreenControls" withEnv:env];
|
||||
if ([@"true" isCaseInsensitiveLike:newFullScreenControls1] || [@"true" isCaseInsensitiveLike:newFullScreenControls2]) {
|
||||
[self setWindowFullScreenControls];
|
||||
}
|
||||
}
|
||||
[self allowMovingChildrenBetweenSpaces:NO];
|
||||
[self fullScreenTransitionFinished];
|
||||
@@ -1355,6 +1474,8 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
}
|
||||
|
||||
- (void)windowDidExitFullScreen:(NSNotification *)notification {
|
||||
[self resetWindowFullScreenControls];
|
||||
|
||||
self.isEnterFullScreen = NO;
|
||||
|
||||
[self fullScreenTransitionFinished];
|
||||
@@ -1464,7 +1585,9 @@ static const CGFloat DefaultHorizontalTitleBarButtonOffset = 20.0;
|
||||
}
|
||||
|
||||
- (void) setUpCustomTitleBar {
|
||||
|
||||
if (self.customTitleBarConstraints != nil) {
|
||||
[self resetCustomTitleBar];
|
||||
}
|
||||
/**
|
||||
* The view hierarchy normally looks as follows:
|
||||
* NSThemeFrame
|
||||
@@ -1509,6 +1632,8 @@ static const CGFloat DefaultHorizontalTitleBarButtonOffset = 20.0;
|
||||
self.customTitleBarHeightConstraint,
|
||||
]];
|
||||
|
||||
[self.nsWindow setIgnoreMove:YES];
|
||||
|
||||
AWTWindowDragView* windowDragView = [[AWTWindowDragView alloc] initWithPlatformWindow:self.javaPlatformWindow];
|
||||
[titlebar addSubview:windowDragView positioned:NSWindowBelow relativeTo:closeButtonView];
|
||||
|
||||
@@ -1560,6 +1685,8 @@ static const CGFloat DefaultHorizontalTitleBarButtonOffset = 20.0;
|
||||
}];
|
||||
[self setWindowControlsHidden:!self.customTitleBarControlsVisible];
|
||||
[self updateCustomTitleBarInsets:self.customTitleBarControlsVisible];
|
||||
|
||||
[self updateFullScreenButtons];
|
||||
}
|
||||
|
||||
- (void) resetCustomTitleBar {
|
||||
@@ -1595,14 +1722,109 @@ static const CGFloat DefaultHorizontalTitleBarButtonOffset = 20.0;
|
||||
|
||||
[self setWindowControlsHidden:NO];
|
||||
[self updateCustomTitleBarInsets:NO];
|
||||
|
||||
[self.nsWindow setIgnoreMove:NO];
|
||||
}
|
||||
|
||||
- (void) setWindowControlsHidden: (BOOL) hidden {
|
||||
if (_fullScreenOriginalButtons != nil) {
|
||||
[_fullScreenOriginalButtons.window.contentView setHidden:NO];
|
||||
_fullScreenButtons.hidden = YES;
|
||||
}
|
||||
|
||||
[self.nsWindow standardWindowButton:NSWindowCloseButton].hidden = hidden;
|
||||
[self.nsWindow standardWindowButton:NSWindowZoomButton].hidden = hidden;
|
||||
[self.nsWindow standardWindowButton:NSWindowMiniaturizeButton].hidden = hidden;
|
||||
}
|
||||
|
||||
- (void) setWindowFullScreenControls {
|
||||
JNIEnv *env = [ThreadUtilities getJNIEnvUncached];
|
||||
NSString *dfmMode = [PropertiesUtilities javaSystemPropertyForKey:@"apple.awt.distraction.free.mode" withEnv:env];
|
||||
if ([@"true" isCaseInsensitiveLike:dfmMode]) {
|
||||
return;
|
||||
}
|
||||
|
||||
NSView* oldCloseButton = [self.nsWindow standardWindowButton:NSWindowCloseButton];
|
||||
_fullScreenOriginalButtons = oldCloseButton.superview;
|
||||
|
||||
NSRect closeButtonRect = [oldCloseButton frame];
|
||||
NSRect miniaturizeButtonRect = [[self.nsWindow standardWindowButton:NSWindowMiniaturizeButton] frame];
|
||||
NSRect zoomButtonRect = [[self.nsWindow standardWindowButton:NSWindowZoomButton] frame];
|
||||
|
||||
for (NSWindow* window in [[NSApplication sharedApplication] windows]) {
|
||||
if ([window isKindOfClass:NSClassFromString(@"NSToolbarFullScreenWindow")]) {
|
||||
[window.contentView setHidden:YES];
|
||||
}
|
||||
}
|
||||
|
||||
_fullScreenButtons = [[AWTButtonsView alloc] init];
|
||||
[self updateFullScreenButtons];
|
||||
[_fullScreenButtons addTrackingArea:[[NSTrackingArea alloc] initWithRect:[_fullScreenButtons visibleRect]
|
||||
options:(NSTrackingActiveAlways | NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved)
|
||||
owner:_fullScreenButtons userInfo:nil]];
|
||||
|
||||
NSUInteger masks = [self.nsWindow styleMask];
|
||||
|
||||
NSButton *closeButton = [NSWindow standardWindowButton:NSWindowCloseButton forStyleMask:masks];
|
||||
[closeButton setFrame:closeButtonRect];
|
||||
[_fullScreenButtons addSubview:closeButton];
|
||||
|
||||
NSButton *miniaturizeButton = [NSWindow standardWindowButton:NSWindowMiniaturizeButton forStyleMask:masks];
|
||||
[miniaturizeButton setFrame:miniaturizeButtonRect];
|
||||
[_fullScreenButtons addSubview:miniaturizeButton];
|
||||
|
||||
NSButton *zoomButton = [NSWindow standardWindowButton:NSWindowZoomButton forStyleMask:masks];
|
||||
[zoomButton setFrame:zoomButtonRect];
|
||||
[_fullScreenButtons addSubview:zoomButton];
|
||||
|
||||
[self.nsWindow.contentView addSubview:_fullScreenButtons];
|
||||
|
||||
[self updateColors];
|
||||
}
|
||||
|
||||
- (void)updateColors {
|
||||
if (_fullScreenButtons != nil) {
|
||||
[(AWTButtonsView *)_fullScreenButtons configureColors];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)updateFullScreenButtons {
|
||||
if (_fullScreenButtons == nil || _fullScreenOriginalButtons == nil) {
|
||||
return;
|
||||
}
|
||||
|
||||
NSView *parent = self.nsWindow.contentView;
|
||||
CGFloat w = 80;
|
||||
CGFloat h = _fullScreenOriginalButtons.frame.size.height;
|
||||
CGFloat x = 6;
|
||||
CGFloat y = parent.frame.size.height - h - (self.customTitleBarHeight - h) / 2.0;
|
||||
|
||||
[_fullScreenButtons setFrame:NSMakeRect(x, y, w - x, h)];
|
||||
}
|
||||
|
||||
- (void)updateFullScreenButtons: (BOOL) dfm {
|
||||
if (dfm) {
|
||||
if (_fullScreenButtons == nil || _fullScreenOriginalButtons == nil) {
|
||||
return;
|
||||
}
|
||||
[_fullScreenOriginalButtons.window.contentView setHidden:NO];
|
||||
[self resetWindowFullScreenControls];
|
||||
} else {
|
||||
if (!self.isCustomTitleBarEnabled || _fullScreenButtons != nil) {
|
||||
return;
|
||||
}
|
||||
[self setWindowFullScreenControls];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) resetWindowFullScreenControls {
|
||||
if (_fullScreenButtons != nil) {
|
||||
[_fullScreenButtons removeFromSuperview];
|
||||
_fullScreenButtons = nil;
|
||||
_fullScreenOriginalButtons = nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL) isFullScreen {
|
||||
NSUInteger masks = [self.nsWindow styleMask];
|
||||
return (masks & NSWindowStyleMaskFullScreen) != 0;
|
||||
@@ -1639,7 +1861,7 @@ static const CGFloat DefaultHorizontalTitleBarButtonOffset = 20.0;
|
||||
nsWindow.styleMask & NSWindowStyleMaskFullScreen)];
|
||||
// calls methods on NSWindow to change other properties, based on the mask
|
||||
[self setPropertiesForStyleBits:newBits mask:mask];
|
||||
if (!fullscreen) [self _deliverMoveResizeEvent];
|
||||
if (!fullscreen && !self.nsWindow.miniaturized) [self _deliverMoveResizeEvent];
|
||||
|
||||
if (enabled != (self.customTitleBarConstraints != nil)) {
|
||||
if (!fullscreen) {
|
||||
@@ -1648,6 +1870,8 @@ static const CGFloat DefaultHorizontalTitleBarButtonOffset = 20.0;
|
||||
} else {
|
||||
[self resetCustomTitleBar];
|
||||
}
|
||||
} else {
|
||||
[self updateFullScreenButtons];
|
||||
}
|
||||
} else if (enabled) {
|
||||
[self updateCustomTitleBarConstraints];
|
||||
@@ -1688,10 +1912,6 @@ static const CGFloat DefaultHorizontalTitleBarButtonOffset = 20.0;
|
||||
return hitTest <= java_awt_Window_CustomTitleBar_HIT_TITLEBAR;
|
||||
}
|
||||
|
||||
- (BOOL) mouseDownCanMoveWindow {
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL) acceptsFirstMouse:(NSEvent *)event {
|
||||
return YES;
|
||||
}
|
||||
@@ -1766,6 +1986,96 @@ static const CGFloat DefaultHorizontalTitleBarButtonOffset = 20.0;
|
||||
|
||||
@end
|
||||
|
||||
@implementation AWTButtonsView
|
||||
|
||||
- (void)dealloc {
|
||||
[_color release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)mouseEntered:(NSEvent *)theEvent {
|
||||
[self updateButtons:YES];
|
||||
}
|
||||
|
||||
- (void)mouseExited:(NSEvent *)theEvent {
|
||||
[self updateButtons:NO];
|
||||
}
|
||||
|
||||
- (void)configureColors {
|
||||
JNIEnv *env = [ThreadUtilities getJNIEnvUncached];
|
||||
NSString *javaColor = [PropertiesUtilities javaSystemPropertyForKey:@"apple.awt.newFullScreeControls.background" withEnv:env];
|
||||
|
||||
[_color release];
|
||||
|
||||
if (javaColor == nil) {
|
||||
_color = nil;
|
||||
} else {
|
||||
int rgb = [javaColor intValue];
|
||||
|
||||
CGFloat alpha = (((rgb >> 24) & 0xff) / 255.0);
|
||||
CGFloat red = (((rgb >> 16) & 0xff) / 255.0);
|
||||
CGFloat green = (((rgb >> 8) & 0xff) / 255.0);
|
||||
CGFloat blue = (((rgb >> 0) & 0xff) / 255.0);
|
||||
|
||||
_color = [NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha];
|
||||
[_color retain];
|
||||
}
|
||||
|
||||
[self updateButtons:NO];
|
||||
}
|
||||
|
||||
- (void)updateButtons:(BOOL) flag {
|
||||
_showButtons = flag;
|
||||
|
||||
if (self.subviews.count == 3) {
|
||||
[self updateButton:0 flag:flag]; // close
|
||||
[self updateButton:1 flag:NO]; // miniaturize
|
||||
[self updateButton:2 flag:flag]; // zoom
|
||||
}
|
||||
|
||||
[self setNeedsDisplay:YES];
|
||||
}
|
||||
|
||||
- (void)updateButton: (int)index flag:(BOOL) flag {
|
||||
NSButton *button = (NSButton*)self.subviews[index];
|
||||
[button setHidden:!flag];
|
||||
[button setHighlighted:flag];
|
||||
}
|
||||
|
||||
- (void)drawRect: (NSRect)dirtyRect {
|
||||
if (self.subviews.count != 3) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (_color == nil) {
|
||||
[[NSColor whiteColor] setFill];
|
||||
} else {
|
||||
[_color setFill];
|
||||
}
|
||||
|
||||
if (_showButtons) {
|
||||
[self drawButton:1]; // miniaturize
|
||||
} else {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
[self drawButton:i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)drawButton: (int)index {
|
||||
NSButton *button = (NSButton*)self.subviews[index];
|
||||
NSRect rect = button.frame;
|
||||
CGFloat r = 12;
|
||||
CGFloat x = rect.origin.x + (rect.size.width - r) / 2;
|
||||
CGFloat y = rect.origin.y + (rect.size.height - r) / 2;
|
||||
|
||||
NSBezierPath* circlePath = [NSBezierPath bezierPath];
|
||||
[circlePath appendBezierPathWithOvalInRect:CGRectMake(x, y, r, r)];
|
||||
[circlePath fill];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
/*
|
||||
* Class: sun_lwawt_macosx_CPlatformWindow
|
||||
* Method: nativeSetAllAllowAutomaticTabbingProperty
|
||||
@@ -2593,7 +2903,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeCallDeliverMo
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetRoundedCorners
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr, jfloat radius)
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr, jfloat radius, jint borderWidth, jint borderRgb)
|
||||
{
|
||||
JNI_COCOA_ENTER(env);
|
||||
|
||||
@@ -2603,6 +2913,18 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetRoundedCor
|
||||
w.contentView.wantsLayer = YES;
|
||||
w.contentView.layer.cornerRadius = radius;
|
||||
w.contentView.layer.masksToBounds = YES;
|
||||
|
||||
if (borderWidth > 0) {
|
||||
CGFloat alpha = (((borderRgb >> 24) & 0xff) / 255.0);
|
||||
CGFloat red = (((borderRgb >> 16) & 0xff) / 255.0);
|
||||
CGFloat green = (((borderRgb >> 8) & 0xff) / 255.0);
|
||||
CGFloat blue = (((borderRgb >> 0) & 0xff) / 255.0);
|
||||
NSColor *color = [NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha];
|
||||
|
||||
w.contentView.layer.borderWidth = borderWidth;
|
||||
w.contentView.layer.borderColor = color.CGColor;
|
||||
}
|
||||
|
||||
w.backgroundColor = NSColor.clearColor;
|
||||
w.opaque = NO;
|
||||
// remove corner radius animation
|
||||
|
||||
@@ -516,6 +516,31 @@ JNI_COCOA_ENTER(env);
|
||||
JNI_COCOA_EXIT(env);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: sun_lwawt_macosx_CWrapper$NSWindow
|
||||
* Method: isTabbedWindow
|
||||
* Signature: (J)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_sun_lwawt_macosx_CWrapper_00024NSWindow_isTabbedWindow
|
||||
(JNIEnv *env, jclass cls, jlong windowPtr)
|
||||
{
|
||||
__block jboolean isTabbedWindow = JNI_FALSE;
|
||||
|
||||
JNI_COCOA_ENTER(env);
|
||||
|
||||
if (@available(macOS 10.13, *)) {
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
isTabbedWindow = [[[window tabGroup] windows] count] > 1;
|
||||
}];
|
||||
}
|
||||
|
||||
JNI_COCOA_EXIT(env);
|
||||
|
||||
return isTabbedWindow;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: sun_lwawt_macosx_CWrapper$NSView
|
||||
* Method: addSubview
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2023, JetBrains s.r.o.. 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
|
||||
@@ -25,18 +26,29 @@
|
||||
|
||||
package sun.awt.X11;
|
||||
|
||||
import java.awt.AWTException;
|
||||
import java.awt.Component;
|
||||
import java.awt.Container;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.awt.im.InputMethodRequests;
|
||||
import java.awt.im.spi.InputMethodContext;
|
||||
import java.awt.peer.ComponentPeer;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import sun.awt.AWTAccessor;
|
||||
import sun.awt.X11GraphicsDevice;
|
||||
import sun.awt.X11InputMethod;
|
||||
|
||||
import sun.util.logging.PlatformLogger;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.CaretEvent;
|
||||
import javax.swing.event.CaretListener;
|
||||
import javax.swing.text.JTextComponent;
|
||||
|
||||
/**
|
||||
* Input Method Adapter for XIM (without Motif)
|
||||
*
|
||||
@@ -47,6 +59,7 @@ public class XInputMethod extends X11InputMethod {
|
||||
|
||||
public XInputMethod() throws AWTException {
|
||||
super();
|
||||
clientComponentCaretPositionTracker = new ClientComponentCaretPositionTracker(this);
|
||||
}
|
||||
|
||||
public void setInputMethodContext(InputMethodContext context) {
|
||||
@@ -58,8 +71,82 @@ public class XInputMethod extends X11InputMethod {
|
||||
if (peer != null) {
|
||||
adjustStatusWindow(peer.getContentWindow());
|
||||
}
|
||||
|
||||
if (doesSupportMovingCandidatesNativeWindow) {
|
||||
clientComponentCaretPositionTracker.onNotifyClientWindowChange(location);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void activate() {
|
||||
super.activate();
|
||||
|
||||
if (doesSupportMovingCandidatesNativeWindow) {
|
||||
updateCandidatesNativeWindowPosition(true);
|
||||
clientComponentCaretPositionTracker.startTracking(getClientComponent());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void deactivate(boolean isTemporary) {
|
||||
clientComponentCaretPositionTracker.stopTrackingCurrentComponent();
|
||||
super.deactivate(isTemporary);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispatchEvent(AWTEvent e) {
|
||||
if (doesSupportMovingCandidatesNativeWindow) {
|
||||
clientComponentCaretPositionTracker.onDispatchEvent(e);
|
||||
}
|
||||
super.dispatchEvent(e);
|
||||
}
|
||||
|
||||
|
||||
// Is called from native
|
||||
private static boolean isJbNewXimClientEnabled() {
|
||||
try {
|
||||
final String strVal = System.getProperty("jb.awt.newXimClient.enabled");
|
||||
final boolean defVal = true;
|
||||
|
||||
return (strVal == null) ? defVal : Boolean.parseBoolean(strVal);
|
||||
} catch (Exception err) {
|
||||
if (log.isLoggable(PlatformLogger.Level.SEVERE)) {
|
||||
log.severe("Error at isJbNewXimClientEnabled", err);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected boolean preferXBelowTheSpot() {
|
||||
try {
|
||||
if (BrokenImDetectionContext.EATEN_EVENTS_THRESHOLD > 0) {
|
||||
// The fix of JBR-1573,
|
||||
// which is incompatible with the implementation of the native below-the-spot mode (a.k.a. X over-the-spot),
|
||||
// is explicitly enabled.
|
||||
// So let's disable this mode in favor of that fix.
|
||||
|
||||
if (log.isLoggable(PlatformLogger.Level.WARNING)) {
|
||||
log.warning("The property \"jb.awt.newXimClient.preferBelowTheSpot\" is ignored in favor of the explicitly enabled \"recreate.x11.input.method\"");
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
final String strVal = System.getProperty("jb.awt.newXimClient.preferBelowTheSpot");
|
||||
final boolean defVal = true;
|
||||
|
||||
return (strVal == null) ? defVal : Boolean.parseBoolean(strVal);
|
||||
} catch (Exception err) {
|
||||
if (log.isLoggable(PlatformLogger.Level.SEVERE)) {
|
||||
log.severe("Error at isJbNewXimClientEnabled", err);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
protected boolean openXIM() {
|
||||
return openXIMNative(XToolkit.getDisplay());
|
||||
}
|
||||
@@ -69,14 +156,14 @@ public class XInputMethod extends X11InputMethod {
|
||||
if (peer == null) {
|
||||
return false;
|
||||
}
|
||||
return createXICNative(peer.getContentWindow());
|
||||
return createXICNative(peer.getContentWindow(), preferXBelowTheSpot());
|
||||
}
|
||||
|
||||
protected boolean recreateXIC(int ctxid) {
|
||||
final XComponentPeer peer = (XComponentPeer)getPeer(clientComponentWindow);
|
||||
if (peer == null || pData == 0)
|
||||
return true;
|
||||
return recreateXICNative(peer.getContentWindow(), pData, ctxid);
|
||||
return recreateXICNative(peer.getContentWindow(), pData, ctxid, preferXBelowTheSpot());
|
||||
}
|
||||
protected int releaseXIC() {
|
||||
if (pData == 0)
|
||||
@@ -86,8 +173,7 @@ public class XInputMethod extends X11InputMethod {
|
||||
|
||||
private static volatile long xicFocus;
|
||||
|
||||
protected void setXICFocus(ComponentPeer peer,
|
||||
boolean value, boolean active) {
|
||||
protected void setXICFocus(ComponentPeer peer, boolean value, boolean active) {
|
||||
if (peer == null) {
|
||||
return;
|
||||
}
|
||||
@@ -95,15 +181,17 @@ public class XInputMethod extends X11InputMethod {
|
||||
setXICFocusNative(((XComponentPeer)peer).getContentWindow(),
|
||||
value,
|
||||
active);
|
||||
|
||||
doesSupportMovingCandidatesNativeWindow = value && doesFocusedXICSupportMovingCandidatesNativeWindow();
|
||||
}
|
||||
|
||||
public static long getXICFocus() {
|
||||
return xicFocus;
|
||||
}
|
||||
|
||||
/* XAWT_HACK FIX ME!
|
||||
do NOT call client code!
|
||||
*/
|
||||
/* XAWT_HACK FIX ME!
|
||||
do NOT call client code!
|
||||
*/
|
||||
protected Container getParent(Component client) {
|
||||
return client.getParent();
|
||||
}
|
||||
@@ -222,12 +310,12 @@ public class XInputMethod extends X11InputMethod {
|
||||
|
||||
|
||||
static {
|
||||
int eatenEventsThresholdInitializer = 7;
|
||||
final String eventsThresholdMode = System.getProperty("recreate.x11.input.method", "true");
|
||||
int eatenEventsThresholdInitializer = 0;
|
||||
final String eventsThresholdMode = System.getProperty("recreate.x11.input.method", "false");
|
||||
|
||||
if ("false".equals(eventsThresholdMode)) {
|
||||
eatenEventsThresholdInitializer = 0;
|
||||
} else if (!"true".equals(eventsThresholdMode)) {
|
||||
if ("true".equalsIgnoreCase(eventsThresholdMode)) {
|
||||
eatenEventsThresholdInitializer = 7;
|
||||
} else if (!"false".equalsIgnoreCase(eventsThresholdMode)) {
|
||||
try {
|
||||
eatenEventsThresholdInitializer = Integer.parseInt(eventsThresholdMode);
|
||||
} catch (NumberFormatException err) {
|
||||
@@ -245,14 +333,397 @@ public class XInputMethod extends X11InputMethod {
|
||||
}
|
||||
|
||||
|
||||
// JBR-2460
|
||||
private volatile boolean doesSupportMovingCandidatesNativeWindow = false;
|
||||
private Point lastKnownCandidatesNativeWindowAbsolutePosition = null;
|
||||
|
||||
private void updateCandidatesNativeWindowPosition(final boolean forceUpdate) {
|
||||
assert(SwingUtilities.isEventDispatchThread());
|
||||
|
||||
if (!doesSupportMovingCandidatesNativeWindow) {
|
||||
return;
|
||||
}
|
||||
|
||||
final Component clientComponent = getClientComponent();
|
||||
if (clientComponent == null) {
|
||||
// No client
|
||||
return;
|
||||
}
|
||||
|
||||
final Window clientComponentWindow = getClientComponentWindow();
|
||||
if (clientComponentWindow == null) {
|
||||
// Impossible?
|
||||
return;
|
||||
}
|
||||
|
||||
if (!clientComponent.isShowing() || (!clientComponentWindow.isShowing())) {
|
||||
// Components are not showing yet, so it's impossible to determine their location on the screen
|
||||
// and/or the location of the caret
|
||||
return;
|
||||
}
|
||||
|
||||
final Point clientComponentAbsolutePos = clientComponent.getLocationOnScreen();
|
||||
final int clientComponentAbsoluteMaxX = clientComponentAbsolutePos.x + clientComponent.getWidth();
|
||||
final int clientComponentAbsoluteMaxY = clientComponentAbsolutePos.y + clientComponent.getHeight();
|
||||
|
||||
// Initial values are the fallback which is the bottom-left corner of the component
|
||||
final Point expectedCandidatesNativeWindowAbsolutePos = new Point(
|
||||
clientComponentAbsolutePos.x,
|
||||
clientComponentAbsoluteMaxY
|
||||
);
|
||||
|
||||
final InputMethodRequests clientImr = clientComponent.getInputMethodRequests();
|
||||
if (clientImr != null) {
|
||||
// An active client
|
||||
|
||||
final Rectangle caretRect = clientImr.getTextLocation(null);
|
||||
if (caretRect != null) {
|
||||
expectedCandidatesNativeWindowAbsolutePos.x = caretRect.x;
|
||||
expectedCandidatesNativeWindowAbsolutePos.y = caretRect.y + caretRect.height;
|
||||
}
|
||||
}
|
||||
|
||||
// Clamping within the client component's visible rect (if available and not empty) or just its bounds
|
||||
final var clientComponentVisibleRect = getJComponentVisibleRectIfNotEmpty(clientComponent);
|
||||
if (clientComponentVisibleRect == null) {
|
||||
expectedCandidatesNativeWindowAbsolutePos.x =
|
||||
Math.max(clientComponentAbsolutePos.x, Math.min(expectedCandidatesNativeWindowAbsolutePos.x, clientComponentAbsoluteMaxX - 1));
|
||||
expectedCandidatesNativeWindowAbsolutePos.y =
|
||||
Math.max(clientComponentAbsolutePos.y, Math.min(expectedCandidatesNativeWindowAbsolutePos.y, clientComponentAbsoluteMaxY - 1));
|
||||
} else {
|
||||
final int visibleBoundsAbsoluteMinX = clientComponentAbsolutePos.x + clientComponentVisibleRect.x;
|
||||
final int visibleBoundsAbsoluteMaxX = visibleBoundsAbsoluteMinX + clientComponentVisibleRect.width;
|
||||
final int visibleBoundsAbsoluteMinY = clientComponentAbsolutePos.y + clientComponentVisibleRect.y;
|
||||
final int visibleBoundsAbsoluteMaxY = visibleBoundsAbsoluteMinY + clientComponentVisibleRect.height;
|
||||
|
||||
expectedCandidatesNativeWindowAbsolutePos.x =
|
||||
Math.max(visibleBoundsAbsoluteMinX, Math.min(expectedCandidatesNativeWindowAbsolutePos.x, visibleBoundsAbsoluteMaxX - 1));
|
||||
expectedCandidatesNativeWindowAbsolutePos.y =
|
||||
Math.max(visibleBoundsAbsoluteMinY, Math.min(expectedCandidatesNativeWindowAbsolutePos.y, visibleBoundsAbsoluteMaxY - 1));
|
||||
}
|
||||
|
||||
// Scaling the coordinates according to the screen's current scaling settings.
|
||||
// To do it properly, we have to know the screen which the point is on.
|
||||
// The code below supposes this is the one which clientComponent belongs to, because we've clamped
|
||||
// the point coordinates within the component's bounds above.
|
||||
final X11GraphicsDevice candidatesNativeWindowDevice = getComponentX11Device(clientComponent);
|
||||
if (candidatesNativeWindowDevice != null) {
|
||||
expectedCandidatesNativeWindowAbsolutePos.x =
|
||||
candidatesNativeWindowDevice.scaleUpX(expectedCandidatesNativeWindowAbsolutePos.x);
|
||||
expectedCandidatesNativeWindowAbsolutePos.y =
|
||||
candidatesNativeWindowDevice.scaleUpY(expectedCandidatesNativeWindowAbsolutePos.y);
|
||||
}
|
||||
|
||||
// Clamping within screen bounds (to avoid the input candidates window to appear outside a screen).
|
||||
final Rectangle closestScreenScaledBounds = new Rectangle();
|
||||
final X11GraphicsDevice candidatesNativeWindowClosestScreen = findClosestScreenToPoint(
|
||||
closestScreenScaledBounds,
|
||||
expectedCandidatesNativeWindowAbsolutePos,
|
||||
candidatesNativeWindowDevice
|
||||
);
|
||||
if (candidatesNativeWindowClosestScreen != null) {
|
||||
final int screenScaledBoundsXMax = closestScreenScaledBounds.x + closestScreenScaledBounds.width - 1;
|
||||
final int screenScaledBoundsYMax = closestScreenScaledBounds.y + closestScreenScaledBounds.height - 1;
|
||||
|
||||
expectedCandidatesNativeWindowAbsolutePos.x =
|
||||
Math.max(closestScreenScaledBounds.x, Math.min(expectedCandidatesNativeWindowAbsolutePos.x, screenScaledBoundsXMax));
|
||||
expectedCandidatesNativeWindowAbsolutePos.y =
|
||||
Math.max(closestScreenScaledBounds.y, Math.min(expectedCandidatesNativeWindowAbsolutePos.y, screenScaledBoundsYMax));
|
||||
}
|
||||
|
||||
if (forceUpdate || !expectedCandidatesNativeWindowAbsolutePos.equals(lastKnownCandidatesNativeWindowAbsolutePosition)) {
|
||||
// adjustCandidatesNativeWindowPosition expects coordinates relative to the client window
|
||||
final Point clientComponentWindowAbsolutePos = clientComponentWindow.getLocationOnScreen();
|
||||
final X11GraphicsDevice clientComponentWindowDevice = getComponentX11Device(clientComponentWindow);
|
||||
if (clientComponentWindowDevice != null) {
|
||||
clientComponentWindowAbsolutePos.x =
|
||||
clientComponentWindowDevice.scaleUpX(clientComponentWindowAbsolutePos.x);
|
||||
clientComponentWindowAbsolutePos.y =
|
||||
clientComponentWindowDevice.scaleUpY(clientComponentWindowAbsolutePos.y);
|
||||
}
|
||||
|
||||
final int relativeX = expectedCandidatesNativeWindowAbsolutePos.x - clientComponentWindowAbsolutePos.x;
|
||||
final int relativeY = expectedCandidatesNativeWindowAbsolutePos.y - clientComponentWindowAbsolutePos.y;
|
||||
|
||||
awtLock();
|
||||
try {
|
||||
adjustCandidatesNativeWindowPosition(relativeX, relativeY);
|
||||
} finally {
|
||||
awtUnlock();
|
||||
}
|
||||
|
||||
lastKnownCandidatesNativeWindowAbsolutePosition = expectedCandidatesNativeWindowAbsolutePos;
|
||||
}
|
||||
}
|
||||
|
||||
private static Rectangle getJComponentVisibleRectIfNotEmpty(final Component component) {
|
||||
if (component instanceof JComponent jComponent) {
|
||||
final Rectangle result = jComponent.getVisibleRect();
|
||||
if ((result != null) && (result.width > 0) && (result.height > 0)) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static X11GraphicsDevice getComponentX11Device(final Component component) {
|
||||
if (component == null) return null;
|
||||
|
||||
final var componentGc = component.getGraphicsConfiguration();
|
||||
if (componentGc == null) return null;
|
||||
|
||||
return (componentGc.getDevice() instanceof X11GraphicsDevice result) ? result : null;
|
||||
}
|
||||
|
||||
private static X11GraphicsDevice findClosestScreenToPoint(
|
||||
final Rectangle outScreenScaledBounds,
|
||||
final Point absolutePointScaled,
|
||||
final X11GraphicsDevice... screensToCheckFirst
|
||||
) {
|
||||
assert(outScreenScaledBounds != null);
|
||||
|
||||
if (absolutePointScaled == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
final Iterator<X11GraphicsDevice> screensToCheck =
|
||||
Stream.concat( // screensToCheckFirst + GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
|
||||
Arrays.stream(screensToCheckFirst),
|
||||
Stream.<Supplier<GraphicsDevice[]>>of(() -> {
|
||||
final var localGe = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||
if (localGe != null) {
|
||||
return localGe.getScreenDevices();
|
||||
}
|
||||
return null;
|
||||
}).flatMap(supplier -> Stream.of(supplier.get()))
|
||||
).map(device -> (device instanceof X11GraphicsDevice screen) ? screen : null)
|
||||
.filter(Objects::nonNull)
|
||||
.iterator();
|
||||
|
||||
int closestScreenMinDistance = Integer.MAX_VALUE;
|
||||
X11GraphicsDevice result = null;
|
||||
while (screensToCheck.hasNext()) {
|
||||
final X11GraphicsDevice screen = screensToCheck.next();
|
||||
|
||||
final Rectangle screenBoundsScaled = screen.getBounds();
|
||||
if (screenBoundsScaled == null) {
|
||||
continue;
|
||||
}
|
||||
screenBoundsScaled.width = screen.scaleUp(screenBoundsScaled.width);
|
||||
screenBoundsScaled.height = screen.scaleUp(screenBoundsScaled.height);
|
||||
|
||||
final int distance = obtainDistanceBetween(screenBoundsScaled, absolutePointScaled);
|
||||
if (distance < closestScreenMinDistance) {
|
||||
result = screen;
|
||||
closestScreenMinDistance = distance;
|
||||
|
||||
outScreenScaledBounds.x = screenBoundsScaled.x;
|
||||
outScreenScaledBounds.y = screenBoundsScaled.y;
|
||||
outScreenScaledBounds.width = screenBoundsScaled.width;
|
||||
outScreenScaledBounds.height = screenBoundsScaled.height;
|
||||
|
||||
if (distance < 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static int obtainDistanceBetween(final Rectangle rectangle, final Point absolutePointScaled) {
|
||||
if ((rectangle.width < 1) || (rectangle.height < 1)) {
|
||||
return Integer.MAX_VALUE;
|
||||
}
|
||||
|
||||
final int screenBoundsScaledXMax = rectangle.x + rectangle.width - 1;
|
||||
final int screenBoundsScaledYMax = rectangle.y + rectangle.height - 1;
|
||||
|
||||
final int dx = Math.max(0, Math.max(rectangle.x - absolutePointScaled.x, absolutePointScaled.x - screenBoundsScaledXMax));
|
||||
final int dy = Math.max(0, Math.max(rectangle.y - absolutePointScaled.y, absolutePointScaled.y - screenBoundsScaledYMax));
|
||||
|
||||
return dx + dy; // just sum is enough for our purposes
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Native methods
|
||||
*/
|
||||
private native boolean openXIMNative(long display);
|
||||
private native boolean createXICNative(long window);
|
||||
private native boolean recreateXICNative(long window, long px11data, int ctxid);
|
||||
private native boolean createXICNative(long window, boolean preferBelowTheSpot);
|
||||
private native boolean recreateXICNative(long window, long px11data, int ctxid, boolean preferBelowTheSpot);
|
||||
private native int releaseXICNative(long px11data);
|
||||
private native void setXICFocusNative(long window,
|
||||
boolean value, boolean active);
|
||||
private native void setXICFocusNative(long window, boolean value, boolean active);
|
||||
private native void adjustStatusWindow(long window);
|
||||
|
||||
private native boolean doesFocusedXICSupportMovingCandidatesNativeWindow();
|
||||
|
||||
private native void adjustCandidatesNativeWindowPosition(int x, int y);
|
||||
|
||||
|
||||
/**
|
||||
* This class tries to track all the cases when the position of the parent XInputMethod's candidate window has
|
||||
* to be updated. Here are the examples of such cases:
|
||||
* <ul>
|
||||
* <li>The caret position has changed ;
|
||||
* <li>The component has been moved/resized ;
|
||||
* <li>The component's window has been moved/resized ;
|
||||
* <li>The component's text has been changed ;
|
||||
* </ul>
|
||||
* Tracking makes sense only when the parent XIM is in a mode allowing to move a native candidates window.
|
||||
* This is controlled by a flag {@link XInputMethod#doesSupportMovingCandidatesNativeWindow}.
|
||||
* Thus, the tracking gets enabled (via {@link #startTracking(Component)}) only when the flag is evaluated to true.
|
||||
*/
|
||||
private static class ClientComponentCaretPositionTracker implements ComponentListener, CaretListener, TextListener
|
||||
{
|
||||
public ClientComponentCaretPositionTracker(XInputMethod owner) {
|
||||
this.owner = new WeakReference<>(owner);
|
||||
}
|
||||
|
||||
|
||||
public void startTracking(final Component component) {
|
||||
stopTrackingCurrentComponent();
|
||||
|
||||
if (component == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
trackedComponent = new WeakReference<>(component);
|
||||
|
||||
// Moving and changing the size causes a possible change of caret position
|
||||
component.addComponentListener(this);
|
||||
|
||||
if (component instanceof JTextComponent jtc) {
|
||||
jtc.addCaretListener(this);
|
||||
isCaretListenerInstalled = true;
|
||||
} else if (component instanceof TextComponent tc) {
|
||||
tc.addTextListener(this);
|
||||
isTextListenerInstalled = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void stopTrackingCurrentComponent() {
|
||||
final Component trackedComponentStrong;
|
||||
if (trackedComponent == null) {
|
||||
trackedComponentStrong = null;
|
||||
} else {
|
||||
trackedComponentStrong = trackedComponent.get();
|
||||
trackedComponent.clear();
|
||||
trackedComponent = null;
|
||||
}
|
||||
|
||||
if (trackedComponentStrong == null) {
|
||||
isCaretListenerInstalled = false;
|
||||
isTextListenerInstalled = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (isTextListenerInstalled) {
|
||||
isTextListenerInstalled = false;
|
||||
((TextComponent)trackedComponentStrong).removeTextListener(this);
|
||||
}
|
||||
|
||||
if (isCaretListenerInstalled) {
|
||||
isCaretListenerInstalled = false;
|
||||
((JTextComponent)trackedComponentStrong).removeCaretListener(this);
|
||||
}
|
||||
|
||||
trackedComponentStrong.removeComponentListener(this);
|
||||
}
|
||||
|
||||
/* Listening callbacks */
|
||||
|
||||
public void onDispatchEvent(AWTEvent event) {
|
||||
if (isCaretListenerInstalled) {
|
||||
return;
|
||||
}
|
||||
|
||||
final int eventId = event.getID();
|
||||
|
||||
if ( (eventId >= MouseEvent.MOUSE_FIRST) && (eventId <= MouseEvent.MOUSE_LAST) ) {
|
||||
// The event hasn't been dispatched yet, so the caret position couldn't be changed.
|
||||
// Hence, we have to postpone the updating request.
|
||||
SwingUtilities.invokeLater(() -> updateImCandidatesNativeWindowPosition(false));
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !isTextListenerInstalled && (eventId >= KeyEvent.KEY_FIRST) && (eventId <= KeyEvent.KEY_LAST) ) {
|
||||
// The event hasn't been dispatched yet, so the caret position couldn't be changed.
|
||||
// Hence, we have to postpone the updating request.
|
||||
SwingUtilities.invokeLater(() -> updateImCandidatesNativeWindowPosition(false));
|
||||
}
|
||||
}
|
||||
|
||||
public void onNotifyClientWindowChange(Rectangle location) {
|
||||
if (location != null) {
|
||||
updateImCandidatesNativeWindowPosition(lastKnownClientWindowBounds == null);
|
||||
}
|
||||
lastKnownClientWindowBounds = location;
|
||||
}
|
||||
|
||||
// ComponentListener
|
||||
|
||||
@Override
|
||||
public void componentHidden(ComponentEvent e) {}
|
||||
|
||||
@Override
|
||||
public void componentMoved(ComponentEvent e) {
|
||||
updateImCandidatesNativeWindowPosition(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentResized(ComponentEvent e) {
|
||||
updateImCandidatesNativeWindowPosition(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentShown(ComponentEvent e) {
|
||||
updateImCandidatesNativeWindowPosition(false);
|
||||
}
|
||||
|
||||
// CaretListener
|
||||
|
||||
@Override
|
||||
public void caretUpdate(CaretEvent e) {
|
||||
updateImCandidatesNativeWindowPosition(false);
|
||||
}
|
||||
|
||||
// TextListener
|
||||
|
||||
@Override
|
||||
public void textValueChanged(TextEvent e) {
|
||||
updateImCandidatesNativeWindowPosition(false);
|
||||
}
|
||||
|
||||
/* Private parts */
|
||||
|
||||
private final WeakReference<XInputMethod> owner;
|
||||
private WeakReference<Component> trackedComponent = null;
|
||||
private boolean isCaretListenerInstalled = false;
|
||||
private boolean isTextListenerInstalled = false;
|
||||
private Rectangle lastKnownClientWindowBounds = null;
|
||||
|
||||
|
||||
private void updateImCandidatesNativeWindowPosition(boolean forceUpdate) {
|
||||
final XInputMethod ownerStrong = owner.get();
|
||||
|
||||
if ((ownerStrong == null) || (ownerStrong.isDisposed())) {
|
||||
// The owning XInputMethod instance is no longer valid
|
||||
|
||||
stopTrackingCurrentComponent();
|
||||
owner.clear();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ownerStrong.isActive) {
|
||||
stopTrackingCurrentComponent(); // will start tracking back when the owner gets active back
|
||||
return;
|
||||
}
|
||||
|
||||
ownerStrong.updateCandidatesNativeWindowPosition(forceUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
final ClientComponentCaretPositionTracker clientComponentCaretPositionTracker;
|
||||
}
|
||||
|
||||
@@ -1845,6 +1845,7 @@ final class XWM
|
||||
Native.putLong(data, 2, 0);
|
||||
Native.putLong(data, 3, 0);
|
||||
|
||||
XToolkit.awtLock();
|
||||
XErrorHandlerUtil.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
|
||||
XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
|
||||
XA_GTK_FRAME_EXTENTS.getAtom(),
|
||||
@@ -1853,8 +1854,8 @@ final class XWM
|
||||
data, 4);
|
||||
XErrorHandlerUtil.RESTORE_XERROR_HANDLER();
|
||||
} finally {
|
||||
XToolkit.awtUnlock();
|
||||
unsafe.freeMemory(data);
|
||||
data = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -31,6 +31,7 @@ import java.awt.datatransfer.UnsupportedFlavorException;
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import sun.awt.datatransfer.ClipboardTransferable;
|
||||
import sun.awt.datatransfer.DataTransferer;
|
||||
import sun.awt.datatransfer.SunClipboard;
|
||||
|
||||
@@ -91,6 +92,39 @@ final class WClipboard extends SunClipboard {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ======================= JBR-5980 Pasting from clipboard not working reliably in Windows =======================
|
||||
private static final boolean isContentsCacheDisabled; // initialized in the static block below
|
||||
private static final boolean areOwnershipExtraChecksEnabled; // initialized in the static block below
|
||||
|
||||
@Override
|
||||
public synchronized Transferable getContents(Object requestor) {
|
||||
if (isContentsCacheDisabled) {
|
||||
// JBR-5980: sometimes the cache (this.contents) doesn't reset when something gets copied to the
|
||||
// system clipboard outside of the Java app. This workaround allows to disable the caching, so
|
||||
// each call to getContents will result in reading the clipboard content from the system through
|
||||
// Win32 Clipbaord API.
|
||||
|
||||
return new ClipboardTransferable((SunClipboard)this);
|
||||
}
|
||||
|
||||
return super.getContents(requestor);
|
||||
}
|
||||
|
||||
// Upcall from native
|
||||
private void ensureNoOwnedData() {
|
||||
boolean thereAreOwnedData = false;
|
||||
synchronized (this) {
|
||||
thereAreOwnedData = ((this.owner != null) || (this.contents != null));
|
||||
}
|
||||
if (thereAreOwnedData) {
|
||||
// to properly clear everything
|
||||
lostOwnershipImpl();
|
||||
}
|
||||
}
|
||||
// ===============================================================================================================
|
||||
|
||||
|
||||
private void lostSelectionOwnershipImpl() {
|
||||
lostOwnershipImpl();
|
||||
}
|
||||
@@ -121,9 +155,27 @@ final class WClipboard extends SunClipboard {
|
||||
*/
|
||||
private native void publishClipboardData(long format, byte[] bytes);
|
||||
|
||||
private static native void init();
|
||||
private static native void init(boolean areOwnershipExtraChecksEnabled);
|
||||
static {
|
||||
init();
|
||||
// ====================== JBR-5980 Pasting from clipboard not working reliably in Windows ======================
|
||||
boolean flagInitializer = false; // let's fall back in the default behavior
|
||||
try {
|
||||
flagInitializer =
|
||||
"true".equalsIgnoreCase(System.getProperty("awt.windows.clipboard.cache.disabled", "true"));
|
||||
} catch (Throwable ignored) {
|
||||
}
|
||||
isContentsCacheDisabled = flagInitializer;
|
||||
|
||||
flagInitializer = false; // let's fall back in the default behavior
|
||||
try {
|
||||
flagInitializer =
|
||||
"true".equalsIgnoreCase(System.getProperty("awt.windows.clipboard.extraOwnershipChecksEnabled", "true"));
|
||||
} catch (Throwable ignored) {
|
||||
}
|
||||
areOwnershipExtraChecksEnabled = flagInitializer;
|
||||
// =============================================================================================================
|
||||
|
||||
init(areOwnershipExtraChecksEnabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -846,19 +846,30 @@ public class WWindowPeer extends WPanelPeer implements WindowPeer,
|
||||
|
||||
private void setRoundedCornersImpl(Object params) {
|
||||
if (params instanceof String) {
|
||||
int type = 0; // default
|
||||
if ("none".equals(params)) {
|
||||
type = 1;
|
||||
} else if ("full".equals(params)) {
|
||||
type = 2;
|
||||
} else if ("small".equals(params)) {
|
||||
type = 3;
|
||||
setRoundedCorners(getRoundedType(params), false, 0);
|
||||
} else if (params instanceof Object[]) {
|
||||
Object[] values = (Object[]) params;
|
||||
if (values.length == 2 && values[0] instanceof String && values[1] instanceof Color) {
|
||||
Color color = (Color) values[1];
|
||||
setRoundedCorners(getRoundedType(values[0]), true, color.getRGB());
|
||||
}
|
||||
setRoundedCorners(type);
|
||||
}
|
||||
}
|
||||
|
||||
private native void setRoundedCorners(int type);
|
||||
private static int getRoundedType(Object params) {
|
||||
if ("none".equals(params)) {
|
||||
return 1;
|
||||
}
|
||||
if ("full".equals(params)) {
|
||||
return 2;
|
||||
}
|
||||
if ("small".equals(params)) {
|
||||
return 3;
|
||||
}
|
||||
return 0; // default
|
||||
}
|
||||
|
||||
private native void setRoundedCorners(int type, boolean isBorderColor, int borderColor);
|
||||
|
||||
native void updateWindowImpl(int[] data, int width, int height);
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ jobject AwtClipboard::theCurrentClipboard;
|
||||
|
||||
/* This flag is set while we call EmptyClipboard to indicate to
|
||||
WM_DESTROYCLIPBOARD handler that we are not losing ownership */
|
||||
BOOL AwtClipboard::isGettingOwnership = FALSE;
|
||||
volatile BOOL AwtClipboard::isGettingOwnership = FALSE;
|
||||
|
||||
volatile jmethodID AwtClipboard::handleContentsChangedMID;
|
||||
volatile BOOL AwtClipboard::isClipboardViewerRegistered = FALSE;
|
||||
@@ -51,6 +51,8 @@ volatile BOOL AwtClipboard::isClipboardViewerRegistered = FALSE;
|
||||
*/
|
||||
|
||||
void AwtClipboard::LostOwnership(JNIEnv *env) {
|
||||
isOwner = FALSE;
|
||||
|
||||
if (theCurrentClipboard != NULL) {
|
||||
env->CallVoidMethod(theCurrentClipboard, lostSelectionOwnershipMID);
|
||||
DASSERT(!safe_ExceptionOccurred(env));
|
||||
@@ -93,6 +95,49 @@ void AwtClipboard::UnregisterClipboardViewer(JNIEnv *env) {
|
||||
CATCH_BAD_ALLOC;
|
||||
}
|
||||
|
||||
|
||||
// ======================== JBR-5980 Pasting from clipboard not working reliably in Windows ===========================
|
||||
volatile BOOL AwtClipboard::areOwnershipExtraChecksEnabled = FALSE;
|
||||
volatile BOOL AwtClipboard::isOwner = FALSE;
|
||||
jmethodID AwtClipboard::ensureNoOwnedDataMID = nullptr;
|
||||
|
||||
void AwtClipboard::SetOwnershipExtraChecksEnabled(BOOL enabled) {
|
||||
areOwnershipExtraChecksEnabled = enabled;
|
||||
}
|
||||
|
||||
void AwtClipboard::ExtraCheckOfOwnership() {
|
||||
if (areOwnershipExtraChecksEnabled != TRUE) {
|
||||
return;
|
||||
}
|
||||
|
||||
JNIEnv* const env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
|
||||
if (env == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isOwner == TRUE) {
|
||||
const HWND toolkitHwnd = AwtToolkit::GetInstance().GetHWnd();
|
||||
|
||||
if (::OpenClipboard(toolkitHwnd) == 0) {
|
||||
// failed to open the clipboard
|
||||
return;
|
||||
}
|
||||
const HWND clipboardOwnerHwnd = ::GetClipboardOwner();
|
||||
::CloseClipboard();
|
||||
|
||||
if (clipboardOwnerHwnd != toolkitHwnd) {
|
||||
AwtClipboard::LostOwnership(env);
|
||||
}
|
||||
} else {
|
||||
if ((theCurrentClipboard != nullptr) && (ensureNoOwnedDataMID != nullptr)) {
|
||||
env->CallVoidMethod(theCurrentClipboard, ensureNoOwnedDataMID);
|
||||
DASSERT(!safe_ExceptionOccurred(env));
|
||||
}
|
||||
}
|
||||
}
|
||||
// ====================================================================================================================
|
||||
|
||||
|
||||
extern "C" {
|
||||
|
||||
void awt_clipboard_uninitialize(JNIEnv *env) {
|
||||
@@ -111,7 +156,7 @@ void awt_clipboard_uninitialize(JNIEnv *env) {
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_sun_awt_windows_WClipboard_init(JNIEnv *env, jclass cls)
|
||||
Java_sun_awt_windows_WClipboard_init(JNIEnv *env, jclass cls, jboolean areOwnershipExtraChecksEnabled)
|
||||
{
|
||||
TRY;
|
||||
|
||||
@@ -119,6 +164,11 @@ Java_sun_awt_windows_WClipboard_init(JNIEnv *env, jclass cls)
|
||||
env->GetMethodID(cls, "lostSelectionOwnershipImpl", "()V");
|
||||
DASSERT(AwtClipboard::lostSelectionOwnershipMID != NULL);
|
||||
|
||||
AwtClipboard::ensureNoOwnedDataMID = env->GetMethodID(cls, "ensureNoOwnedData", "()V");
|
||||
DASSERT(AwtClipboard::ensureNoOwnedDataMID != nullptr);
|
||||
|
||||
AwtClipboard::SetOwnershipExtraChecksEnabled( (areOwnershipExtraChecksEnabled == JNI_TRUE) ? TRUE : FALSE );
|
||||
|
||||
CATCH_BAD_ALLOC;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
class AwtClipboard {
|
||||
private:
|
||||
static BOOL isGettingOwnership;
|
||||
static volatile BOOL isGettingOwnership;
|
||||
static volatile BOOL isClipboardViewerRegistered;
|
||||
static volatile jmethodID handleContentsChangedMID;
|
||||
|
||||
@@ -47,6 +47,7 @@ public:
|
||||
AwtClipboard::isGettingOwnership = TRUE;
|
||||
VERIFY(EmptyClipboard());
|
||||
AwtClipboard::isGettingOwnership = FALSE;
|
||||
AwtClipboard::isOwner = TRUE;
|
||||
}
|
||||
|
||||
INLINE static BOOL IsGettingOwnership() {
|
||||
@@ -57,6 +58,20 @@ public:
|
||||
static void WmClipboardUpdate(JNIEnv *env);
|
||||
static void RegisterClipboardViewer(JNIEnv *env, jobject jclipboard);
|
||||
static void UnregisterClipboardViewer(JNIEnv *env);
|
||||
|
||||
// ===================== JBR-5980 Pasting from clipboard not working reliably in Windows ==========================
|
||||
public:
|
||||
static jmethodID ensureNoOwnedDataMID;
|
||||
|
||||
public:
|
||||
static void SetOwnershipExtraChecksEnabled(BOOL enabled);
|
||||
// Checks if ownership has been lost since the last check or the last acquiring of ownership
|
||||
static void ExtraCheckOfOwnership();
|
||||
|
||||
private:
|
||||
static volatile BOOL areOwnershipExtraChecksEnabled;
|
||||
static volatile BOOL isOwner;
|
||||
// ================================================================================================================
|
||||
};
|
||||
|
||||
#endif /* AWT_CLIPBOARD_H */
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "jlong.h"
|
||||
#include "awt_AWTEvent.h"
|
||||
#include "awt_BitmapUtil.h"
|
||||
#include "awt_Clipboard.h"
|
||||
#include "awt_Component.h"
|
||||
#include "awt_Cursor.h"
|
||||
#include "awt_Dimension.h"
|
||||
@@ -1603,6 +1604,13 @@ LRESULT AwtComponent::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WM_ACTIVATEAPP:
|
||||
if (wParam == TRUE) {
|
||||
// the window is being activated, let's check if we still own the clipboard
|
||||
AwtClipboard::ExtraCheckOfOwnership();
|
||||
}
|
||||
mr = mrConsume;
|
||||
break;
|
||||
case WM_MOUSEACTIVATE: {
|
||||
AwtWindow *window = GetContainer();
|
||||
if (window && window->IsFocusableWindow()) {
|
||||
|
||||
@@ -54,6 +54,7 @@ typedef __int32 LONG_PTR;
|
||||
// Define these to be able to build with older SDKs
|
||||
#define DWM_WINDOW_CORNER_PREFERENCE int
|
||||
#define DWMWA_WINDOW_CORNER_PREFERENCE 33
|
||||
#define DWMWA_BORDER_COLOR 34
|
||||
|
||||
// Used for Swing's Menu/Tooltip animation Support
|
||||
const int UNSPECIFIED = 0;
|
||||
@@ -134,6 +135,8 @@ struct OpaqueStruct {
|
||||
struct RoundedCornersStruct {
|
||||
jobject window;
|
||||
DWM_WINDOW_CORNER_PREFERENCE type;
|
||||
jboolean isBorderColor;
|
||||
jint borderColor;
|
||||
};
|
||||
// struct for _UpdateWindow() method
|
||||
struct UpdateWindowStruct {
|
||||
@@ -3397,6 +3400,13 @@ void AwtWindow::_SetRoundedCorners(void *param) {
|
||||
|
||||
DwmSetWindowAttribute(window->GetHWnd(), DWMWA_WINDOW_CORNER_PREFERENCE, &rcs->type, sizeof(DWM_WINDOW_CORNER_PREFERENCE));
|
||||
|
||||
if (rcs->isBorderColor) {
|
||||
jint red = (rcs->borderColor >> 16) & 0xff;
|
||||
jint green = (rcs->borderColor >> 8) & 0xff;
|
||||
jint blue = (rcs->borderColor >> 0) & 0xff;
|
||||
COLORREF borderColor = RGB(red, green, blue);
|
||||
DwmSetWindowAttribute(window->GetHWnd(), DWMWA_BORDER_COLOR, &borderColor, sizeof(COLORREF));
|
||||
}
|
||||
ret:
|
||||
env->DeleteGlobalRef(self);
|
||||
delete rcs;
|
||||
@@ -4171,16 +4181,18 @@ Java_sun_awt_windows_WWindowPeer_repositionSecurityWarning(JNIEnv *env,
|
||||
/*
|
||||
* Class: sun_awt_windows_WWindowPeer
|
||||
* Method: setRoundedCorners
|
||||
* Signature: (I)V
|
||||
* Signature: (IZI)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_sun_awt_windows_WWindowPeer_setRoundedCorners(JNIEnv *env, jobject self, jint type)
|
||||
Java_sun_awt_windows_WWindowPeer_setRoundedCorners(JNIEnv *env, jobject self, jint type, jboolean isBorderColor, jint borderColor)
|
||||
{
|
||||
TRY;
|
||||
|
||||
RoundedCornersStruct *rcs = new RoundedCornersStruct;
|
||||
rcs->window = env->NewGlobalRef(self);
|
||||
rcs->type = (DWM_WINDOW_CORNER_PREFERENCE)type;
|
||||
rcs->isBorderColor = isBorderColor;
|
||||
rcs->borderColor = borderColor;
|
||||
|
||||
AwtToolkit::GetInstance().SyncCall(AwtWindow::_SetRoundedCorners, rcs);
|
||||
// global refs and rcs are deleted in _SetRoundedCorners
|
||||
|
||||
@@ -33,7 +33,8 @@ import java.awt.Window;
|
||||
*/
|
||||
public interface RoundedCornersManager {
|
||||
/**
|
||||
* @param params for macOS is Float object with radius.
|
||||
* @param params for macOS is Float object with radius or
|
||||
* Array with {Float for radius, Integer for border width, java.awt.Color for border color}.
|
||||
*
|
||||
* @param params for Windows 11 is String with values:
|
||||
* "default" - let the system decide whether or not to round window corners,
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
# 2. When only new API is added, or some existing API was @Deprecated - increment MINOR, reset PATCH to 0
|
||||
# 3. For major backwards incompatible API changes - increment MAJOR, reset MINOR and PATCH to 0
|
||||
|
||||
VERSION = 0.0.14
|
||||
VERSION = 0.0.15
|
||||
|
||||
# Hash is used to track changes to jetbrains.api, so you would not forget to update version when needed.
|
||||
# When you make any changes, "make jbr-api" will fail and ask you to update hash and version number here.
|
||||
|
||||
HASH = D28F22789F62EA4F8B8F4E7EC8B342E5
|
||||
HASH = 944323BE83C422C02167A3D328955130
|
||||
|
||||
90
test/hotspot/jtreg/jbFdProblemList.txt
Normal file
90
test/hotspot/jtreg/jbFdProblemList.txt
Normal file
@@ -0,0 +1,90 @@
|
||||
#
|
||||
# Copyright (c) 2016, 2022, 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.
|
||||
#
|
||||
|
||||
#############################################################################
|
||||
#
|
||||
# List of quarantined tests -- tests that should not be run by default, because
|
||||
# they may fail due to known reason. The reason (CR#) must be mandatory specified.
|
||||
#
|
||||
# List items are testnames followed by labels, all MUST BE commented
|
||||
# as to why they are here and use a label:
|
||||
# generic-all Problems on all platforms
|
||||
# generic-ARCH Where ARCH is one of: x64, i586, ppc64, ppc64le, s390x etc.
|
||||
# OSNAME-all Where OSNAME is one of: linux, windows, macosx, aix
|
||||
# OSNAME-ARCH Specific on to one OSNAME and ARCH, e.g. macosx-x64
|
||||
# OSNAME-REV Specific on to one OSNAME and REV, e.g. macosx-10.7.4
|
||||
#
|
||||
# More than one label is allowed but must be on the same line.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
|
||||
#############################################################################
|
||||
|
||||
# gtest
|
||||
|
||||
#gtest/AsyncLogGtest.java initial_run generic-all
|
||||
|
||||
# :hotspot_compiler
|
||||
|
||||
compiler/c2/irTests/TestVectorConditionalMove.java NOBUG windows-aarch64 # compiler.lib.ir_framework.driver.irmatching.IRViolationException: There were one or multiple IR rule failures. Please check stderr for more information.
|
||||
compiler/ciReplay/TestInlining.java 8300210 generic-all
|
||||
compiler/ciReplay/TestIncrementalInlining.java NOBUG generic-all
|
||||
compiler/ciReplay/TestInliningProtectionDomain.java NOBUG generic-all
|
||||
compiler/ciReplay/TestLambdas.java 8300210 generic-all
|
||||
compiler/ciReplay/TestServerVM.java 8300210 generic-all
|
||||
compiler/ciReplay/TestUnresolvedClasses.java NOBUG generic-all
|
||||
|
||||
#############################################################################
|
||||
|
||||
# :hotspot_gc
|
||||
|
||||
gc/stress/gcold/TestGCOldWithShenandoah.java#iu-aggressive NOBUG generic-all timeout
|
||||
|
||||
#############################################################################
|
||||
|
||||
# :hotspot_runtime
|
||||
|
||||
runtime/cds/appcds/dynamicArchive/TestDynamicDumpAtOom.java JBR-6291 generic-all
|
||||
|
||||
#############################################################################
|
||||
|
||||
# :hotspot_serviceability
|
||||
|
||||
serviceability/sa/ClhsdbCDSCore.java NOBUG macosx-all Can't attach to the core file
|
||||
|
||||
#############################################################################
|
||||
|
||||
# :hotspot_misc
|
||||
|
||||
#############################################################################
|
||||
|
||||
|
||||
#############################################################################
|
||||
|
||||
# :vmTestbase_*
|
||||
|
||||
#############################################################################
|
||||
|
||||
vmTestbase/gc/gctests/LargeObjects/large002/TestDescription.java NOBUG linux-all timeout
|
||||
vmTestbase/gc/gctests/StringInternSyncWithGC/StringInternSyncWithGC.java NOBUG macosx-all timeout on macstudio
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2016, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2016, 2020, 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
|
||||
@@ -38,20 +38,17 @@
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
|
||||
#############################################################################
|
||||
|
||||
# gtest
|
||||
|
||||
gtest/AsyncLogGtest.java initial_run generic-all
|
||||
gtest/GTestWrapper.java initial_run generic-all
|
||||
gtest/LargePageGtests.java#use-large-pages initial_run linux-all,windows-all
|
||||
gtest/LargePageGtests.java#use-large-pages-1G initial_run linux-all
|
||||
gtest/MetaspaceGtests.java#reclaim-none-ndebug initial_run generic-all
|
||||
gtest/LargePageGtests.java#use-large-pages-sysV initial_run linux-all
|
||||
gtest/LargePageGtests.java#use-large-pages-1G initial_run linux-all
|
||||
gtest/GTestWrapper.java initial_run generic-all
|
||||
gtest/MetaspaceUtilsGtests.java initial_run generic-all
|
||||
gtest/MetaspaceGtests.java#balanced-no-ccs initial_run generic-all
|
||||
gtest/MetaspaceGtests.java#reclaim-aggressive-ndebug initial_run generic-all
|
||||
gtest/MetaspaceGtests.java#reclaim-none-ndebug initial_run generic-all
|
||||
gtest/MetaspaceUtilsGtests.java initial_run generic-all
|
||||
gtest/LargePageGtests.java#use-large-pages initial_run linux-all,windows-all
|
||||
|
||||
gtest/NativeHeapTrimmerGtest.java JBR-5718 generic-all
|
||||
gtest/NMTGtests.java#nmt-detail JBR-5718 generic-all
|
||||
@@ -62,19 +59,21 @@ gc/stress/TestReclaimStringsLeaksMemory.java initial_run windows-all
|
||||
|
||||
gc/shenandoah/TestAllocObjects.java#aggressive initial_run generic-all
|
||||
gc/shenandoah/TestAllocObjects.java#iu-aggressive initial_run generic-all
|
||||
gc/shenandoah/mxbeans/TestChurnNotifications.java#aggressive JBR-6262 generic-all
|
||||
gc/shenandoah/mxbeans/TestChurnNotifications.java#aggressive initial_run generic-all
|
||||
gc/shenandoah/mxbeans/TestChurnNotifications.java#iu initial_run linux-x64
|
||||
|
||||
# :hotspot_compiler
|
||||
|
||||
compiler/ciReplay/TestSAServer.java 8029528 generic-all
|
||||
compiler/compilercontrol/jcmd/ClearDirectivesFileStackTest.java 8225370 generic-all
|
||||
compiler/gcbarriers/UnsafeIntrinsicsTest.java#ZGenerationalDebug 8311548 generic-aarch64
|
||||
compiler/jvmci/compilerToVM/GetFlagValueTest.java 8204459 generic-all
|
||||
compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/NativeCallTest.java 8262901 macosx-aarch64
|
||||
|
||||
compiler/cpuflags/TestAESIntrinsicsOnSupportedConfig.java 8190680 generic-all
|
||||
|
||||
compiler/runtime/Test8168712.java 8211769,8211771 generic-ppc64,generic-ppc64le,linux-s390x
|
||||
runtime/Thread/ThreadCountLimit.java 8293872 linux-all
|
||||
|
||||
compiler/rtm/locking/TestRTMAbortRatio.java 8183263 generic-x64
|
||||
compiler/rtm/locking/TestRTMAbortThreshold.java 8183263 generic-x64
|
||||
@@ -91,7 +90,7 @@ compiler/rtm/print/TestPrintPreciseRTMLockingStatistics.java 8183263 generic-x64
|
||||
compiler/c2/Test8004741.java 8235801 generic-all
|
||||
|
||||
compiler/vectorapi/VectorCastShape64Test.java initial_run generic-aarch64
|
||||
compiler/vectorapi/VectorRebracket128Test.java#ZSinglegen initial_run generic-aarch64
|
||||
compiler/vectorapi/VectorRebracket128Test.java initial_run generic-aarch64
|
||||
|
||||
#############################################################################
|
||||
|
||||
@@ -106,6 +105,8 @@ gc/stress/gclocker/TestGCLockerWithParallel.java 8180622 generic-all
|
||||
gc/stress/gclocker/TestGCLockerWithG1.java 8180622 generic-all
|
||||
gc/stress/gclocker/TestGCLockerWithShenandoah.java initial_run generic-all
|
||||
gc/stress/TestJNIBlockFullGC/TestJNIBlockFullGC.java 8192647 generic-all
|
||||
gc/metaspace/CompressedClassSpaceSizeInJmapHeap.java 8241293 macosx-x64
|
||||
gc/metaspace/TestMetaspacePerfCounters.java#id3 initial_run generic-all
|
||||
|
||||
gc/stress/gcold/TestGCOldWithShenandoah.java initial_run windows-all
|
||||
|
||||
@@ -113,72 +114,40 @@ gc/stress/gcold/TestGCOldWithShenandoah.java initial_run windows-all
|
||||
|
||||
# :hotspot_runtime
|
||||
|
||||
runtime/CompressedOops/CompressedClassPointers.java 8305765 generic-all
|
||||
runtime/CompressedOops/CompressedClassPointers.java 8262895 generic-aarch64
|
||||
|
||||
runtime/cds/CheckDefaultArchiveFile.java JBR-4227 generic-all
|
||||
runtime/cds/SharedBaseAddress.java initial_run generic-all
|
||||
runtime/cds/TestCDSVMCrash.java JBR-6246 generic-all
|
||||
runtime/cds/appcds/CommandLineFlagCombo.java JBR-6246 generic-all
|
||||
runtime/cds/appcds/TestDumpClassListSource.java JBR-6099 generic-all
|
||||
runtime/cds/appcds/TestZGCWithCDS.java#ZGenerational 8316319 generic-all
|
||||
runtime/cds/appcds/dynamicArchive/CDSStreamTestDriver.java initial_run generic-all
|
||||
runtime/cds/appcds/dynamicArchive/TestAutoCreateSharedArchiveNoDefaultArchive.java JBR-6246 generic-all
|
||||
runtime/cds/appcds/jigsaw/modulepath/ModulePathAndCP_JFR.java 8253437 windows-x64
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesAsCollectorTest.java initial_run generic-all
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesCastFailureTest.java initial_run generic-all
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesGeneralTest.java initial_run generic-all
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesInvokersTest.java initial_run generic-all
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesPermuteArgumentsTest.java initial_run generic-all
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesSpreadArgumentsTest.java initial_run generic-all
|
||||
|
||||
runtime/jni/daemonDestroy/TestDaemonDestroy.java JBR-6261 windows-x64
|
||||
runtime/cds/CheckDefaultArchiveFile.java JBR-4227 generic-all
|
||||
runtime/cds/DeterministicDump.java 8253495 generic-all
|
||||
runtime/jni/daemonDestroy/TestDaemonDestroy.java NOBUG windows-all # Expected to get exit value of [0], exit value is: [-1073741515]
|
||||
runtime/jni/terminatedThread/TestTerminatedThread.java 8219652 aix-ppc64
|
||||
runtime/handshake/HandshakeSuspendExitTest.java 8294313 generic-all
|
||||
runtime/os/TestTracePageSizes.java#no-options 8267460 linux-aarch64
|
||||
runtime/os/TestTracePageSizes.java#explicit-large-page-size 8267460 linux-aarch64
|
||||
runtime/os/TestTracePageSizes.java#compiler-options 8267460 linux-aarch64
|
||||
runtime/os/TestTracePageSizes.java#G1 8267460 linux-aarch64
|
||||
runtime/os/TestTracePageSizes.java#Parallel 8267460 linux-aarch64
|
||||
runtime/os/TestTracePageSizes.java#Serial 8267460 linux-aarch64
|
||||
runtime/ErrorHandling/CreateCoredumpOnCrash.java 8267433,initial_run macosx-x64,windows-aarch64
|
||||
runtime/ErrorHandling/MachCodeFramesInErrorFile.java JBR-6258 windows-aarch64
|
||||
runtime/vthread/RedefineClass.java 8297286 generic-all
|
||||
runtime/vthread/TestObjectAllocationSampleEvent.java 8297286 generic-all
|
||||
runtime/StackGuardPages/TestStackGuardPages.java 8293452 linux-all
|
||||
|
||||
applications/jcstress/copy.java 8229852 linux-all
|
||||
|
||||
containers/docker/TestJcmd.java 8278102 linux-all
|
||||
|
||||
runtime/memory/ReserveMemory.java initial_run windows-aarch64
|
||||
runtime/memory/ReadFromNoaccessArea.java initial_run windows-aarch64
|
||||
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesInvokersTest.java initial_run generic-all
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesCastFailureTest.java initial_run generic-all
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesGeneralTest.java initial_run generic-all
|
||||
runtime/ReservedStack/ReservedStackTestCompiler.java initial_run windows-aarch64
|
||||
runtime/cds/appcds/dynamicArchive/CDSStreamTestDriver.java initial_run generic-all
|
||||
runtime/ErrorHandling/CreateCoredumpOnCrash.java initial_run windows-aarch64
|
||||
runtime/ErrorHandling/MachCodeFramesInErrorFile.java JBR-6289 windows-aarch64
|
||||
runtime/ReservedStack/ReservedStackTest.java initial_run windows-aarch64
|
||||
runtime/reflect/ReflectOutOfMemoryError.java 8316060 generic-all
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesPermuteArgumentsTest.java initial_run generic-all
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesAsCollectorTest.java initial_run generic-all
|
||||
runtime/cds/SharedBaseAddress.java initial_run generic-all
|
||||
runtime/cds/appcds/methodHandles/MethodHandlesSpreadArgumentsTest.java initial_run generic-all
|
||||
|
||||
#############################################################################
|
||||
|
||||
# :hotspot_serviceability
|
||||
|
||||
serviceability/sa/sadebugd/DebugdConnectTest.java 8239062,8270326 macosx-x64,macosx-aarch64
|
||||
serviceability/dcmd/vm/TrimLibcHeapTest.java 8312625 linux-all
|
||||
|
||||
serviceability/sa/sadebugd/DebugdConnectTest.java 8239062 macosx-x64
|
||||
serviceability/sa/TestRevPtrsForInvokeDynamic.java 8241235 generic-all
|
||||
|
||||
serviceability/jvmti/ModuleAwareAgents/ThreadStart/MAAThreadStart.java 8225354 windows-all
|
||||
serviceability/jvmti/vthread/GetSetLocalTest/GetSetLocalTest.java 8286836 generic-all
|
||||
serviceability/dcmd/gc/RunFinalizationTest.java 8227120 linux-all,windows-x64
|
||||
|
||||
serviceability/sa/ClhsdbCDSCore.java 8294316,8267433 macosx-x64
|
||||
serviceability/sa/ClhsdbFindPC.java#xcomp-core 8294316,8267433,JBR-6259 macosx-x64,windows-aarch64
|
||||
serviceability/sa/ClhsdbFindPC.java#no-xcomp-core 8294316,8267433,JBR-6259 macosx-x64,linux_aarch64,windows-aarch64
|
||||
serviceability/sa/ClhsdbPmap.java#core 8294316,8267433,JBR-6259 macosx-x64,windows-aarch64
|
||||
serviceability/sa/ClhsdbPstack.java#core 8294316,8267433,JBR-6259 macosx-x64,windows-aarch64
|
||||
serviceability/sa/ClhsdbThreadContext.java JBR-6260 windows-aarch64
|
||||
serviceability/sa/TestJmapCore.java 8294316,8267433 macosx-x64
|
||||
serviceability/sa/TestJmapCoreMetaspace.java 8294316,8267433 macosx-x64
|
||||
|
||||
serviceability/attach/ConcAttachTest.java 8290043 linux-all
|
||||
serviceability/jvmti/RedefineClasses/RedefineSharedClassJFR.java JBR-6245 generic-all
|
||||
serviceability/jvmti/RedefineClasses/TestMultipleClasses.java initial_run windows-all
|
||||
serviceability/jvmti/SetBreakpoint/TestManyBreakpoints.java initial_run generic-aarch64
|
||||
|
||||
@@ -188,6 +157,7 @@ serviceability/sa/ClhsdbPrintAs.java initial_run generic-all
|
||||
serviceability/sa/ClhsdbFindPC.java#id1 initial_run generic-all
|
||||
serviceability/sa/ClhsdbFindPC.java#id2 initial_run generic-all
|
||||
serviceability/sa/ClhsdbFindPC.java#id3 initial_run generic-all
|
||||
serviceability/sa/ClhsdbFindPC.java#no-xcomp-process 8269881 generic-all 8277079
|
||||
serviceability/sa/ClhsdbCDSJstackPrintAll.java initial_run windows-aarch64
|
||||
serviceability/sa/TestClhsdbJstackLock.java initial_run windows-aarch64
|
||||
serviceability/sa/ClhsdbSource.java initial_run windows-aarch64
|
||||
@@ -214,9 +184,12 @@ serviceability/sa/ClhsdbDumpheap.java initial_run windows-aarch64
|
||||
#############################################################################
|
||||
|
||||
vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded003/TestDescription.java 8153598 generic-all
|
||||
vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded001/TestDescription.java 8198668 generic-all
|
||||
vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded002/TestDescription.java 8153598 generic-all
|
||||
vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded003/TestDescription.java 8198668 generic-all
|
||||
vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded004/TestDescription.java 8153598 generic-all
|
||||
vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded005/TestDescription.java 8153598 generic-all
|
||||
vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock001/TestDescription.java 8060733 generic-all
|
||||
|
||||
vmTestbase/nsk/jdb/options/listconnectors/listconnectors001/listconnectors001.java initial_run windows-all
|
||||
|
||||
@@ -226,7 +199,7 @@ vmTestbase/nsk/jdi/LaunchingConnector/launchnosuspend/launchnosuspend001/TestDes
|
||||
|
||||
vmTestbase/nsk/jdi/ThreadReference/stop/stop001/TestDescription.java 7034630 generic-all
|
||||
vmTestbase/nsk/jdi/ReferenceType/instances/instances002/instances002.java initial_run linux-all
|
||||
vmTestbase/nsk/jdi/stress/ClassPrepareEvents/ClassPrepareEvents001/ClassPrepareEvents001.java
|
||||
vmTestbase/nsk/jdi/Value/type/type003/TestDescription.java time_out_intermittent macosx-all
|
||||
|
||||
vmTestbase/metaspace/gc/firstGC_10m/TestDescription.java 8208250 generic-all
|
||||
vmTestbase/metaspace/gc/firstGC_50m/TestDescription.java 8208250 generic-all
|
||||
@@ -237,17 +210,11 @@ vmTestbase/nsk/jvmti/AttachOnDemand/attach045/TestDescription.java 8202971 gener
|
||||
vmTestbase/nsk/jvmti/scenarios/jni_interception/JI05/ji05t001/TestDescription.java 8219652 aix-ppc64
|
||||
vmTestbase/nsk/jvmti/scenarios/jni_interception/JI06/ji06t001/TestDescription.java 8219652 aix-ppc64
|
||||
vmTestbase/nsk/jvmti/SetJNIFunctionTable/setjniftab001/TestDescription.java 8219652 aix-ppc64
|
||||
vmTestbase/nsk/jvmti/AttachOnDemand/attach002a/TestDescription.java 8277812 generic-all
|
||||
vmTestbase/nsk/jvmti/scenarios/capability/CM03/cm03t001/TestDescription.java 8073470 linux-all
|
||||
vmTestbase/nsk/jvmti/InterruptThread/intrpthrd003/TestDescription.java 8288911 macosx-x64
|
||||
|
||||
vmTestbase/nsk/jvmti/scenarios/sampling/SP04/sp04t001/TestDescription.java initial_run windows-x64
|
||||
vmTestbase/nsk/jvmti/scenarios/sampling/SP04/sp04t002/TestDescription.java initial_run windows-x64
|
||||
vmTestbase/nsk/jvmti/scenarios/sampling/SP05/sp05t003/TestDescription.java initial_run generic-all
|
||||
|
||||
vmTestbase/gc/gctests/LargeObjects/large003/TestDescription.java 8307788 generic-all
|
||||
vmTestbase/gc/gctests/LargeObjects/large004/TestDescription.java 8307788 generic-all
|
||||
vmTestbase/gc/gctests/LargeObjects/large005/TestDescription.java 8307788 generic-all
|
||||
vmTestbase/gc/lock/jni/jnilock002/TestDescription.java 8192647 generic-all
|
||||
|
||||
vmTestbase/jit/escape/LockCoarsening/LockCoarsening001.java 8148743 generic-all
|
||||
@@ -257,21 +224,68 @@ vmTestbase/jit/misctests/fpustack/GraphApplet.java linux-x64
|
||||
|
||||
vmTestbase/vm/mlvm/hiddenloader/stress/byteMutation/Test.java initial_run windows-all
|
||||
vmTestbase/vm/mlvm/indy/func/jvmti/redefineClassInBootstrap/TestDescription.java 8013267 generic-all
|
||||
vmTestbase/vm/mlvm/meth/stress/jdi/breakpointInCompiledCode/Test.java 8257761 generic-all
|
||||
vmTestbase/vm/mlvm/indy/func/jvmti/mergeCP_indy2none_a/TestDescription.java 8013267 generic-all
|
||||
vmTestbase/vm/mlvm/indy/func/jvmti/mergeCP_indy2manyDiff_b/TestDescription.java 8013267 generic-all
|
||||
vmTestbase/vm/mlvm/indy/func/jvmti/mergeCP_indy2manySame_b/TestDescription.java 8013267 generic-all
|
||||
vmTestbase/vm/mlvm/meth/stress/compiler/deoptimize/Test.java#id0 initial_run macos-aarch64
|
||||
vmTestbase/vm/mlvm/meth/stress/compiler/deoptimize/Test.java#id0 8269393 macos-aarch64
|
||||
|
||||
|
||||
vmTestbase/nsk/jdwp/ThreadReference/ForceEarlyReturn/forceEarlyReturn001/forceEarlyReturn001.java 7199837 generic-all
|
||||
|
||||
vmTestbase/nsk/stress/except/except012.java 8297977 generic-all
|
||||
vmTestbase/nsk/stress/strace/strace002.java 8288912 macosx-x64,windows-x64
|
||||
vmTestbase/nsk/stress/strace/strace003.java 8297824 macosx-x64,windows-x64
|
||||
vmTestbase/nsk/stress/strace/strace004.java 8297824 macosx-x64,windows-x64
|
||||
vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Multi/Multi005/TestDescription.java 8076494 windows-x64
|
||||
#############################################################################
|
||||
|
||||
### initial_runs
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc1/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc10/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc11/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc12/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc13/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc14/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc15/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc16/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc17/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc18/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc19/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc2/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc20/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc21/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc22/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc23/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc24/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc25/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc26/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc27/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc28/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc29/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc3/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc30/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc31/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc32/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc33/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc34/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc35/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc36/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc37/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc38/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc39/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc4/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc40/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc41/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc42/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc43/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc44/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc45/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc46/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc47/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc48/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc49/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc5/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc50/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc51/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc52/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc6/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc7/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc8/TestDescription.java 8271615 macosx-all
|
||||
vmTestbase/vm/jit/LongTransitions/nativeFnc9/TestDescription.java 8271615 macosx-all
|
||||
|
||||
vmTestbase/nsk/stress/thread/thread008.java initial_run windows-all
|
||||
|
||||
@@ -279,4 +293,8 @@ vmTestbase/nsk/sysdict/vm/stress/btree/btree001/btree001.java initial_run window
|
||||
vmTestbase/nsk/sysdict/vm/stress/btree/btree005/btree005.java initial_run windows-aarch64
|
||||
vmTestbase/nsk/sysdict/vm/stress/btree/btree009/btree009.java initial_run windows-aarch64
|
||||
|
||||
resourcehogs/serviceability/sa/TestHeapDumpForLargeArray.java 8220624 generic-all
|
||||
|
||||
testlibrary_tests/ir_framework/tests/TestDTestAndExclude.java initial_run windows-all
|
||||
|
||||
jb/applications/ctw/plugins_cucumber_java_lib_cucumber_java.java JBR-6084 windows-all
|
||||
119
test/jdk/jbFdProblemList.txt
Normal file
119
test/jdk/jbFdProblemList.txt
Normal file
@@ -0,0 +1,119 @@
|
||||
###########################################################################
|
||||
#
|
||||
# Copyright (c) 2023, JetBrains s.r.o.
|
||||
# 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.
|
||||
#
|
||||
###########################################################################
|
||||
#
|
||||
# List of tests that should not be run by test/Makefile, for various reasons:
|
||||
# 1. Does not run with jtreg -samevm mode
|
||||
# 2. Causes problems in jtreg -samevm mode for jtreg or tests that follow it
|
||||
# 3. The test is too slow or consumes too many system resources
|
||||
# 4. The test fails when run on any official build systems
|
||||
#
|
||||
# It is possible that a test being on this list is a mistake, and that some
|
||||
# other test in samevm mode caused tests to fail, mistakes happen.
|
||||
#
|
||||
# Tests marked @ignore are not run by test/Makefile, but harmless to be listed.
|
||||
#
|
||||
# Tests that explicitly state "@run main/othervm ...", and are not listed here,
|
||||
# will be run in the same batch as the samevm tests.
|
||||
#
|
||||
# Shell tests are othervm by default.
|
||||
#
|
||||
# List items are testnames followed by labels, all MUST BE commented
|
||||
# as to why they are here and use a label:
|
||||
# generic-all Problems on all platforms
|
||||
# generic-ARCH Where ARCH is one of: x64, i586, ppc64, ppc64le, s390x, aarch64 etc.
|
||||
# OSNAME-all Where OSNAME is one of: linux, windows, macosx, aix
|
||||
# OSNAME-ARCH Specific on to one OSNAME and ARCH, e.g. macosx-x64
|
||||
# OSNAME-REV Specific on to one OSNAME and REV, e.g. macosx-10.7.4
|
||||
#
|
||||
# More than one label is allowed but must be on the same line comma seperated,
|
||||
# without spaces.
|
||||
# If there are several lines mentioning the same test, the last one is used.
|
||||
#
|
||||
#############################################################################
|
||||
#
|
||||
# Running the tests:
|
||||
# cd test && make JT_HOME=jtreg_home PRODUCT_HOME=jdk_home jdk_all
|
||||
# Or instead of jdk_all, use any of the jdk_* targets.
|
||||
#
|
||||
# Samevm Notes:
|
||||
# * Although some tests may have only been seen to fail on some platforms,
|
||||
# they might be flagged as 'generic-all' because the problem they have
|
||||
# could cause hidden slowdowns on other platforms.
|
||||
# Most samevm problems will be generic-all, but windows usually dislikes
|
||||
# them the most.
|
||||
# Address already in use or connection errors indicate a generic port issue.
|
||||
# (this is not necessarily a samevm issue, but an issue for running the tests
|
||||
# on shared machines, two people or two test runs will collide).
|
||||
# * Samevm problem (windows in particular) is not closing all input/output
|
||||
# * Samevm problem when a test calls setSecurityManager()
|
||||
# * Samevm problem with setHttps*() is used? (not exactly sure here)
|
||||
# * Samevm problem when stuffing system properties with non Strings or anything
|
||||
# * Samevm problem when changing vm settings, or registering any vm actions
|
||||
# * Samevm problems with deleteOnExit(), if it must happen at end of test
|
||||
# * Samevm problems with URLClassLoader? (no details here)
|
||||
# * Samevm problems with dependence on predictable GC or finalizations
|
||||
#
|
||||
# Any of the above problems may mean the test needs to be flagged as "othervm".
|
||||
#
|
||||
#############################################################################
|
||||
#
|
||||
# Fixing the tests:
|
||||
#
|
||||
# Some tests just may need to be run with "othervm", and that can easily be
|
||||
# done by adding a @run line (or modifying any existing @run):
|
||||
# @run main/othervm NameOfMainClass
|
||||
# Make sure this @run follows any use of @library.
|
||||
# Otherwise, if the test is a samevm possibility, make sure the test is
|
||||
# cleaning up after itself, closing all streams, deleting temp files, etc.
|
||||
#
|
||||
# Keep in mind that the bug could be in many places, and even different per
|
||||
# platform, it could be a bug in any one of:
|
||||
# - the testcase
|
||||
# - the jdk (jdk classes, native code, or hotspot)
|
||||
# - the native compiler
|
||||
# - the javac compiler
|
||||
# - the OS (depends on what the testcase does)
|
||||
#
|
||||
# If you managed to really fix one of these tests, here is how you can
|
||||
# remove tests from this list:
|
||||
# 1. Make sure test passes on all platforms with samevm, or mark it othervm
|
||||
# 2. Make sure test passes on all platforms when run with it's entire group
|
||||
# 3. Make sure both VMs are tested, -server and -client, if possible
|
||||
# 4. Use your favorite build and test system to verify these results
|
||||
# 5. Delete lines in this file, include the changes with your test changes
|
||||
#
|
||||
# You may need to repeat your testing 2 or even 3 times to verify good
|
||||
# results, some of these samevm failures are not very predictable.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
############################################################################
|
||||
|
||||
java/awt/Frame/GetGraphicsStressTest/GetGraphicsStressTest.java NOBUG windows-all timeout
|
||||
java/awt/MenuItem/EnableTest.java NOBUG windows-all timeout
|
||||
java/awt/Robot/NonEmptyErrorStream.java JBR-6275 macosx-all
|
||||
|
||||
javax/swing/plaf/synth/SynthButtonUI/6276188/bug6276188.java NOBUG macosx-all Synth ButtonUI does not handle PRESSED & MOUSE_OVER state
|
||||
javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java JBR-5952,JBR-6274 windows-x64,macosx-all
|
||||
@@ -1,5 +1,6 @@
|
||||
java/awt/Choice/ChoicePopupLocation/ChoicePopupLocation.java 8202931,JBR-5398 macosx-all,linux-all,windows-all
|
||||
java/awt/Debug/X11Trace.java JBR-5442 linux-all
|
||||
java/awt/Dialog/NestedDialogs/Modal/NestedModalDialogTest.java JBR-6294 linux-all
|
||||
java/awt/Multiscreen/MultiScreenLocationTest/MultiScreenLocationTest.java JBR-6058 windows-all
|
||||
java/awt/FullScreen/CurrentDisplayModeTest/CurrentDisplayModeTest.java JBR-5059 linux-all
|
||||
java/awt/FullScreen/MultimonFullscreenTest/MultimonDeadlockTest.java JBR-4379 windows-all
|
||||
@@ -22,6 +23,7 @@ java/awt/Robot/HiDPIScreenCapture/ScreenCaptureTest.java 8253184,JBR-5442 window
|
||||
java/awt/Robot/MouseLocationOnScreen/MouseLocationOnScreen.java JBR-5390 macosx-all,linux-all
|
||||
java/awt/Robot/NonEmptyErrorStream.java JBR-5442 linux-all
|
||||
java/awt/Robot/RobotMoveMultiscreen.java JBR-5442 linux-all
|
||||
java/awt/TextArea/TextAreaEditing/TextAreaEditing.java JBR-6282 linux-all
|
||||
java/awt/Toolkit/AWTEventListenerProxyTest/AWTEventListenerProxyTest.java JBR-6065 windows-all
|
||||
java/awt/Window/SlowMotion/SlowMotion.java JBR-5442 linux-all
|
||||
java/awt/Window/WindowSizeDifferentScreens/WindowSizeDifferentScreens.java JBR-5442 linux-all
|
||||
@@ -36,6 +38,7 @@ javax/swing/JMenu/4692443/bug4692443.java JBR-6065 windows-all
|
||||
javax/swing/JMenuBar/4750590/bug4750590.java JBR-6065 windows-all
|
||||
javax/swing/JMenuItem/4171437/bug4171437.java JBR-6065 windows-all
|
||||
javax/swing/JTable/7124218/SelectEditTableCell.java JBR-5442 linux-all
|
||||
javax/swing/JTextArea/8149849/DNDTextToScaledArea.java JBR-6296 linux-all
|
||||
javax/swing/JTextField/8036819/bug8036819.java JBR-6065 windows-all
|
||||
javax/swing/JTree/4927934/bug4927934.java JBR-6065 windows-all
|
||||
javax/swing/plaf/basic/BasicGraphicsUtils/8132119/bug8132119.java JBR-5442 linux-all
|
||||
@@ -43,3 +46,102 @@ javax/swing/plaf/metal/MetalGradient/8163193/ButtonGradientTest.java 8253184,JBR
|
||||
javax/swing/SwingWorker/TestDoneBeforeDoInBackground.java JBR-5442 linux-all
|
||||
javax/swing/text/html/StyleSheet/bug4936917.java JBR-899,JBR-5510,JBR-5442 windows-all,linux-all
|
||||
javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java JBR-5952,JBR-5442 windows-x64,linux-all
|
||||
|
||||
|
||||
java/awt/Choice/ChoiceGeneratesItemEvents.java JBR-551 linux-all
|
||||
java/awt/Choice/ChoiceStaysOpenedOnTAB.java JBR-5510 linux-all
|
||||
java/awt/Choice/PopdownGeneratesMouseEvents/PopdownGeneratesMouseEvents.java JBR-5510 linux-all
|
||||
java/awt/ColorClass/AlphaColorTest.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
java/awt/Component/RepaintTest.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
java/awt/Dialog/DialogAboveFrame/DialogAboveFrameTest.java JBR-5210,JBR-5510 windows-all,linux-all
|
||||
java/awt/dnd/DnDTestWithHIDPI/DragTestWithHIDPI.java NOBUG linux-all
|
||||
java/awt/Frame/InvisibleOwner/InvisibleOwner.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java JBR-5210 windows-all,linux-all
|
||||
java/awt/Graphics/XORPaint.java#id2 NOBUG linux-all
|
||||
java/awt/Graphics2D/CopyAreaOOB.java JBR-5354 macosx-all,windows-all,linux-all
|
||||
java/awt/image/multiresolution/MenuMultiresolutionIconTest.java JBR-4880,8253184,JBR-5510 windows-all,linux-all
|
||||
java/awt/image/multiresolution/MultiResolutionJOptionPaneIconTest.java 8253184,JBR-5510 windows-all,linux-all
|
||||
java/awt/Menu/OpensWithNoGrab/OpensWithNoGrab.java JBR-5510 linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JButtonInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JButtonOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JColorChooserOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java 8049405,JBR-5359,JBR-5510 macosx-all,windows-aarch64,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JEditorPaneInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JEditorPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JGlassPaneInternalFrameOverlapping.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JGlassPaneMoveOverlapping.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JInternalFrameMoveOverlapping.java 6986109,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JInternalFrameOverlapping.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JLabelInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JLabelOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JListInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JListOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JPanelInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JPanelOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JPopupMenuOverlapping.java JBR-5210,8049405,JBR-5510 windows-all,macosx-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JProgressBarInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JProgressBarOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JScrollBarInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JScrollBarOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JScrollPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JSliderInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JSliderOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JSpinnerInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JSpinnerOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JTableInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JTableOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JTextAreaInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JTextAreaOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JTextFieldInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JTextFieldOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JToggleButtonInGlassPaneOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JToggleButtonOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/ViewportOverlapping.java 8158801,JBR-5510 windows-all,linux-all
|
||||
java/awt/Modal/BlockedMouseInputTest.java NOBUG linux-all
|
||||
java/awt/Modal/ModalDialogOrderingTest/ModalDialogOrderingTest.java 8066259,8253184,JBR-5510 macosx-all,windows-all,linux-all
|
||||
java/awt/Modal/MultipleDialogs/MultipleDialogs4Test.java 8198665,8253184,JBR-5510 macosx-all,windows-all,linux-all
|
||||
java/awt/Paint/PaintNativeOnUpdate.java 8253184,JBR-5510 windows-all,linux-all
|
||||
java/awt/PopupMenu/PopupMenuStayOpen.java NOBUG linux-all
|
||||
java/awt/Robot/HiDPIScreenCapture/HiDPIRobotScreenCaptureTest.java 8253184,NOBUG windows-all,linux-all
|
||||
java/awt/Robot/HiDPIScreenCapture/ScreenCaptureGtkTest.java NOBUG linux-all
|
||||
java/awt/Window/8159168/SetShapeTest.java 8253184,JBR-5510 windows-all,linux-all
|
||||
java/awt/Window/BackgroundIsNotUpdated/BackgroundIsNotUpdated.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
java/awt/Window/MultiWindowApp/ChildAlwaysOnTopTest.java JBR-5510,JBR-5359 linux-all,windows-aarch64
|
||||
java/awt/Window/MultiWindowApp/MultiWindowAppTest.java 8253184,JBR-5510 windows-all,linux-all
|
||||
java/awt/Window/ShapedAndTranslucentWindows/SetShape.java 8253184,JBR-5510 windows-all,linux-all
|
||||
java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
java/awt/Window/WindowTitleVisibleTest/WindowTitleVisibleTestLinuxGnome.java NOBUG linux-all
|
||||
javax/swing/JButton/8151303/PressedIconTest.java JBR-5210,JBR-5510 windows-all,linux-all
|
||||
javax/swing/JComponent/7154030/bug7154030.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
javax/swing/JDialog/Transparency/TransparencyTest.java 8253184,JBR-5510 windows-all,linux-all
|
||||
javax/swing/JEditorPane/8195095/ImageViewTest.java 8253184,JBR-5510 windows-all,linux-all
|
||||
javax/swing/JEditorPane/TestBrowserBGColor.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
javax/swing/JFormattedTextField/TestSelectedTextBackgroundColor.java JBR-5510,JBR-6160 linux-all
|
||||
javax/swing/JFrame/8175301/ScaledFrameBackgroundTest.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
javax/swing/JInternalFrame/5066752/bug5066752.java 8253184,JBR-5510 windows-all,linux-all
|
||||
javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
javax/swing/JMenu/JMenuSelectedColorTest.java JBR-5510 linux-all
|
||||
javax/swing/JMenu/TestDisabledMenuForegroundColor.java JBR-5510 linux-all
|
||||
javax/swing/JPasswordField/TestSelectedTextBackgroundColor.java JBR-5510 linux-all
|
||||
javax/swing/JProgressBar/TestJProgressBarHighlightColor.java JBR-5510 linux-all
|
||||
javax/swing/JRadioButton/8041561/bug8041561.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
javax/swing/JSlider/TestJSliderRendering.java JBR-5510 linux-all
|
||||
javax/swing/JSpinner/4670051/DateFieldUnderCursorTest.java JBR-5510 linux-all
|
||||
javax/swing/JSpinner/TestSelectedTextBackgroundColor.java JBR-5510 linux-all
|
||||
javax/swing/JSplitPane/4820080/JSplitPaneDragColorTest.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
javax/swing/JSplitPane/4885629/bug4885629.java 8019935,JBR-5359,JBR-5510 macosx-all,windows-aarch64,linux-all
|
||||
javax/swing/JTextPane/TestJTextPaneBackgroundColor.java JBR-5510 linux-all
|
||||
javax/swing/JToolTip/TestTooltipBackgroundColor.java JBR-5510 linux-all
|
||||
javax/swing/JTree/TestTreeBackgroundColor.java JBR-5510 linux-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentCanvas.java 8253184,JBR-5510 windows-all,linux-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentSwing.java 8194128,8253184,JBR-5510 macosx-all,windows-all,linux-all
|
||||
javax/swing/plaf/basic/BasicHTML/4251579/bug4251579.java 8253184,JBR-5510 windows-all,linux-all
|
||||
javax/swing/plaf/nimbus/8041642/bug8041642.java 8253184,JBR-5510 windows-all,linux-all
|
||||
javax/swing/plaf/nimbus/8041642/ScrollBarThumbVisibleTest.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
javax/swing/plaf/nimbus/8057791/bug8057791.java 8253184,JBR-5510 windows-all,linux-all
|
||||
javax/swing/plaf/nimbus/TestNimbusBGColor.java JBR-5359,NOBUG windows-aarch64,linux-all
|
||||
javax/swing/text/html/CSS/4530474/bug4530474.java JBR-5359,JBR-5510,JBR-5951 windows-aarch64,linux-all,windows-x64
|
||||
sanity/client/SwingSet/src/ButtonDemoScreenshotTest.java 8265770,8273312,JBR-5510 windows-all,macosx-all,linux-all
|
||||
sanity/client/SwingSet/src/EditorPaneDemoTest.java JBR-5359,JBR-5510 windows-aarch64,linux-all
|
||||
sun/java2d/GdiRendering/ClipShapeRendering.java JBR-5359,JBR-5366,JBR-5510 windows-all,linux-all
|
||||
sun/java2d/GdiRendering/InsetClipping.java 7124403,JBR-5359,JBR-5366,JBR-5510 windows-all,macosx-all,windows-aarch64,linux-all
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
###########################################################################
|
||||
#
|
||||
# Copyright (c) 2009, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2023, JetBrains s.r.o.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -163,7 +163,7 @@ java/awt/EventQueue/6980209/bug6980209.java 8198615 macosx-all
|
||||
java/awt/Frame/ExceptionOnSetExtendedStateTest/ExceptionOnSetExtendedStateTest.java 8198237 macosx-all
|
||||
java/awt/Frame/SetMinimumSizeTest/SetMinimumSizeTest2.java JBR-5210 windows-all
|
||||
java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java JBR-5210 windows-all,linux-5.18.2-arch1-1
|
||||
java/awt/grab/EmbeddedFrameTest1/EmbeddedFrameTest1.java 7080150,JBR-4880,8253184 macosx-all,windows-all
|
||||
java/awt/grab/EmbeddedFrameTest1/EmbeddedFrameTest1.java 7080150,JBR-4880,8253184,JBR-5510 macosx-all,windows-all,linux-5.18.2-arch1-1
|
||||
java/awt/grab/GrabOnUnfocusableToplevel/GrabOnUnfocusableToplevel.java 8169109,JBR-4880 linux-all,windows-all
|
||||
java/awt/event/InputEvent/EventWhenTest/EventWhenTest.java 8168646 generic-all
|
||||
java/awt/Mixing/AWT_Mixing/HierarchyBoundsListenerMixingTest.java 8049405,8253184 generic-all
|
||||
@@ -337,7 +337,7 @@ java/awt/Choice/ChoiceHandleMouseEvent_2.java JBR-5359 windows-aarch64
|
||||
java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java 6849371,7100044,JBR-5210 macosx-all,linux-all,windows-all
|
||||
java/awt/Component/F10TopToplevel/F10TopToplevel.java JBR-5687 linux-all
|
||||
java/awt/Component/GetScreenLocTest/GetScreenLocTest.java 4753654 generic-all
|
||||
java/awt/Component/RepaintTest.java JBR-5359 windows-aarch64
|
||||
java/awt/Component/RepaintTest.java JBR-5359,JBR-5510 windows-aarch64,linux-5.18.2-arch1-1
|
||||
java/awt/Component/SetComponentsBounds/SetComponentsBounds.java JBR-4275 linux-all
|
||||
java/awt/Component/SetEnabledPerformance/SetEnabledPerformance.java 8165863 macosx-all
|
||||
java/awt/Clipboard/HTMLTransferTest/HTMLTransferTest.java 8017454 macosx-all
|
||||
@@ -605,7 +605,7 @@ java/awt/List/ActionEventTest/ActionEventTest.java JBR-5799 windows-x64
|
||||
java/awt/List/EmptyListEventTest/EmptyListEventTest.java JBR-5387 linux-all
|
||||
java/awt/List/FirstItemRemoveTest/FirstItemRemoveTest.java JBR-86 windows-x64
|
||||
java/awt/List/ItemEventTest/ItemEventTest.java JBR-5711 linux-all
|
||||
java/awt/List/KeyEventsTest/KeyEventsTest.java JBR-5210 windows-all
|
||||
java/awt/List/KeyEventsTest/KeyEventsTest.java JBR-5210,JBR-6273 windows-all,linux-aarch64
|
||||
java/awt/List/ListMultipleSelectTest/ListMultipleSelectTest.java JBR-5555 windows-all
|
||||
java/awt/List/NofocusListDblClickTest/NofocusListDblClickTest.java 8253184 windows-all
|
||||
javax/print/PrintSEUmlauts/PrintSEUmlauts.java 8135174 generic-all
|
||||
@@ -974,7 +974,7 @@ javax/swing/JScrollPane/HorizontalMouseWheelOnShiftPressed/HorizontalMouseWheelO
|
||||
javax/swing/JSplitPane/4885629/bug4885629.java 8019935,JBR-5359,JBR-5510 macosx-all,windows-aarch64,linux-5.18.2-arch1-1
|
||||
javax/swing/JTabbedPane/4361477/bug4361477.java JBR-5932 linux-all
|
||||
javax/swing/JTabbedPane/8007563/Test8007563.java 8051591 generic-all
|
||||
javax/swing/JTabbedPane/4624207/bug4624207.java 8064922,8197552 macosx-all,windows-all 8064922:macosx-all, 8197552:windows-all
|
||||
javax/swing/JTabbedPane/4624207/bug4624207.java 8064922,8197552,JBR-6235 macosx-all,windows-all,linux-all 8064922:macosx-all, 8197552:windows-all
|
||||
javax/swing/JTabbedPane/TestBackgroundScrollPolicy.java 8253184,windows-all
|
||||
javax/swing/JToggleButton/TestSelectedKey.java JBR-5846 windows-all
|
||||
javax/swing/JToolBar/4529206/bug4529206.java JBR-5387 linux-all
|
||||
@@ -1016,7 +1016,7 @@ javax/swing/plaf/synth/Test8043627.java JBR-5767 windows-all
|
||||
javax/swing/JInternalFrame/5066752/bug5066752.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
|
||||
javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java JBR-5359,JBR-5510 windows-aarch64,linux-5.18.2-arch1-1
|
||||
javax/swing/JInternalFrame/8020708/bug8020708.java JBR-4879 windows-all
|
||||
javax/swing/JInternalFrame/8069348/bug8069348.java 8253184,JBR-900 macosx-aarch64,windows-all
|
||||
javax/swing/JInternalFrame/8069348/bug8069348.java 8253184,JBR-900 windows-all,linux-all
|
||||
javax/swing/ToolTipManager/Test6256140.java 8197552 windows-all
|
||||
javax/swing/text/DefaultEditorKit/4278839/bug4278839.java CODETOOLS-7901623 windows-all
|
||||
javax/swing/text/GlyphPainter2/6427244/bug6427244.java JBR-896 windows-all
|
||||
@@ -1043,7 +1043,7 @@ sanity/client/SwingSet/src/TextFieldDemoTest.java JBR-5061 linux-all Ubuntu-22.0
|
||||
sanity/client/SwingSet/src/ToolTipDemoTest.java 8293001 linux-all
|
||||
sanity/client/SwingSet/src/SliderDemoTest.java 8253184 windows-all
|
||||
sanity/client/SwingSet/src/SpinnerDemoTest.java 8253184 windows-all
|
||||
sanity/client/SwingSet/src/SplitPaneDemoTest.java JBR-5817 linux-5.19.0-1025-aws
|
||||
sanity/client/SwingSet/src/SplitPaneDemoTest.java JBR-5817 linux-all
|
||||
sanity/client/SwingSet/src/SwingSet2DemoTest.java 8253184 windows-all
|
||||
|
||||
############################################################################
|
||||
@@ -1413,3 +1413,27 @@ java/awt/Toolkit/LockingKeyStateTest/LockingKeyStateTest.java JBR-5765 macosx-al
|
||||
jb/sun/awt/macos/InputMethodTest/FocusMoveUncommitedCharactersTest.java JBR-5765 macosx-all
|
||||
|
||||
jb/java/awt/Focus/FocusTraversalOrderTest.java JBR-6060 generic-all
|
||||
|
||||
com/sun/java/swing/plaf/gtk/TestFileChooserSingleDirectorySelection.java JBR-5510 linux-5.18.2-arch1-1
|
||||
java/awt/Choice/ChoiceGeneratesItemEvents.java JBR-5510 linux-5.18.2-arch1-1
|
||||
java/awt/Choice/ChoiceStaysOpenedOnTAB.java JBR-5510 linux-5.18.2-arch1-1
|
||||
java/awt/grab/EmbeddedFrameTest1/EmbeddedFrameTest1.java JBR-5510 linux-5.18.2-arch1-1
|
||||
java/awt/Graphics/XORPaint.java#id2 JBR-5510 linux-5.18.2-arch1-1
|
||||
java/awt/Robot/HiDPIScreenCapture/HiDPIRobotScreenCaptureTest.java JBR-5510 linux-5.18.2-arch1-1
|
||||
java/awt/Robot/HiDPIScreenCapture/ScreenCaptureGtkTest.java JBR-5510 linux-5.18.2-arch1-1
|
||||
java/awt/Robot/HiDPIScreenCapture/ScreenCaptureTest.java JBR-5510 linux-5.18.2-arch1-1
|
||||
java/awt/Robot/NonEmptyErrorStream.java JBR-5510 linux-5.18.2-arch1-1
|
||||
java/awt/Toolkit/DesktopProperties/rfe4758438.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JComboBox/6406264/bug6406264.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JComboBox/TestComboBoxComponentRendering.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JMenu/TestDisabledMenuForegroundColor.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JPasswordField/TestSelectedTextBackgroundColor.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JProgressBar/TestJProgressBarHighlightColor.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JSlider/TestJSliderRendering.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JSpinner/TestSelectedTextBackgroundColor.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JTextPane/TestJTextPaneBackgroundColor.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JToolTip/TestTooltipBackgroundColor.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JTree/TestTreeBackgroundColor.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/plaf/nimbus/TestNimbusBGColor.java JBR-5510 linux-5.18.2-arch1-1
|
||||
sanity/client/SwingSet/src/ColorChooserDemoTest.java JBR-5510 linux-5.18.2-arch1-1
|
||||
sun/java2d/ClassCastExceptionForInvalidSurface.java JBR-5510 linux-5.18.2-arch1-1
|
||||
|
||||
@@ -2,8 +2,10 @@ java/awt/Dialog/DialogLocationTest.java JBR-6090 windows-all
|
||||
java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.java JBR-5538 windows-all
|
||||
java/awt/datatransfer/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.java JBR-6027 windows-all
|
||||
java/awt/dnd/MissedDragEnterTest.java JBR-6091 windows-all
|
||||
java/awt/event/StressTest/MouseAndKeyEventStressTest.java JBR-6090 windows-all
|
||||
java/awt/event/KeyEvent/ExtendedModifiersTest/ExtendedModifiersTest.java JBR-6292 windows-all
|
||||
java/awt/event/KeyEvent/KeyMaskTest/KeyMaskTest.java JBR-6292 windows-all
|
||||
java/awt/event/MouseEvent/FrameMouseEventAbsoluteCoordsTest/FrameMouseEventAbsoluteCoordsTest.java 8238720,JBR-6095 windows-all,linux-all
|
||||
java/awt/event/StressTest/MouseAndKeyEventStressTest.java JBR-6090 windows-all
|
||||
java/awt/Focus/6378278/InputVerifierTest.java JBR-6090 windows-all
|
||||
java/awt/Focus/6382144/EndlessLoopTest.java JBR-6090 windows-all
|
||||
java/awt/Focus/8282640/ScrollPaneFocusBugTest.java JBR-6090 windows-all
|
||||
@@ -13,6 +15,7 @@ java/awt/Focus/ModalExcludedWindowClickTest/ModalExcludedWindowClickTest.java JB
|
||||
java/awt/Focus/MouseClickRequestFocusRaceTest/MouseClickRequestFocusRaceTest.java 8194753,JBR-6090 linux-all,macosx-all,windows-x64
|
||||
java/awt/Focus/SimpleWindowActivationTest/SimpleWindowActivationTest.java JBR-6089 windows-all
|
||||
java/awt/Focus/WindowUpdateFocusabilityTest/WindowUpdateFocusabilityTest.java JBR-6090 windows-all
|
||||
java/awt/Frame/GetGraphicsStressTest/GetGraphicsStressTest.java JBR-6233 windows-x64
|
||||
java/awt/Frame/InvisibleOwner/InvisibleOwner.java JBR-6090 windows-all
|
||||
java/awt/Frame/MaximizedToOppositeScreen/MaximizedToOppositeScreenSmall.java JBR-6090 windows-all
|
||||
java/awt/Frame/RestoreToOppositeScreen/RestoreToOppositeScreen.java 8286840 linux-all
|
||||
@@ -35,6 +38,8 @@ javax/swing/JPopupMenu/6580930/bug6580930.java
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradient.java JBR-6090 windows-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedTranslucentPerPixelTranslucentGradient.java JBR-6090 windows-all
|
||||
|
||||
sanity/client/SwingSet/src/EditorPaneDemoTest.java.EditorPaneDemoTest JBR-6285 linux-all
|
||||
sanity/client/SwingSet/src/ToolTipDemoTest.java 8293001,JBR-6293 linux-all,windows-all
|
||||
sun/java2d/GdiRendering/ClipShapeRendering.java JBR-5204 linux-all,windows-all
|
||||
|
||||
jb/java/awt/Focus/RequestFocusInParent.java JBR-5715 windows-all
|
||||
|
||||
Reference in New Issue
Block a user