Compare commits

..

13 Commits

Author SHA1 Message Date
Vitaly Provodin
f021bd777d update exclude list on results of 21.0.3_b509.1 test runs 2024-06-25 02:23:39 +04:00
Maxim Kartashёv
13e217a8ca JBR-7259 Find Usages popup can't be resized under Wayland
Popup's positioner size has to be in sync with popup's buffer size
2024-06-21 13:56:15 +04:00
Nikita Provotorov
cbe5f7ac35 JBR-7157: Alt+Shift+Enter sends KEY_TYPED Event.
* X11 Linux part: disable posting KEY_TYPED events for VK_ENTER if any modifier except { Shift, Control, Lock, Mode Switch (a.k.a. AltGr), NumLock } is being pressed.
* Windows part: begin ignoring WM_SYSCHAR messages as MSDN instructs.
* Add a regression test.

(cherry picked from commit bacfbcd9e9)
(cherry picked from commit 876ad14545)
(cherry picked from commit 038e62308d)
(cherry picked from commit f7dbeb500d)
2024-06-19 21:17:52 +02:00
Vitaly Provodin
59735978d8 JBR-6696: fix drawableId usage + revert PrinterJob changes (non-appkit thread) 2024-06-19 13:54:28 +02:00
Vitaly Provodin
93f2675111 update exclude list on results of 21.0.3_b499.2 test runs 2024-06-18 16:20:35 +04:00
Maxim Kartashёv
e73d5f140e JBR-7254 Impossible to copy/paste files in Project tree 2024-06-18 14:04:24 +04:00
Maxim Kartashev
ffbe1c85d4 JBR-7290 Wayland: window permanently looses focus after invoking Go To Line dialog 2024-06-17 11:10:49 +04:00
Alexey Ushakov
f9ddafe25a JBR-7308 Vulkan: Build failure in vulkan enabled builds
Added missing header (jni_util.h)
2024-06-15 13:55:16 +02:00
Alexey Ushakov
f187ea1a07 JBR-7305 Vulkan: Implement FILL_SPANS primitive for flat color rendering
Implemented flat color shape rendering
2024-06-15 13:51:43 +02:00
Nikita Tsarev
ce21a7aeb3 JBR-6764: Add null check on hostAdapterLocator 2024-06-15 00:50:40 +02:00
Nikita Tsarev
1a58e7f6f0 JBR-6764: Work around IMEs breaking on macOS due to macOS JavaRuntimeSupport not reporting the correct locale in IMEs once after application startup 2024-06-15 00:49:18 +02:00
Xue-Lei Andrew Fan
fbee237cb5 update exclude list on results of 21.0.3_b480.1 test runs 2024-06-15 02:44:41 +04:00
Nikita Gubarkov
779194185a JBR-7307 Add stub for VKInstance.initNative with disabled Vulkan. 2024-06-14 23:29:58 +02:00
22 changed files with 568 additions and 107 deletions

View File

@@ -660,14 +660,8 @@ JNI_COCOA_ENTER(env);
jobject pageFormatArea = (*env)->CallObjectMethod(env, jthis, jm_getPageFormatArea, page); // AWT_THREADING Safe (!appKit)
CHECK_EXCEPTION();
NSRect rect = JavaToNSRect(env, pageFormatArea);
__block PrinterView *printerView = nil;
[ThreadUtilities performOnMainThreadWaiting:YES block:^() {
printerView = [[PrinterView alloc] initWithFrame:rect withEnv:env withPrinterJob:jthis];
[printerView setFirstPage:firstPage lastPage:lastPage];
}];
PrinterView* printerView = [[PrinterView alloc] initWithFrame:JavaToNSRect(env, pageFormatArea) withEnv:env withPrinterJob:jthis];
[printerView setFirstPage:firstPage lastPage:lastPage];
GET_NSPRINTINFO_METHOD_RETURN(NO)
NSPrintInfo* printInfo = (NSPrintInfo*)jlong_to_ptr((*env)->CallLongMethod(env, jthis, sjm_getNSPrintInfo)); // AWT_THREADING Safe (known object)

View File

@@ -254,9 +254,13 @@ BOOL MTLLayer_isExtraRedrawEnabled() {
[blitEncoder endEncoding];
BOOL usePresentHandler = NO;
NSUInteger drawableId = -1;
if (@available(macOS 10.15.4, *)) {
usePresentHandler = YES;
if (TRACE_DISPLAY) {
drawableId = mtlDrawable.drawableID;
}
[self retain];
[mtlDrawable addPresentedHandler:^(id <MTLDrawable> drawable) {
// note: called anyway even if drawable.present() not called!
@@ -301,7 +305,7 @@ BOOL MTLLayer_isExtraRedrawEnabled() {
if (TRACE_DISPLAY) {
J2dRlsTraceLn3(J2D_TRACE_INFO,
"[%.6lf] MTLLayer.blitTexture: layer[%p] present drawable(%d)",
CACurrentMediaTime(), self, mtlDrawable.drawableID);
CACurrentMediaTime(), self, drawableId);
}
if (isDisplaySyncEnabled()) {
[commandBuf presentDrawable:mtlDrawable];
@@ -334,7 +338,7 @@ BOOL MTLLayer_isExtraRedrawEnabled() {
if (TRACE_DISPLAY) {
J2dRlsTraceLn3(J2D_TRACE_INFO,
"[%.6lf] MTLLayer.blitTexture: layer[%p] commit with drawable(%d)",
CACurrentMediaTime(), self, mtlDrawable.drawableID);
CACurrentMediaTime(), self, drawableId);
}
} @finally {
// try-finally block to ensure releasing the CPU fence:

View File

@@ -55,6 +55,7 @@ import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
import sun.awt.InputMethodSupport;
import sun.awt.SunToolkit;
import sun.font.FontUtilities;
/**
* {@code ExecutableInputMethodManager} is the implementation of the
@@ -412,6 +413,12 @@ class ExecutableInputMethodManager extends InputMethodManager
return candidate.deriveLocator(locale);
}
}
// Workaround for JBR-6764
if (hostAdapterLocator != null && FontUtilities.isMacOSX) {
return hostAdapterLocator.deriveLocator(locale);
}
return null;
}

View File

@@ -28,6 +28,7 @@
#include <Trace.h>
#include "jlong_md.h"
#include "jvm_md.h"
#include "jni_util.h"
#include "VKBase.h"
#include "VKVertex.h"
#include "CArrayUtil.h"

View File

@@ -193,6 +193,7 @@ JNIEXPORT void JNICALL Java_sun_java2d_vulkan_VKRenderQueue_flushBuffer
jint count = NEXT_INT(b);
J2dRlsTraceLn(J2D_TRACE_VERBOSE,
"VKRenderQueue_flushBuffer: FILL_SPANS");
VKRenderer_FillSpans(color, dstOps, count, (jint *)b);
SKIP_BYTES(b, count * BYTES_PER_SPAN);
}
break;
@@ -207,67 +208,7 @@ JNIEXPORT void JNICALL Java_sun_java2d_vulkan_VKRenderQueue_flushBuffer
J2dRlsTraceLn6(J2D_TRACE_VERBOSE,
"VKRenderQueue_flushBuffer: FILL_PARALLELOGRAM(%f, %f, %f, %f, %f, %f)",
x11, y11, dx21, dy21, dx12, dy12);
if (dstOps != NULL) {
VKSDOps *vksdOps = (VKSDOps *)dstOps;
VKGraphicsEnvironment* ge = VKGE_graphics_environment();
VKLogicalDevice* logicalDevice = &ge->devices[ge->enabledDeviceNum];
float width = vksdOps->width;
float height = vksdOps->height;
J2dRlsTraceLn2(J2D_TRACE_VERBOSE,
"VKRenderQueue_flushBuffer: FILL_PARALLELOGRAM(W=%f, H=%f)",
width, height);
VKVertex* vertices = ARRAY_ALLOC(VKVertex, 4);
/* dx21
* (p1)---------(p2) | (p1)------
* |\ \ | | \ dy21
* | \ \ | dy12 | \
* | \ \| | (p2)-
* | (p4)---------(p3) (p4) |
* dx12 \ | dy12
* dy21 \ |
* -----(p3)
*/
float p1x = -1.0f + x11 / width;
float p1y = -1.0f + y11 / height;
float p2x = -1.0f + (x11 + dx21) / width;
float p2y = -1.0f + (y11 + dy21) / height;
float p3x = -1.0f + (x11 + dx21 + dx12) / width;
float p3y = -1.0f + (y11 + dy21 + dy12) / height;
float p4x = -1.0f + (x11 + dx12) / width;
float p4y = -1.0f + (y11 + dy12) / height;
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p1x,p1y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p2x,p2y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p4x,p4y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p3x,p3y}));
VKBuffer* fillVertexBuffer = ARRAY_TO_VERTEX_BUF(vertices);
if (!fillVertexBuffer) {
J2dRlsTrace(J2D_TRACE_ERROR, "Cannot create vertex buffer\n")
break;
}
ARRAY_FREE(vertices);
ge->vkWaitForFences(logicalDevice->device, 1, &logicalDevice->inFlightFence, VK_TRUE, UINT64_MAX);
ge->vkResetFences(logicalDevice->device, 1, &logicalDevice->inFlightFence);
ge->vkResetCommandBuffer(logicalDevice->commandBuffer, 0);
VKRenderer_BeginRendering();
VKRenderer_ColorRender(
vksdOps->image,
color,
fillVertexBuffer->buffer, 4
);
VKRenderer_EndRendering(VK_FALSE, VK_FALSE);
}
VKRenderer_FillParallelogram(color, dstOps, x11, y11, dx21, dy21, dx12, dy12);
}
break;
case sun_java2d_pipe_BufferedOpCodes_FILL_AAPARALLELOGRAM:

View File

@@ -363,7 +363,7 @@ VKRenderer* VKRenderer_CreateFillColorPoly() {
VkPipelineInputAssemblyStateCreateInfo inputAssembly = {
.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
.primitiveRestartEnable = VK_FALSE
};
@@ -863,6 +863,152 @@ VKRenderer_FillRect(jint x, jint y, jint w, jint h)
}
}
void VKRenderer_FillParallelogram(jint color, VKSDOps *dstOps,
jfloat x11, jfloat y11,
jfloat dx21, jfloat dy21,
jfloat dx12, jfloat dy12)
{
if (dstOps == NULL) {
J2dRlsTraceLn(J2D_TRACE_ERROR, "VKRenderer_FillParallelogram: current dest is null");
return;
}
VKSDOps *vksdOps = (VKSDOps *)dstOps;
VKGraphicsEnvironment* ge = VKGE_graphics_environment();
VKLogicalDevice* logicalDevice = &ge->devices[ge->enabledDeviceNum];
float width = vksdOps->width;
float height = vksdOps->height;
J2dRlsTraceLn2(J2D_TRACE_VERBOSE,
"VKRenderQueue_flushBuffer: FILL_PARALLELOGRAM(W=%f, H=%f)",
width, height);
VKVertex* vertices = ARRAY_ALLOC(VKVertex, 6);
/* dx21
* (p1)---------(p2) | (p1)------
* |\ \ | | \ dy21
* | \ \ | dy12 | \
* | \ \| | (p2)-
* | (p4)---------(p3) (p4) |
* dx12 \ | dy12
* dy21 \ |
* -----(p3)
*/
float p1x = -1.0f + x11 / width;
float p1y = -1.0f + y11 / height;
float p2x = -1.0f + (x11 + dx21) / width;
float p2y = -1.0f + (y11 + dy21) / height;
float p3x = -1.0f + (x11 + dx21 + dx12) / width;
float p3y = -1.0f + (y11 + dy21 + dy12) / height;
float p4x = -1.0f + (x11 + dx12) / width;
float p4y = -1.0f + (y11 + dy12) / height;
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p1x,p1y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p2x,p2y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p3x,p3y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p3x,p3y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p4x,p4y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p1x,p1y}));
VKBuffer* fillVertexBuffer = ARRAY_TO_VERTEX_BUF(vertices);
if (!fillVertexBuffer) {
J2dRlsTrace(J2D_TRACE_ERROR, "Cannot create vertex buffer\n")
return;
}
ARRAY_FREE(vertices);
ge->vkWaitForFences(logicalDevice->device, 1, &logicalDevice->inFlightFence, VK_TRUE, UINT64_MAX);
ge->vkResetFences(logicalDevice->device, 1, &logicalDevice->inFlightFence);
ge->vkResetCommandBuffer(logicalDevice->commandBuffer, 0);
VKRenderer_BeginRendering();
VKRenderer_ColorRender(
vksdOps->image,
color,
fillVertexBuffer->buffer, 6
);
VKRenderer_EndRendering(VK_FALSE, VK_FALSE);
}
void VKRenderer_FillSpans(jint color, VKSDOps *dstOps, jint spanCount, jint *spans)
{
if (dstOps == NULL) {
J2dRlsTraceLn(J2D_TRACE_ERROR, "VKRenderer_FillSpans: current dest is null");
return;
}
if (spanCount == 0) {
return;
}
VKSDOps *vksdOps = (VKSDOps *)dstOps;
VKGraphicsEnvironment* ge = VKGE_graphics_environment();
VKLogicalDevice* logicalDevice = &ge->devices[ge->enabledDeviceNum];
float width = vksdOps->width;
float height = vksdOps->height;
J2dRlsTraceLn3(J2D_TRACE_VERBOSE, "VKRenderer_FillSpans(W=%f, H=%f, COUNT=%d)",
width, height, spanCount)
const int VERT_COUNT = spanCount * 6;
VKVertex* vertices = ARRAY_ALLOC(VKVertex, VERT_COUNT);
for (int i = 0; i < spanCount; i++) {
jfloat x1 = *(spans++);
jfloat y1 = *(spans++);
jfloat x2 = *(spans++);
jfloat y2 = *(spans++);
float p1x = -1.0f + x1 / width;
float p1y = -1.0f + y1 / height;
float p2x = -1.0f + x2 / width;
float p2y = p1y;
float p3x = p2x;
float p3y = -1.0f + y2 / height;
float p4x = p1x;
float p4y = p3y;
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p1x,p1y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p2x,p2y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p3x,p3y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p3x,p3y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p4x,p4y}));
ARRAY_PUSH_BACK(&vertices, ((VKVertex){p1x,p1y}));
}
VKBuffer *fillVertexBuffer = ARRAY_TO_VERTEX_BUF(vertices);
if (!fillVertexBuffer) {
J2dRlsTrace(J2D_TRACE_ERROR, "Cannot create vertex buffer\n")
return;
}
ARRAY_FREE(vertices);
ge->vkWaitForFences(logicalDevice->device, 1, &logicalDevice->inFlightFence, VK_TRUE, UINT64_MAX);
ge->vkResetFences(logicalDevice->device, 1, &logicalDevice->inFlightFence);
ge->vkResetCommandBuffer(logicalDevice->commandBuffer, 0);
VKRenderer_BeginRendering();
VKRenderer_ColorRender(
vksdOps->image,
color,
fillVertexBuffer->buffer, VERT_COUNT
);
VKRenderer_EndRendering(VK_FALSE, VK_FALSE);
}
jboolean VK_CreateLogicalDeviceRenderers() {
VKGraphicsEnvironment* ge = VKGE_graphics_environment();
VKLogicalDevice* logicalDevice = &ge->devices[ge->enabledDeviceNum];

View File

@@ -44,5 +44,10 @@ void VKRenderer_ColorRender(VKImage *destImage, uint32_t rgba, VkBuffer vertexBu
void VKRenderer_ColorRenderMaxRect(VKImage *destImage, uint32_t rgba);
// fill ops
void VKRenderer_FillRect(jint x, jint y, jint w, jint h);
void VKRenderer_FillParallelogram(jint color, VKSDOps *dstOps,
jfloat x11, jfloat y11,
jfloat dx21, jfloat dy21,
jfloat dx12, jfloat dy12);
void VKRenderer_FillSpans(jint color, VKSDOps *dstOps, jint spanCount, jint *spans);
#endif //VKRenderer_h_Included

View File

@@ -1355,24 +1355,47 @@ class XWindow extends XBaseWindow implements X11ComponentPeer {
unicodeFromPrimaryKeysym,
jkeyExtended);
if (unicodeKey > 0 && !isDeadKey) {
if (keyEventLog.isLoggable(PlatformLogger.Level.FINE)) {
keyEventLog.fine("fire _TYPED on "+unicodeKey);
}
postKeyEvent( java.awt.event.KeyEvent.KEY_TYPED,
java.awt.event.KeyEvent.VK_UNDEFINED,
unicodeKey,
java.awt.event.KeyEvent.KEY_LOCATION_UNKNOWN,
ev.get_state(),ev.getPData(), XKeyEvent.getSize(), (long)0,
unicodeFromPrimaryKeysym,
java.awt.event.KeyEvent.VK_UNDEFINED);
if (shouldPostKeyTypedAfterKeyPressed(isDeadKey ? jkeyExtended : jkeyToReturn, ev.get_state(), unicodeKey, isDeadKey)) {
if (keyEventLog.isLoggable(PlatformLogger.Level.FINE)) {
keyEventLog.fine("fire _TYPED on "+unicodeKey);
}
postKeyEvent( java.awt.event.KeyEvent.KEY_TYPED,
java.awt.event.KeyEvent.VK_UNDEFINED,
unicodeKey,
java.awt.event.KeyEvent.KEY_LOCATION_UNKNOWN,
ev.get_state(),ev.getPData(), XKeyEvent.getSize(), (long)0,
unicodeFromPrimaryKeysym,
java.awt.event.KeyEvent.VK_UNDEFINED);
}
}
private static boolean shouldPostKeyTypedAfterKeyPressed(int jKeyCode, int xModifiers, int jKeyChar, boolean isDeadKey) {
/*
* Quoting the X11 specification (https://www.x.org/releases/X11R7.6/doc/libX11/specs/libX11/libX11.html#Manipulating_the_Keyboard_Encoding):
* > A list of KeySyms is associated with each KeyCode.
* > [...]
* > The first four elements of the list are split into two groups of KeySyms. Group 1 contains the first and second KeySyms; Group 2 contains the third and fourth KeySyms.
* > [...]
* > Switching between groups is controlled by the KeySym named MODE SWITCH
* > [...]
* > Within a group, the choice of KeySym is determined by applying the first rule that is satisfied from the following list:
* > <Usages of the numlock, Shift, Lock>
* Thus I believe a key press can produce characters only if a subset of the above-mentioned modifiers has been used.
* Therefore, we should ignore any key presses if they have used any modifier out of this set,
* but I'm too afraid to totally break some exotic input, so let's apply this filter only to Enter for now.
*/
final var allLayoutLevelPossibleModifiers = XConstants.ShiftMask | XConstants.LockMask | XToolkit.modeSwitchMask | XToolkit.numLockMask;
// Control is historically used to enter control characters (ASCII [0x01; 0x1F])
final var allInputPossibleModifiers = allLayoutLevelPossibleModifiers | XConstants.ControlMask;
return (
!isDeadKey &&
(jKeyChar > 0) &&
!( (jKeyCode == KeyEvent.VK_ENTER) && ((xModifiers | allInputPossibleModifiers) != allInputPossibleModifiers) )
);
}
public void handleKeyRelease(XEvent xev) {
super.handleKeyRelease(xev);
XKeyEvent ev = xev.get_xkey();
@@ -1663,6 +1686,8 @@ class XWindow extends XBaseWindow implements X11ComponentPeer {
int unicodeFromPrimaryKeysym, int extendedKeyCode)
{
assert( (id != KeyEvent.KEY_TYPED) || shouldPostKeyTypedAfterKeyPressed(keyCode, state, keyChar, false) );
long jWhen = System.currentTimeMillis();
int modifiers = getModifiers(state, 0, keyCode);

View File

@@ -152,6 +152,9 @@ public final class WLClipboard extends SunClipboard {
String[] mime = new String[formats.length];
for (int i = 0; i < formats.length; i++) {
mime[i] = wlDataTransferer.getNativeForFormat(formats[i]);
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("Clipboard: formats mapping " + formats[i] + " -> " + mime[i]);
}
}
if (log.isLoggable(PlatformLogger.Level.FINE)) {

View File

@@ -512,7 +512,7 @@ public class WLComponentPeer implements ComponentPeer {
// Wayland provides the ability to programmatically change the location of popups,
// but not top-level windows.
if (targetIsWlPopup()) {
repositionWlPopup(newX, newY);
repositionWlPopup(newX, newY, newSize.width, newSize.height);
// the location will be updated in notifyConfigured() following
// the xdg_popup::repositioned event
} else {
@@ -550,9 +550,7 @@ public class WLComponentPeer implements ComponentPeer {
}
}
private void repositionWlPopup(int newX, int newY) {
final int thisWidth = getWidth();
final int thisHeight = getHeight();
private void repositionWlPopup(int newX, int newY, int newWidth, int newHeight) {
performLocked(() -> {
Window popup = (Window) target;
final Component popupParent = AWTAccessor.getWindowAccessor().getPopupParent(popup);
@@ -566,6 +564,8 @@ public class WLComponentPeer implements ComponentPeer {
final int parentY = javaUnitsToSurfaceUnits(toplevelLocation.y);
int newXNative = javaUnitsToSurfaceUnits(newX);
int newYNative = javaUnitsToSurfaceUnits(newY);
int newWidthNative = javaUnitsToSurfaceUnits(newWidth);
int newHeightNative = javaUnitsToSurfaceUnits(newHeight);
if (popupLog.isLoggable(Level.FINE)) {
popupLog.fine("Repositioning popup: " + popup);
popupLog.fine("\tparent:" + popupParent);
@@ -573,7 +573,7 @@ public class WLComponentPeer implements ComponentPeer {
popupLog.fine("\toffset of anchor from toplevel: " + toplevelLocation);
popupLog.fine("\toffset from anchor: " + newX + ", " + newY);
}
nativeRepositionWLPopup(nativePtr, thisWidth, thisHeight, parentX + newXNative, parentY + newYNative);
nativeRepositionWLPopup(nativePtr, newWidthNative, newHeightNative, parentX + newXNative, parentY + newYNative);
} );
}

View File

@@ -39,12 +39,18 @@ import javax.imageio.stream.ImageInputStream;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashSet;
@@ -177,11 +183,53 @@ public class WLDataTransferer extends DataTransferer {
@Override
protected String[] dragQueryFile(byte[] bytes) {
// TODO
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("Unimplemented");
ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
try (BufferedReader reader = new BufferedReader(new InputStreamReader(stream))) {
// NB: decodes what was encoded in convertFileListToBytes()
String line = reader.readLine();
return line.split("\0");
} catch (IOException ignored) {
return null;
}
}
@Override
protected boolean isURIListFormat(long format) {
String nat = getNativeForFormat(format);
if (nat == null) {
return false;
}
try {
DataFlavor df = new DataFlavor(nat);
if (df.getPrimaryType().equals("text") && df.getSubType().equals("uri-list")) {
return true;
}
} catch (Exception e) {
// Not a MIME format.
}
return false;
}
@Override
protected URI[] dragQueryURIs(InputStream stream,
long format,
Transferable localeTransferable)
throws IOException {
String charset = getBestCharsetForTextFormat(format, localeTransferable);
try (InputStreamReader isr = new InputStreamReader(stream, charset);
BufferedReader reader = new BufferedReader(isr)) {
// NB: decodes what was encoded in DataTransferer.translateTransferable()
String line;
ArrayList<URI> uriList = new ArrayList<>();
while ((line = reader.readLine()) != null) {
try {
uriList.add(new URI(line));
} catch (URISyntaxException uriSyntaxException) {
throw new IOException(uriSyntaxException);
}
}
return uriList.toArray(new URI[0]);
}
return new String[0];
}
@Override

View File

@@ -1003,10 +1003,18 @@ WLSBM_SurfaceAssign(WLSurfaceBufferManager * manager, struct wl_surface* wl_surf
MUTEX_LOCK(manager->showLock);
if (manager->wlSurface == NULL || wl_surface == NULL) {
manager->wlSurface = wl_surface;
manager->sendBufferASAP = true; // ...so that this new surface association is made known to Wayland
// The "frame" callback depends on the surface; when changing the surface,
// cancel any associated pending callbacks:
CancelFrameCallback(manager);
if (wl_surface != NULL) {
// Must send whatever there is in the buffer right now, at a minimum
// in order to associate the surface with a buffer and make it appear
// on the screen. Normally this would happen in WLSBM_SurfaceCommit(),
// but the Java side may have already drawn and committed something and
// will not commit anything new for a while, in which case the surface
// may never get associated with a buffer and the window will never appear.
TrySendShowBufferToWayland(manager, true);
}
} else {
assert(manager->wlSurface == wl_surface);
}
@@ -1144,8 +1152,8 @@ WLSBM_SizeChangeTo(WLSurfaceBufferManager * manager, jint width, jint height)
manager->bufferForDraw.height = height;
manager->bufferForDraw.resizePending = true;
// Send the buffer at the nearest commit or else Mutter may not remember
// the latest size of the window.
// Send the buffer at the nearest commit as we want to make the change in size
// visible to the user.
manager->sendBufferASAP = true;
// Need to wait for WLSBM_SurfaceCommit() with the new content for

View File

@@ -1874,8 +1874,14 @@ LRESULT AwtComponent::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
LOWORD(lParam), HIWORD(lParam), FALSE);
break;
case WM_SYSCHAR:
mr = WmChar(static_cast<UINT>(wParam),
LOWORD(lParam), HIWORD(lParam), TRUE);
// JBR-7157: Alt+Shift+Enter sends KEY_TYPED Event
// Alt[+Shift]+letter generate input only as WM_SYSCHAR messages.
// We shouldn't treat them as real user input, according to MSDN: https://learn.microsoft.com/en-us/windows/win32/learnwin32/keyboard-input#character-messages.
// > The WM_SYSCHAR message indicates a system character. As with WM_SYSKEYDOWN, you should generally pass
// > this message directly to DefWindowProc. Otherwise, you may interfere with standard system commands.
// > In particular, do not treat WM_SYSCHAR as text that the user has typed.
mr = mrDoDefault;
break;
case WM_IME_CHAR:
mr = WmIMEChar(static_cast<UINT>(wParam),

View File

@@ -73,6 +73,7 @@ gc/shenandoah/mxbeans/TestChurnNotifications.java#iu initial_run linux-x64
compiler/ciReplay/TestSAServer.java 8029528 generic-all
compiler/compilercontrol/jcmd/ClearDirectivesFileStackTest.java 8225370 generic-all
compiler/gcbarriers/UnsafeIntrinsicsTest.java#ZGenerationalDebug 8334475 windows-aarch64
compiler/jvmci/compilerToVM/GetFlagValueTest.java 8204459 generic-all
compiler/cpuflags/TestAESIntrinsicsOnSupportedConfig.java 8190680 generic-all
@@ -136,6 +137,7 @@ runtime/cds/appcds/methodHandles/MethodHandlesInvokersTest.java initial_run gene
runtime/cds/appcds/methodHandles/MethodHandlesCastFailureTest.java initial_run generic-all
runtime/cds/appcds/methodHandles/MethodHandlesGeneralTest.java initial_run generic-all
runtime/cds/CheckDefaultArchiveFile.java JBR-4227 generic-all
runtime/cds/TestCDSVMCrash.java JBR-7316 windows-aarch64
runtime/jni/daemonDestroy/TestDaemonDestroy.java NOBUG windows-all # Expected to get exit value of [0], exit value is: [-1073741515]
runtime/jni/terminatedThread/TestTerminatedThread.java 8317789 aix-ppc64
runtime/handshake/HandshakeSuspendExitTest.java 8294313 generic-all

View File

@@ -0,0 +1,162 @@
/*
* Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
* Copyright 2024 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.
*/
/*
* @test
* @summary Checks that Alt+Shift+Enter does not generate KEY_TYPED event(s) on Windows and Linux (X11) (JBR-7157)
* @author Nikita Provotorov
* @requires (os.family == "windows" | os.family == "linux")
* @key headful
* @run main/othervm AltShiftEnterShouldNotSendKeyTyped7157
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
public class AltShiftEnterShouldNotSendKeyTyped7157 extends Frame {
private final TextArea textArea;
public static void main(String[] args) throws Exception {
if ("WLToolkit".equals(Toolkit.getDefaultToolkit().getClass().getSimpleName())) {
System.out.println("The test isn't targeting at Wayland. Skipping it since WLToolkit is being used...");
return;
}
final var robot = new Robot();
final AtomicReference<AltShiftEnterShouldNotSendKeyTyped7157> windowRef = new AtomicReference<>(null);
try {
SwingUtilities.invokeAndWait(() -> {
final var window = new AltShiftEnterShouldNotSendKeyTyped7157();
windowRef.set(window);
window.setVisible(true);
});
runTest(robot, windowRef.get());
} finally {
final var window = windowRef.getAndSet(null);
if (window != null) {
window.dispose();
}
}
}
private AltShiftEnterShouldNotSendKeyTyped7157() {
super("JBR-7157");
textArea = new TextArea();
add(textArea, BorderLayout.CENTER);
setSize(400, 400);
}
private static void runTest(final Robot robot, final AltShiftEnterShouldNotSendKeyTyped7157 window) throws Exception {
final CompletableFuture<Void> focusGainedFuture = new CompletableFuture<>();
final AtomicBoolean gotFocusLostEvent = new AtomicBoolean(false);
final Collection<KeyEvent> allReceivedKeyTypedEvents = Collections.synchronizedList(new ArrayList<>());
// Installing listeners and requesting focus
SwingUtilities.invokeLater(() -> {
window.textArea.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
System.err.println("Got KEY_TYPED event: " + e);
new Throwable("Stacktrace").printStackTrace();
allReceivedKeyTypedEvents.add(e);
}
});
window.textArea.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
focusGainedFuture.complete(null);
}
@Override
public void focusLost(FocusEvent e) {
if (gotFocusLostEvent.compareAndExchange(false, true) == false) {
System.err.println("Unexpectedly lost focus! " + e);
new Throwable("Stacktrace").printStackTrace();
}
}
});
if (window.textArea.isFocusOwner()) {
focusGainedFuture.complete(null);
} else {
window.textArea.requestFocus();
}
});
// Waiting for the focus
focusGainedFuture.get(2, TimeUnit.SECONDS);
robot.delay(100);
// Pressing Alt+Shift+Enter
robot.keyPress(KeyEvent.VK_ALT);
try {
robot.delay(100);
robot.keyPress(KeyEvent.VK_SHIFT);
try {
robot.delay(100);
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(100);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.delay(50);
} finally {
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.delay(50);
}
} finally {
robot.keyRelease(KeyEvent.VK_ALT);
robot.delay(100);
}
robot.waitForIdle();
// CAS instead of just .get() to avoid false positive messages from the focus listener
if (gotFocusLostEvent.compareAndExchange(false, true) == true) {
throw new RuntimeException("Focus has been unexpectedly lost");
}
if (!allReceivedKeyTypedEvents.isEmpty()) {
throw new RuntimeException("Got some KEY_TYPED events: " + allReceivedKeyTypedEvents);
}
}
}

View File

@@ -0,0 +1,98 @@
/*
* Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2024, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JWindow;
import javax.swing.SwingUtilities;
import java.awt.Dimension;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.Window;
import static javax.swing.WindowConstants.EXIT_ON_CLOSE;
/**
* @test
* @summary Verifies that the size of a popup-style window can be changed
* under Wayland
* @requires os.family == "linux"
* @key headful
* @modules java.desktop/sun.awt
* @run main WLPopupResize
*/
public class WLPopupResize {
private static JFrame frame;
private static JWindow popup;
private static void createAndShowUI() {
frame = new JFrame("WLPopupResize Test");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
}
private static void showPopup() {
JPanel popupContents = new JPanel();
popupContents.add(new JLabel("test popup"));
popup = new JWindow(frame);
popup.setType(Window.Type.POPUP);
sun.awt.AWTAccessor.getWindowAccessor().setPopupParent(popup, frame);
popup.setSize(100, 50);
popup.add(popupContents);
popup.setVisible(true);
}
public static void main(String[] args) throws Exception {
Toolkit toolkit = Toolkit.getDefaultToolkit();
if (!toolkit.getClass().getName().equals("sun.awt.wl.WLToolkit")) {
System.out.println("The test makes sense only for WLToolkit. Exiting...");
return;
}
Robot robot = new Robot();
SwingUtilities.invokeAndWait(WLPopupResize::createAndShowUI);
pause(robot);
SwingUtilities.invokeAndWait(WLPopupResize::showPopup);
pause(robot);
SwingUtilities.invokeAndWait(() -> {
popup.setBounds(10, 20, 120, 80);
});
pause(robot);
Dimension newSize = popup.getSize();
if (newSize.width != 120 || newSize.height != 80) {
throw new RuntimeException("Wrong popup size: " + newSize.width + ", " + newSize.height);
}
}
private static void pause(Robot robot) {
robot.waitForIdle();
robot.delay(500);
}
}

View File

@@ -67,6 +67,7 @@ javax/swing/JTree/4618767/JTreeSelectedElementTest.java JBR-5397 macosx-all
javax/swing/JTree/DnD/LastNodeLowerHalfDrop.java JBR-5397 macosx-all
javax/swing/plaf/aqua/JInternalFrameBorderTest.java JBR-5397 macosx-all
javax/swing/plaf/basic/BasicMenuUI/4983388/bug4983388.java 8253184,JBR-6727,JBR-5397 windows-all,linux-all,macosx-all
javax/swing/plaf/basic/BasicRootPaneUI/HiddenDefaultButtonTest.java JBR-7310 windows-x64
javax/swing/plaf/synth/7158712/bug7158712.java JBR-125,8322653,JBR-5397 linux-all,windows-all,macosx-all
javax/swing/Popup/TaskbarPositionTest.java 8310689,JBR-5397 windows-all,macosx-all
javax/swing/text/CSSBorder/6796710/bug6796710.java JBR-5397,JBR-6465 macosx-all,windows-all,linux-aarch64
@@ -79,8 +80,8 @@ java/awt/Focus/NullActiveWindowOnFocusLost/NullActiveWindowOnFocusLost.java JBR-
java/awt/FullScreen/BufferStrategyExceptionTest/BufferStrategyExceptionTest.java JBR-5397 macosx-all
java/awt/FullScreen/FullScreenInsets/FullScreenInsets.java 7019055,8266245,JBR-5397 windows-all,linux-all,macosx-aarch64,macosx-all
java/awt/List/ListMultipleSelectTest/ListMultipleSelectTest.java JBR-5555,JBR-5397 windows-all,macosx-all
java/awt/Mouse/EnterExitEvents/DragWindowTest.java JBR-5397 macosx-all
java/awt/Mouse/ExtraMouseClick/ExtraMouseClick.java JBR-5397 macosx-all
java/awt/Mouse/EnterExitEvents/DragWindowTest.java 8253184,JBR-5397 macosx-all,windows-all
java/awt/Mouse/ExtraMouseClick/ExtraMouseClick.java 8253184,JBR-5709 windows-all,linux-all
java/awt/Mouse/MouseComboBoxTest/MouseComboBoxTest.java 8253184,JBR-6752,JBR-5397 windows-all,linux-all,macosx-all
java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersInKeyEvent.java JBR-5397 macosx-all
java/awt/Paint/PaintNativeOnUpdate.java JBR-5397 macosx-all
@@ -121,6 +122,7 @@ java/awt/event/MouseEvent/ClickDuringKeypress/ClickDuringKeypress.java 8233568,J
java/awt/Focus/6378278/InputVerifierTest.java JBR-5505 windows-all
java/awt/Focus/OwnedWindowFocusIMECrashTest/OwnedWindowFocusIMECrashTest.java 8169110,JBR-5505 linux-all,windows-all
java/awt/Focus/WindowUpdateFocusabilityTest/WindowUpdateFocusabilityTest.java JBR-5505 windows-all
java/awt/Frame/DisposeStressTest/DisposeStressTest.java JBR-7331 windows-all
java/awt/Frame/WindowDragTest/WindowDragTest.java JBR-5505 windows-all
java/awt/FullScreen/MultimonFullscreenTest/MultimonDeadlockTest.java JBR-5505 windows-all
java/awt/hidpi/DrawOnFrameGraphicsTest.java JBR-5505 windows-all

View File

@@ -1,7 +1,11 @@
java/awt/image/multiresolution/MultiresolutionIconTest.java JBR-7146 macosx-12.7.4,macosx-12.7.5,macosx-12.7.6
java/awt/image/multiresolution/MultiResolutionJOptionPaneIconTest.java JBR-7146 macosx-12.7.4,macosx-12.7.5,macosx-12.7.6
java/awt/Paint/PaintNativeOnUpdate.java JBR-7146 macosx-12.7.4,macosx-12.7.5,macosx-12.7.6
java/awt/Robot/HiDPIScreenCapture/ScreenCaptureTest.java JBR-7146 macosx-12.7.4,macosx-12.7.5,macosx-12.7.6
java/awt/Window/BackgroundIsNotUpdated/BackgroundIsNotUpdated.java JBR-7146 macosx-12.7.4,macosx-12.7.5,macosx-12.7.6
java/awt/Window/FullWindowContentTest/FullWindowContentRenderTest.java JBR-7146 macosx-12.7.4,macosx-12.7.5,macosx-12.7.6
java/awt/Window/MultiWindowApp/ChildAlwaysOnTopTest.java JBR-7312 macosx-all
java/awt/Window/ShapedAndTranslucentWindows/TranslucentChoice.java JBR-7146 macosx-12.7.4,macosx-12.7.5,macosx-12.7.6
java/awt/Window/WindowTitleVisibleTest/WindowTitleVisibleTest.java JBR-7146 macosx-12.7.4,macosx-12.7.5,macosx-12.7.6
javax/swing/JButton/8151303/PressedIconTest.java JBR-7146 macosx-12.7.4,macosx-12.7.5,macosx-12.7.6
javax/swing/JComponent/7154030/bug7154030.java JBR-7146 macosx-12.7.4,macosx-12.7.5,macosx-12.7.6

View File

@@ -4,6 +4,7 @@ java/awt/Choice/ChoiceStaysOpenedOnTAB.java JBR-6284 linux-all
java/awt/Debug/X11Trace.java JBR-5442 linux-all
java/awt/EmbeddedFrame/GraphicsConfigTest/GraphicsConfigTest.java 8305515 linux-all
java/awt/event/ComponentEvent/TextComponentTextEventTest.java JBR-7141 windows-x64
java/awt/event/KeyEvent/KeyEventLocationTest.java JBR-5916,JBR-7141 linux-all,windows-all
java/awt/Multiscreen/MultiScreenLocationTest/MultiScreenLocationTest.java JBR-6058,JBR-6664 windows-all,linux-all,macosx-all
java/awt/Multiscreen/WindowGCChangeTest/WindowGCChangeTest.java JBR-5531 macosx-all,linux-all
java/awt/Focus/6981400/Test1.java 8029675,JBR-5510,JBR-6702 windows-all,macosx-all,linux-5.18.2-arch1-1,linux-all

View File

@@ -6,6 +6,7 @@ java/awt/datatransfer/Independence/IndependenceAWTTest.java initial_runs generic
java/awt/datatransfer/Independence/IndependenceSwingTest.java initial_runs generic-all
java/awt/event/ComponentEvent/ListItemEventsTest.java initial_runs generic-all
java/awt/Focus/6401036/InputVerifierTest2.java initial_runs generic-all #intermittent
java/awt/Focus/InputVerifierTest3/InputVerifierTest3.java JBR-7311 linux-all
java/awt/Focus/TestWindowsLFFocus.java initial_runs generic-all
java/awt/font/ComplexEmoji.java initial_runs generic-all
java/awt/font/EmojiVariation.java initial_runs generic-all
@@ -22,6 +23,7 @@ java/awt/image/DrawImage/SimpleUnmanagedImage.java initial_runs generic-all
java/awt/Mixing/AWT_Mixing/JListInGlassPaneOverlapping.java initial_runs generic-all
java/awt/Mixing/AWT_Mixing/JListOverlapping.java initial_runs generic-all
java/awt/Mixing/AWT_Mixing/JPopupMenuOverlapping.java initial_runs generic-all
java/awt/Mixing/HWDisappear.java JBR-6818 linux-all
java/awt/Mouse/MouseWheelAbsXY/MouseWheelAbsXY.java JBR-7076 linux-all
java/awt/PopupMenu/PopupMenuLocation.java initial_runs generic-all
java/awt/PopupMenu/PopupMenuStayOpen.java initial_runs generic-all

View File

@@ -141,6 +141,7 @@ java/awt/Focus/FocusTransitionTest/FocusTransitionTest.java JBR-5809 linux-all
java/awt/Focus/FocusTraversalPolicy/ButtonGroupLayoutTraversal/ButtonGroupLayoutTraversalTest.java JBR-5210 windows-all
java/awt/Focus/FrameMinimizeTest/FrameMinimizeTest.java 8016266 linux-all
java/awt/Focus/IconifiedFrameFocusChangeTest/IconifiedFrameFocusChangeTest.java 6849364 generic-all
java/awt/Focus/InputVerifierTest3/InputVerifierTest3.java JBR-7311 linux-x86
java/awt/Focus/AutoRequestFocusTest/AutoRequestFocusToFrontTest.java 6848406 generic-all
java/awt/Focus/AutoRequestFocusTest/AutoRequestFocusSetVisibleTest.java 6848407 generic-all
java/awt/Focus/OwnedWindowFocusIMECrashTest/OwnedWindowFocusIMECrashTest.java 8169110 linux-all
@@ -264,6 +265,7 @@ java/awt/event/KeyEvent/ExtendedKeyCode/ExtendedKeyCodeTest.java 8169476 windows
java/awt/event/KeyEvent/KeyChar/KeyCharTest.java 8169474,8224055,JBR-93 windows-all,linux-all
java/awt/event/KeyEvent/KeyEventLocationTest.java JBR-5916 linux-all
java/awt/event/KeyEvent/KeyTyped/AltShiftEnterShouldNotSendKeyTyped7157.java JBR-7327 windows-x64
java/awt/event/KeyEvent/KeyTyped/CtrlASCII.java JBR-4880 windows-all
java/awt/event/KeyEvent/KeyTyped/CtrlSpace.java JBR-3817 windows-all,macosx-all
@@ -1081,7 +1083,7 @@ java/awt/Robot/HiDPIScreenCapture/HiDPIRobotScreenCaptureTest.java 8253184,JBR-1
java/awt/Robot/HiDPIScreenCapture/ScreenCaptureTest.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Robot/CheckCommonColors/CheckCommonColors.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
java/awt/Robot/ModifierRobotKey/ModifierRobotKeyTest.java JBR-5802 windows-all
java/awt/Robot/MultiScreenRobotPosition/MultiScreenRobotPosition.java JBR-830 windows-x64
java/awt/Robot/MultiScreenRobotPosition/MultiScreenRobotPosition.java JBR-830 windows-all
native_sanity/simplenativelauncher/ProgramTest.java JBR-5287 windows-all
@@ -1174,11 +1176,9 @@ jdk/jfr/api/consumer/recordingstream/TestOnEvent.java 8255404 linux-x6
# jdk_internal
jdk/internal/platform/docker/TestDockerBasic.java JBR-5220 linux-aarch64
jdk/internal/platform/docker/TestDockerCpuMetrics.java JBR-5334 linux-aarch64
jdk/internal/platform/docker/TestDockerMemoryMetrics.java JBR-5220 linux-aarch64
jdk/internal/platform/docker/TestGetFreeSwapSpaceSize.java JBR-5220 linux-aarch64
jdk/internal/platform/docker/TestPidsLimit.java JBR-5334,8311539 linux-aarch64,5.19.0-1026-aws
jdk/internal/platform/docker/TestUseContainerSupport.java JBR-5334 linux-aarch64
jdk/internal/platform/docker/TestPidsLimit.java 8311539 linux-all
############################################################################

View File

@@ -49,12 +49,14 @@ java/awt/Mixing/OverlappingButtons.java JBR-5707,JBR-6090 linux-all,windows-all
java/awt/Mixing/Validating.java JBR-5908,JBR-6090 linux-all,windows-all
java/awt/Modal/BlockedMouseInputTest2.java JBR-6090 windows-all
java/awt/Modal/BlockedMouseInputTest3.java JBR-6134 windows-x64
java/awt/Mouse/TitleBarDoubleClick/TitleBarDoubleClick.java JBR-7309 linux-x64
java/awt/PopupMenu/PopupMenuLocation.java 8238720,JBR-5071 windows-all,macosx-all,linux-all
java/awt/Window/AlwaysOnTop/SyncAlwaysOnTopFieldTest.java JBR-6845 linux-all
java/awt/Window/TopLevelLocation/TopLevelLocation.java JBR-5799 windows-all
java/awt/Window/WindowSizeDifferentScreens/WindowSizeDifferentScreens.java JBR-5513 linux-all
javax/swing/JComponent/7154030/bug7154030.java JBR-6134 windows-x64
javax/swing/JPopupMenu/6580930/bug6580930.java JBR-5071 linux-all
javax/swing/JSlider/6848475/bug6848475.java JBR-7329 windows-x64
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradient.java 8233582,JBR-6090,JBR-6360 linux-all,windows-all,macosx-all
javax/swing/plaf/basic/BasicGraphicsUtils/8132119/bug8132119.java JBR-5342 linux-all