mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2026-01-26 02:10:49 +01:00
Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
325f8c0d42 | ||
|
|
2e92b31fa5 | ||
|
|
51d67613bb | ||
|
|
48dee1515d | ||
|
|
37c68cafd6 | ||
|
|
35da2d269e | ||
|
|
035ccf385d | ||
|
|
d3bdc5491b | ||
|
|
5eac943de6 | ||
|
|
c7468389dd | ||
|
|
3144ad1b33 | ||
|
|
93a43e2977 | ||
|
|
c0f413d150 | ||
|
|
cbab59fafd | ||
|
|
317ec132e6 | ||
|
|
ed2fd2e1a4 | ||
|
|
1c9cb2d81c | ||
|
|
f26d1e523b | ||
|
|
75a7617dd3 | ||
|
|
a946a753c2 | ||
|
|
4c8b745e4d | ||
|
|
036ca4d18a | ||
|
|
aacc225090 | ||
|
|
5433855472 | ||
|
|
d89b396383 | ||
|
|
241fbd07ba | ||
|
|
fe208fb379 | ||
|
|
21906cd0a9 | ||
|
|
29f7cc3c2f |
@@ -126,7 +126,7 @@ $ docker run -v `pwd`../../../../:/JetBrainsRuntime -it 942ea9900054
|
||||
### Ubuntu Linux
|
||||
Install the necessary tools, libraries, and headers with:
|
||||
```
|
||||
$ sudo apt-get install autoconf make build-essential libwayland-dev libx11-dev libxext-dev libxrender-dev \
|
||||
$ sudo apt-get install autoconf make build-essential libx11-dev libxext-dev libxrender-dev \
|
||||
libxtst-dev libxt-dev libxrandr-dev libcups2-dev libfontconfig1-dev libasound2-dev libwayland-dev \
|
||||
libxkbcommon-x11-0
|
||||
```
|
||||
|
||||
@@ -17,9 +17,11 @@ function getVersionProp() {
|
||||
grep "^${1}" make/conf/version-numbers.conf | cut -d'=' -f2
|
||||
}
|
||||
|
||||
while getopts ":i?" o; do
|
||||
DISABLE_WARNINGS_AS_ERRORS=""
|
||||
while getopts ":iw?" o; do
|
||||
case "${o}" in
|
||||
i) INC_BUILD=1 ;;
|
||||
w) DISABLE_WARNINGS_AS_ERRORS="--disable-warnings-as-errors" ;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND-1))
|
||||
|
||||
@@ -35,6 +35,7 @@ function do_configure {
|
||||
--with-version-opt=b"$build_number" \
|
||||
--with-boot-jdk="$BOOT_JDK" \
|
||||
--enable-cds=yes \
|
||||
$DISABLE_WARNINGS_AS_ERRORS \
|
||||
$STATIC_CONF_ARGS \
|
||||
$REPRODUCIBLE_BUILD_OPTS \
|
||||
$WITH_ZIPPED_NATIVE_DEBUG_SYMBOLS \
|
||||
|
||||
@@ -43,6 +43,7 @@ function do_configure {
|
||||
--with-boot-jdk="$BOOT_JDK" \
|
||||
--enable-cds=yes \
|
||||
$LINUX_TARGET \
|
||||
$DISABLE_WARNINGS_AS_ERRORS \
|
||||
$STATIC_CONF_ARGS \
|
||||
$REPRODUCIBLE_BUILD_OPTS \
|
||||
$WITH_ZIPPED_NATIVE_DEBUG_SYMBOLS \
|
||||
|
||||
@@ -25,6 +25,7 @@ function do_configure {
|
||||
--with-boot-jdk="$BOOT_JDK" \
|
||||
$STATIC_CONF_ARGS \
|
||||
--enable-cds=yes \
|
||||
$DISABLE_WARNINGS_AS_ERRORS \
|
||||
$REPRODUCIBLE_BUILD_OPTS \
|
||||
$WITH_ZIPPED_NATIVE_DEBUG_SYMBOLS \
|
||||
|| do_exit $?
|
||||
|
||||
@@ -38,6 +38,7 @@ function do_configure {
|
||||
--with-version-opt=b"$build_number" \
|
||||
--with-boot-jdk="$BOOT_JDK" \
|
||||
--enable-cds=yes \
|
||||
$DISABLE_WARNINGS_AS_ERRORS \
|
||||
$STATIC_CONF_ARGS \
|
||||
$REPRODUCIBLE_BUILD_OPTS \
|
||||
$WITH_ZIPPED_NATIVE_DEBUG_SYMBOLS \
|
||||
|
||||
@@ -49,6 +49,7 @@ function do_configure {
|
||||
--with-nvdacontrollerclient=$NVDA_PATH \
|
||||
--disable-ccache \
|
||||
--enable-cds=yes \
|
||||
$DISABLE_WARNINGS_AS_ERRORS \
|
||||
$STATIC_CONF_ARGS \
|
||||
$REPRODUCIBLE_BUILD_OPTS \
|
||||
|| do_exit $?
|
||||
|
||||
@@ -40,6 +40,7 @@ function do_configure {
|
||||
--with-nvdacontrollerclient=$NVDA_PATH \
|
||||
--disable-ccache \
|
||||
--enable-cds=yes \
|
||||
$DISABLE_WARNINGS_AS_ERRORS \
|
||||
$STATIC_CONF_ARGS \
|
||||
$REPRODUCIBLE_BUILD_OPTS \
|
||||
|| do_exit $?
|
||||
|
||||
@@ -36,6 +36,7 @@ function do_configure {
|
||||
--with-nvdacontrollerclient=$NVDA_PATH \
|
||||
--disable-ccache \
|
||||
--enable-cds=yes \
|
||||
$DISABLE_WARNINGS_AS_ERRORS \
|
||||
$STATIC_CONF_ARGS \
|
||||
$REPRODUCIBLE_BUILD_OPTS \
|
||||
|| do_exit $?
|
||||
|
||||
@@ -37,7 +37,10 @@
|
||||
constraint) \
|
||||
\
|
||||
product(bool, UseOSErrorReporting, false, \
|
||||
"Let VM fatal error propagate to the OS (ie. WER on Windows)")
|
||||
"Let VM fatal error propagate to the OS (ie. WER on Windows)") \
|
||||
\
|
||||
product(bool, UseCriticalSection, true, EXPERIMENTAL, \
|
||||
"Use the critical section API instead of WaitForSingleObject")
|
||||
|
||||
// end of RUNTIME_OS_FLAGS
|
||||
|
||||
|
||||
@@ -39,6 +39,8 @@ static INIT_ONCE initialized = INIT_ONCE_STATIC_INIT;
|
||||
static int lock_count = 0;
|
||||
static HANDLE lock_event;
|
||||
static DWORD lock_owner = 0;
|
||||
static CRITICAL_SECTION critical_section;
|
||||
|
||||
|
||||
//
|
||||
// Note that Microsoft's critical region code contains a race
|
||||
@@ -52,8 +54,13 @@ static DWORD lock_owner = 0;
|
||||
//
|
||||
|
||||
static BOOL WINAPI initialize(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context) {
|
||||
lock_event = CreateEvent(nullptr, false, true, nullptr);
|
||||
assert(lock_event != nullptr, "unexpected return value from CreateEvent");
|
||||
if (UseCriticalSection) {
|
||||
bool success = InitializeCriticalSectionAndSpinCount(&critical_section, 0x00000400);
|
||||
assert(success, "unexpected return value from InitializeCriticalSectionAndSpinCount");
|
||||
} else {
|
||||
lock_event = CreateEvent(nullptr, false, true, nullptr);
|
||||
assert(lock_event != nullptr, "unexpected return value from CreateEvent");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -62,9 +69,13 @@ ThreadCritical::ThreadCritical() {
|
||||
|
||||
DWORD current_thread = GetCurrentThreadId();
|
||||
if (lock_owner != current_thread) {
|
||||
// Grab the lock before doing anything.
|
||||
DWORD ret = WaitForSingleObject(lock_event, INFINITE);
|
||||
assert(ret == WAIT_OBJECT_0, "unexpected return value from WaitForSingleObject");
|
||||
if (UseCriticalSection) {
|
||||
EnterCriticalSection(&critical_section);
|
||||
} else {
|
||||
// Grab the lock before doing anything.
|
||||
DWORD ret = WaitForSingleObject(lock_event, INFINITE);
|
||||
assert(ret == WAIT_OBJECT_0, "unexpected return value from WaitForSingleObject");
|
||||
}
|
||||
lock_owner = current_thread;
|
||||
}
|
||||
// Atomicity isn't required. Bump the recursion count.
|
||||
@@ -79,8 +90,12 @@ ThreadCritical::~ThreadCritical() {
|
||||
if (lock_count == 0) {
|
||||
// We're going to unlock
|
||||
lock_owner = 0;
|
||||
// No lost wakeups, lock_event stays signaled until reset.
|
||||
DWORD ret = SetEvent(lock_event);
|
||||
assert(ret != 0, "unexpected return value from SetEvent");
|
||||
if (UseCriticalSection) {
|
||||
LeaveCriticalSection(&critical_section);
|
||||
} else {
|
||||
// No lost wakeups, lock_event stays signaled until reset.
|
||||
DWORD ret = SetEvent(lock_event);
|
||||
assert(ret != 0, "unexpected return value from SetEvent");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +149,15 @@ class JvmtiExport : public AllStatic {
|
||||
JVMTI_ONLY(_can_access_local_variables = (on != 0);)
|
||||
}
|
||||
inline static void set_can_hotswap_or_post_breakpoint(bool on) {
|
||||
JVMTI_ONLY(_can_hotswap_or_post_breakpoint = (on != 0);)
|
||||
#if INCLUDE_JVMTI
|
||||
// Check that _can_hotswap_or_post_breakpoint is not reset once it
|
||||
// was set to true. When _can_hotswap_or_post_breakpoint is set to true
|
||||
// _all_dependencies_are_recorded is also set to true and never
|
||||
// reset so we have to ensure that evol dependencies are always
|
||||
// recorded from that point on.
|
||||
assert(!_can_hotswap_or_post_breakpoint || on, "sanity check");
|
||||
_can_hotswap_or_post_breakpoint = (on != 0);
|
||||
#endif
|
||||
}
|
||||
inline static void set_can_walk_any_space(bool on) {
|
||||
JVMTI_ONLY(_can_walk_any_space = (on != 0);)
|
||||
|
||||
@@ -4099,21 +4099,22 @@ void VM_RedefineClasses::transfer_old_native_function_registrations(InstanceKlas
|
||||
// Deoptimize all compiled code that depends on the classes redefined.
|
||||
//
|
||||
// If the can_redefine_classes capability is obtained in the onload
|
||||
// phase then the compiler has recorded all dependencies from startup.
|
||||
// In that case we need only deoptimize and throw away all compiled code
|
||||
// that depends on the class.
|
||||
// phase or 'AlwaysRecordEvolDependencies' is true, then the compiler has
|
||||
// recorded all dependencies from startup. In that case we need only
|
||||
// deoptimize and throw away all compiled code that depends on the class.
|
||||
//
|
||||
// If can_redefine_classes is obtained sometime after the onload
|
||||
// phase then the dependency information may be incomplete. In that case
|
||||
// the first call to RedefineClasses causes all compiled code to be
|
||||
// thrown away. As can_redefine_classes has been obtained then
|
||||
// all future compilations will record dependencies so second and
|
||||
// subsequent calls to RedefineClasses need only throw away code
|
||||
// that depends on the class.
|
||||
// If can_redefine_classes is obtained sometime after the onload phase
|
||||
// (and 'AlwaysRecordEvolDependencies' is false) then the dependency
|
||||
// information may be incomplete. In that case the first call to
|
||||
// RedefineClasses causes all compiled code to be thrown away. As
|
||||
// can_redefine_classes has been obtained then all future compilations will
|
||||
// record dependencies so second and subsequent calls to RedefineClasses
|
||||
// need only throw away code that depends on the class.
|
||||
//
|
||||
|
||||
void VM_RedefineClasses::flush_dependent_code() {
|
||||
assert(SafepointSynchronize::is_at_safepoint(), "sanity check");
|
||||
assert(JvmtiExport::all_dependencies_are_recorded() || !AlwaysRecordEvolDependencies, "sanity check");
|
||||
|
||||
DeoptimizationScope deopt_scope;
|
||||
|
||||
|
||||
@@ -399,6 +399,30 @@ void Arguments::init_system_properties() {
|
||||
os::init_system_properties_values();
|
||||
}
|
||||
|
||||
static const char * get_virtualization_type() {
|
||||
VirtualizationType vrt = VM_Version::get_detected_virtualization();
|
||||
if (vrt == XenHVM || vrt == XenPVHVM) {
|
||||
return "Xen";
|
||||
} else if (vrt == KVM) {
|
||||
return "KVM";
|
||||
} else if (vrt == VMWare) {
|
||||
return "VMWare";
|
||||
} else if (vrt == HyperV) {
|
||||
return "HyperV";
|
||||
} else if (vrt == HyperVRole) {
|
||||
// Enables users to create and manage virtual machines (VMs) on a physical host machine,
|
||||
// but doesn't mean we are running in virtual.
|
||||
return "none";
|
||||
}
|
||||
|
||||
return "none";
|
||||
}
|
||||
|
||||
void Arguments::post_init_system_properties() {
|
||||
const char *virtualization_type = get_virtualization_type();
|
||||
PropertyList_add(&_system_properties, new SystemProperty("intellij.os.virtualization", virtualization_type, false));
|
||||
}
|
||||
|
||||
// Update/Initialize System properties after JDK version number is known
|
||||
void Arguments::init_version_specific_system_properties() {
|
||||
enum { bufsz = 16 };
|
||||
|
||||
@@ -460,6 +460,8 @@ class Arguments : AllStatic {
|
||||
// System properties
|
||||
static void init_system_properties();
|
||||
|
||||
static void post_init_system_properties();
|
||||
|
||||
// Update/Initialize System properties after JDK version number is known
|
||||
static void init_version_specific_system_properties();
|
||||
|
||||
|
||||
@@ -1980,6 +1980,14 @@ const int ObjectAlignmentInBytes = 8;
|
||||
"(default) disables native heap trimming.") \
|
||||
range(0, UINT_MAX) \
|
||||
\
|
||||
product(bool, ProfileExceptionHandlers, true, \
|
||||
"Profile exception handlers") \
|
||||
\
|
||||
product(bool, AlwaysRecordEvolDependencies, true, EXPERIMENTAL, \
|
||||
"Unconditionally record nmethod dependencies on class " \
|
||||
"rewriting/transformation independently of the JVMTI " \
|
||||
"can_{retransform/redefine}_classes capabilities.") \
|
||||
\
|
||||
product(bool, AllowEnhancedClassRedefinition, false, \
|
||||
"Allow enhanced class redefinition beyond swapping method " \
|
||||
"bodies") \
|
||||
@@ -1993,7 +2001,6 @@ const int ObjectAlignmentInBytes = 8;
|
||||
"modules.") \
|
||||
constraint(HotswapAgentConstraintFunc, AfterErgo)
|
||||
|
||||
|
||||
// end of RUNTIME_FLAGS
|
||||
|
||||
DECLARE_FLAGS(LP64_RUNTIME_FLAGS)
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "prims/jvmtiExport.hpp"
|
||||
#include "prims/methodHandles.hpp"
|
||||
#include "prims/downcallLinker.hpp"
|
||||
#include "runtime/arguments.hpp"
|
||||
#include "runtime/globals.hpp"
|
||||
#include "runtime/atomic.hpp"
|
||||
#include "runtime/continuation.hpp"
|
||||
@@ -115,6 +116,12 @@ void vm_init_globals() {
|
||||
jint init_globals() {
|
||||
management_init();
|
||||
JvmtiExport::initialize_oop_storage();
|
||||
#if INCLUDE_JVMTI
|
||||
if (AlwaysRecordEvolDependencies) {
|
||||
JvmtiExport::set_can_hotswap_or_post_breakpoint(true);
|
||||
JvmtiExport::set_all_dependencies_are_recorded(true);
|
||||
}
|
||||
#endif
|
||||
bytecodes_init();
|
||||
classLoader_init1();
|
||||
compilationPolicy_init();
|
||||
@@ -126,6 +133,8 @@ jint init_globals() {
|
||||
if (status != JNI_OK)
|
||||
return status;
|
||||
|
||||
Arguments::post_init_system_properties();
|
||||
|
||||
#ifdef LEAK_SANITIZER
|
||||
{
|
||||
// Register the Java heap with LSan.
|
||||
|
||||
@@ -374,7 +374,7 @@ setXICWindowFocus(XIC ic, Window w)
|
||||
#define INITIAL_LOOKUP_BUF_SIZE 512
|
||||
|
||||
Boolean
|
||||
awt_x11inputmethod_lookupString(XKeyPressedEvent *event, KeySym *keysymp)
|
||||
awt_x11inputmethod_lookupString(XKeyPressedEvent *event, KeySym *keysymp, Boolean /* not used */)
|
||||
{
|
||||
JNIEnv *env = GetJNIEnv();
|
||||
X11InputMethodData *pX11IMData = NULL;
|
||||
|
||||
@@ -38,19 +38,17 @@ MTLGC_DestroyMTLGraphicsConfig(jlong pConfigInfo)
|
||||
{
|
||||
J2dTraceLn(J2D_TRACE_INFO, "MTLGC_DestroyMTLGraphicsConfig");
|
||||
JNI_COCOA_ENTER(env);
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^() {
|
||||
MTLGraphicsConfigInfo *mtlinfo =
|
||||
(MTLGraphicsConfigInfo *)jlong_to_ptr(pConfigInfo);
|
||||
if (mtlinfo == NULL) {
|
||||
J2dRlsTraceLn(J2D_TRACE_ERROR,
|
||||
"MTLGC_DestroyMTLGraphicsConfig: info is null");
|
||||
return;
|
||||
}
|
||||
|
||||
MTLContext *mtlc = (MTLContext*)mtlinfo->context;
|
||||
__block MTLGraphicsConfigInfo *mtlinfo = (MTLGraphicsConfigInfo *)jlong_to_ptr(pConfigInfo);
|
||||
if (mtlinfo == NULL) {
|
||||
J2dRlsTraceLn(J2D_TRACE_ERROR,
|
||||
"MTLGC_DestroyMTLGraphicsConfig: info is null");
|
||||
return;
|
||||
}
|
||||
__block MTLContext *mtlc = (MTLContext*)mtlinfo->context;
|
||||
mtlinfo->context = nil;
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^() {
|
||||
if (mtlc != NULL) {
|
||||
[mtlinfo->context release];
|
||||
mtlinfo->context = nil;
|
||||
[mtlc release];
|
||||
}
|
||||
free(mtlinfo);
|
||||
}];
|
||||
|
||||
@@ -255,8 +255,11 @@ union StateIndex {
|
||||
}
|
||||
|
||||
- (void) dealloc {
|
||||
[super dealloc];
|
||||
[computeStates release];
|
||||
self.library = nil;
|
||||
self.shaders = nil;
|
||||
self.states = nil;
|
||||
[super dealloc];
|
||||
}
|
||||
@end
|
||||
|
||||
|
||||
@@ -605,10 +605,6 @@ MTLTR_DrawColorGlyphNoCache(MTLContext *mtlc,
|
||||
return JNI_TRUE;
|
||||
}
|
||||
|
||||
// see DrawGlyphList.c for more on this macro...
|
||||
#define FLOOR_ASSIGN(l, r) \
|
||||
if ((r)<0) (l) = ((int)floor(r)); else (l) = ((int)(r))
|
||||
|
||||
#define ADJUST_SUBPIXEL_GLYPH_POSITION(coord, res) \
|
||||
if ((res) > 1) (coord) += 0.5f / ((float)(res)) - 0.5f
|
||||
|
||||
@@ -653,21 +649,32 @@ MTLTR_DrawGlyphList(JNIEnv *env, MTLContext *mtlc, BMTLSDOps *dstOps,
|
||||
jfloat posy = NEXT_FLOAT(positions);
|
||||
glyphx = glyphListOrigX + posx + ginfo->topLeftX;
|
||||
glyphy = glyphListOrigY + posy + ginfo->topLeftY;
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphx, ginfo->subpixelResolutionX);
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphy, ginfo->subpixelResolutionY);
|
||||
FLOOR_ASSIGN(x, glyphx);
|
||||
FLOOR_ASSIGN(y, glyphy);
|
||||
} else {
|
||||
glyphx = glyphListOrigX + ginfo->topLeftX;
|
||||
glyphy = glyphListOrigY + ginfo->topLeftY;
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphx, ginfo->subpixelResolutionX);
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphy, ginfo->subpixelResolutionY);
|
||||
FLOOR_ASSIGN(x, glyphx);
|
||||
FLOOR_ASSIGN(y, glyphy);
|
||||
glyphListOrigX += ginfo->advanceX;
|
||||
glyphListOrigY += ginfo->advanceY;
|
||||
}
|
||||
|
||||
int rx = ginfo->subpixelResolutionX;
|
||||
int ry = ginfo->subpixelResolutionY;
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphx, rx);
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphy, ry);
|
||||
int subx = 0, suby = 0;
|
||||
// see DrawGlyphList.c FLOOR_ASSIGN & getSubpixelGlyphImage
|
||||
if (glyphx >= 0.0f && glyphy >= 0.0f) {
|
||||
x = (int) glyphx;
|
||||
y = (int) glyphy;
|
||||
subx = ((int) (glyphx * (float) rx)) % rx;
|
||||
suby = ((int) (glyphy * (float) ry)) % ry;
|
||||
} else {
|
||||
float fx = floor(glyphx), fy = floor(glyphy);
|
||||
x = (int) fx;
|
||||
y = (int) fy;
|
||||
subx = (int) ((glyphx - fx) * (float) rx);
|
||||
suby = (int) ((glyphy - fy) * (float) ry);
|
||||
}
|
||||
|
||||
if (ginfo->image == NULL) {
|
||||
J2dTraceLn(J2D_TRACE_INFO, "Glyph image is null");
|
||||
continue;
|
||||
@@ -677,13 +684,11 @@ MTLTR_DrawGlyphList(JNIEnv *env, MTLContext *mtlc, BMTLSDOps *dstOps,
|
||||
J2dTraceLn1(J2D_TRACE_INFO, "rowBytes = %d", ginfo->rowBytes);
|
||||
if (ginfo->format == sun_font_StrikeCache_PIXEL_FORMAT_GREYSCALE) {
|
||||
// grayscale or monochrome glyph data
|
||||
int rx = ginfo->subpixelResolutionX;
|
||||
int ry = ginfo->subpixelResolutionY;
|
||||
int subimage;
|
||||
if ((rx == 1 && ry == 1) || rx <= 0 || ry <= 0) {
|
||||
subimage = 0;
|
||||
} else {
|
||||
subimage = (jint)((glyphx - x) * rx) + (jint)((glyphy - y) * ry) * rx;
|
||||
subimage = subx + suby * rx;
|
||||
}
|
||||
if (ginfo->width <= MTLTR_CACHE_CELL_WIDTH &&
|
||||
ginfo->height <= MTLTR_CACHE_CELL_HEIGHT)
|
||||
|
||||
@@ -60,7 +60,9 @@ public class JBRApiModule {
|
||||
.service("com.jetbrains.FontExtensions")
|
||||
.withStatic("getSubpixelResolution", "getSubpixelResolution", "sun.font.FontUtilities")
|
||||
.withStatic("deriveFontWithFeatures", "deriveFont", "java.awt.Font")
|
||||
.withStatic("getFeaturesAsString", "getFeaturesAsString", "com.jetbrains.desktop.FontExtensions")
|
||||
.withStatic("getAvailableFeatures", "getAvailableFeatures", "java.awt.Font")
|
||||
.service("com.jetbrains.FontOpenTypeFeatures")
|
||||
.withStatic("getAvailableFeatures", "getAvailableFeatures", "java.awt.Font")
|
||||
.clientProxy("java.awt.Font$Features", "com.jetbrains.FontExtensions$Features")
|
||||
.service("com.jetbrains.WindowMove", "java.awt.Window$WindowMoveService")
|
||||
.service("com.jetbrains.FontMetricsAccessor", "sun.font.FontDesignMetrics$Accessor")
|
||||
|
||||
@@ -71,6 +71,7 @@ import sun.font.FontManagerFactory;
|
||||
import sun.font.FontUtilities;
|
||||
import sun.font.GlyphLayout;
|
||||
import sun.font.StandardGlyphVector;
|
||||
import sun.font.SunLayoutEngine;
|
||||
|
||||
import static sun.font.EAttribute.EBACKGROUND;
|
||||
import static sun.font.EAttribute.EBIDI_EMBEDDING;
|
||||
@@ -2732,7 +2733,16 @@ public class Font implements java.io.Serializable
|
||||
return font.values != null && (font.values.getKerning() != 0);
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Returns a list of OpenType's features supported by current Font.
|
||||
* Implementation of such logic goes to HarfBuzz library.
|
||||
* @return list of OpenType's features concatenated to String
|
||||
*/
|
||||
private static Set<String> getAvailableFeatures(Font font) {
|
||||
return SunLayoutEngine.getAvailableFeatures(FontUtilities.getFont2D(font));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the logical bounds of the characters indexed in the
|
||||
* specified {@link CharacterIterator} in the
|
||||
* specified {@code FontRenderContext}. The logical bounds
|
||||
|
||||
@@ -459,7 +459,8 @@ public class BoxLayout implements LayoutManager2, Serializable {
|
||||
}
|
||||
|
||||
void checkRequests() {
|
||||
if (xChildren == null || yChildren == null) {
|
||||
// check yTotal, as it's assigned the last, to ensure initialization completed without exceptions:
|
||||
if (yTotal == null) {
|
||||
// The requests have been invalidated... recalculate
|
||||
// the request information.
|
||||
int n = target.getComponentCount();
|
||||
|
||||
@@ -297,6 +297,12 @@ public class PopupFactory {
|
||||
(EmbeddedFrame.getAppletIfAncestorOf(owner) != null)) {
|
||||
((HeavyWeightPopup)popup).setCacheEnabled(false);
|
||||
}
|
||||
|
||||
if (isPopupPositionedRelatively()) {
|
||||
// Or else there are positioning artifacts when moving between monitors
|
||||
// with a different scale and -Dsun.java2d.uiScale=N was specified.
|
||||
((HeavyWeightPopup)popup).setCacheEnabled(false);
|
||||
}
|
||||
return popup;
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -37,9 +37,12 @@ import sun.java2d.DisposerRecord;
|
||||
|
||||
import java.awt.geom.Point2D;
|
||||
import java.lang.ref.SoftReference;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/*
|
||||
* different ways to do this
|
||||
@@ -90,7 +93,7 @@ import java.util.WeakHashMap;
|
||||
* character.
|
||||
*
|
||||
* I'd expect that the majority of scripts use the default mapper for
|
||||
* a particular font. Loading the hastable with 40 or so keys 30+ of
|
||||
* a particular font. Loading the hashtable with 40 or so keys 30+ of
|
||||
* which all map to the same object is unfortunate. It might be worth
|
||||
* instead having a per-font list of 'scripts with non-default
|
||||
* engines', e.g. the factory has a hashtable mapping fonts to 'script
|
||||
@@ -156,7 +159,7 @@ public final class SunLayoutEngine implements LayoutEngine, LayoutEngineFactory
|
||||
private static final WeakHashMap<Font2D, FaceRef> facePtr =
|
||||
new WeakHashMap<>();
|
||||
|
||||
private long getFacePtr(Font2D font2D) {
|
||||
private static long getFacePtr(Font2D font2D) {
|
||||
FaceRef ref;
|
||||
synchronized (facePtr) {
|
||||
ref = facePtr.computeIfAbsent(font2D, FaceRef::new);
|
||||
@@ -164,6 +167,12 @@ public final class SunLayoutEngine implements LayoutEngine, LayoutEngineFactory
|
||||
return ref.getNativePtr();
|
||||
}
|
||||
|
||||
public static Set<String> getAvailableFeatures(Font2D font) {
|
||||
long pFace = getFacePtr(font);
|
||||
return (pFace != 0) ? Arrays.stream(getFeatures(pFace)).filter(elem -> elem != null).collect(Collectors.toSet())
|
||||
: Set.of();
|
||||
}
|
||||
|
||||
public void layout(FontStrikeDesc desc, float[] mat, float ptSize, int gmask,
|
||||
int baseIndex, TextRecord tr, boolean ltrDirection, Map<String, Integer> features,
|
||||
Point2D.Float pt, GVData data) {
|
||||
@@ -216,4 +225,6 @@ public final class SunLayoutEngine implements LayoutEngine, LayoutEngineFactory
|
||||
disposeFace(facePtr);
|
||||
}
|
||||
}
|
||||
|
||||
private static native String[] getFeatures(long pFace);
|
||||
}
|
||||
|
||||
@@ -1216,10 +1216,6 @@ extern int lcdSubPixelPosSupported;
|
||||
extern int useFontSmoothing;
|
||||
#endif
|
||||
|
||||
// see DrawGlyphList.c for more on this macro...
|
||||
#define FLOOR_ASSIGN(l, r) \
|
||||
if ((r)<0) (l) = ((int)floor(r)); else (l) = ((int)(r))
|
||||
|
||||
#define ADJUST_SUBPIXEL_GLYPH_POSITION(coord, res) \
|
||||
if ((res) > 1) (coord) += 0.5f / ((float)(res)) - 0.5f
|
||||
|
||||
@@ -1290,21 +1286,32 @@ OGLTR_DrawGlyphList(JNIEnv *env, OGLContext *oglc, OGLSDOps *dstOps,
|
||||
jfloat posy = NEXT_FLOAT(positions);
|
||||
glyphx = glyphListOrigX + posx + ginfo->topLeftX;
|
||||
glyphy = glyphListOrigY + posy + ginfo->topLeftY;
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphx, ginfo->subpixelResolutionX);
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphy, ginfo->subpixelResolutionY);
|
||||
FLOOR_ASSIGN(x, glyphx);
|
||||
FLOOR_ASSIGN(y, glyphy);
|
||||
} else {
|
||||
glyphx = glyphListOrigX + ginfo->topLeftX;
|
||||
glyphy = glyphListOrigY + ginfo->topLeftY;
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphx, ginfo->subpixelResolutionX);
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphy, ginfo->subpixelResolutionY);
|
||||
FLOOR_ASSIGN(x, glyphx);
|
||||
FLOOR_ASSIGN(y, glyphy);
|
||||
glyphListOrigX += ginfo->advanceX;
|
||||
glyphListOrigY += ginfo->advanceY;
|
||||
}
|
||||
|
||||
int rx = ginfo->subpixelResolutionX;
|
||||
int ry = ginfo->subpixelResolutionY;
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphx, rx);
|
||||
ADJUST_SUBPIXEL_GLYPH_POSITION(glyphy, ry);
|
||||
int subx = 0, suby = 0;
|
||||
// see DrawGlyphList.c FLOOR_ASSIGN & getSubpixelGlyphImage
|
||||
if (glyphx >= 0.0f && glyphy >= 0.0f) {
|
||||
x = (int) glyphx;
|
||||
y = (int) glyphy;
|
||||
subx = ((int) (glyphx * (float) rx)) % rx;
|
||||
suby = ((int) (glyphy * (float) ry)) % ry;
|
||||
} else {
|
||||
float fx = floor(glyphx), fy = floor(glyphy);
|
||||
x = (int) fx;
|
||||
y = (int) fy;
|
||||
subx = (int) ((glyphx - fx) * (float) rx);
|
||||
suby = (int) ((glyphy - fy) * (float) ry);
|
||||
}
|
||||
|
||||
if (ginfo->image == NULL) {
|
||||
continue;
|
||||
}
|
||||
@@ -1314,13 +1321,11 @@ OGLTR_DrawGlyphList(JNIEnv *env, OGLContext *oglc, OGLSDOps *dstOps,
|
||||
OGLContext_InitGrayRenderHints(env, oglc);
|
||||
}
|
||||
// grayscale or monochrome glyph data
|
||||
int rx = ginfo->subpixelResolutionX;
|
||||
int ry = ginfo->subpixelResolutionY;
|
||||
int subimage;
|
||||
if ((rx == 1 && ry == 1) || rx <= 0 || ry <= 0) {
|
||||
subimage = 0;
|
||||
} else {
|
||||
subimage = (jint)((glyphx - x) * rx) + (jint)((glyphy - y) * ry) * rx;
|
||||
subimage = subx + suby * rx;
|
||||
}
|
||||
if (ginfo->width <= OGLTR_CACHE_CELL_WIDTH &&
|
||||
ginfo->height <= OGLTR_CACHE_CELL_HEIGHT)
|
||||
|
||||
@@ -222,6 +222,58 @@ JDKFontInfo*
|
||||
}
|
||||
|
||||
|
||||
static hb_tag_t *createFeatureTags(hb_face_t *face, int tag, int *count) {
|
||||
*count = hb_ot_layout_table_get_feature_tags(face, tag, 0, NULL, NULL);
|
||||
if (*count == 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
hb_tag_t *res = calloc(*count, sizeof(hb_tag_t));
|
||||
if (res == NULL) {
|
||||
*count = 0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
hb_ot_layout_table_get_feature_tags(face, tag, 0, (unsigned int *)count, res);
|
||||
return res;
|
||||
}
|
||||
|
||||
static void putFeatureTagsToArray(JNIEnv *env, int count, int offset,
|
||||
hb_tag_t *featureTags, jobjectArray arr) {
|
||||
if (featureTags == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
char feature[sizeof(hb_tag_t) + 1] = {0};
|
||||
for (int i = 0; i < count; i++) {
|
||||
hb_tag_to_string(featureTags[i], feature);
|
||||
(*env)->SetObjectArrayElement(env, arr, offset + i, (*env)->NewStringUTF(env, feature));
|
||||
}
|
||||
}
|
||||
|
||||
JNIEXPORT jobjectArray JNICALL Java_sun_font_SunLayoutEngine_getFeatures
|
||||
(JNIEnv *env, jclass cls, jlong pFace) {
|
||||
|
||||
jobjectArray res;
|
||||
int gposFeatureCount, gsubFeatureCount;
|
||||
|
||||
hb_face_t *hbface = (hb_face_t*) jlong_to_ptr(pFace);
|
||||
hb_tag_t *gposFeatureTags = createFeatureTags(hbface, HB_OT_TAG_GPOS, &gposFeatureCount);
|
||||
hb_tag_t *gsubFeatureTags = createFeatureTags(hbface, HB_OT_TAG_GSUB, &gsubFeatureCount);
|
||||
|
||||
res = (*env)->NewObjectArray(env, gposFeatureCount + gsubFeatureCount,
|
||||
(*env)->FindClass(env, "java/lang/String"), NULL);
|
||||
if (res) {
|
||||
putFeatureTagsToArray(env, gposFeatureCount, 0, gposFeatureTags, res);
|
||||
putFeatureTagsToArray(env, gsubFeatureCount, gposFeatureCount, gsubFeatureTags, res);
|
||||
}
|
||||
|
||||
free(gposFeatureTags);
|
||||
free(gsubFeatureTags);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_sun_font_SunLayoutEngine_shape
|
||||
(JNIEnv *env, jclass cls,
|
||||
jobject font2D,
|
||||
|
||||
@@ -213,6 +213,10 @@ public class XBaseWindow {
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean isInitialising() {
|
||||
return initialising == InitialiseState.INITIALISING;
|
||||
}
|
||||
|
||||
public boolean checkInitialised() {
|
||||
awtLock();
|
||||
try {
|
||||
|
||||
@@ -97,11 +97,68 @@ public class XInputMethod extends X11InputMethod {
|
||||
@Override
|
||||
public void dispatchEvent(AWTEvent e) {
|
||||
if (doesSupportMovingCandidatesNativeWindow) {
|
||||
if (e.getID() == MouseEvent.MOUSE_PRESSED) {
|
||||
/* doesSupportMovingCandidatesNativeWindow == true means that natively the IM uses XIMPreeditPosition
|
||||
* input mode (the term "input style" is used in XOrg docs).
|
||||
* The main flaw of this mode is that AWT doesn't receive any information about changes in the
|
||||
* currently composed preedit text. In other words, Java applications don't know whether
|
||||
* composing is happening now or not and don't have a way to get the current preedit text. Therefore,
|
||||
* when the caret position changes in response to mouse clicks, Swing doesn't understand that
|
||||
* there's a need to discard the preedit text (because it thinks there is no any), see
|
||||
* javax.swing.text.JTextComponent.ComposedTextCaret#positionCaret.
|
||||
* To prevent the preedit text from following the caret when it's moved in response to mouse clicks,
|
||||
* let's manually discard the preedit text here.
|
||||
*/
|
||||
endComposition();
|
||||
}
|
||||
clientComponentCaretPositionTracker.onDispatchEvent(e);
|
||||
}
|
||||
super.dispatchEvent(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endComposition() {
|
||||
if (!doesSupportMovingCandidatesNativeWindow) {
|
||||
// Use the old implementation if
|
||||
// the IM isn't using the new mode introduced in JBR-2460 (XIMPreeditPosition)
|
||||
super.endComposition();
|
||||
return;
|
||||
}
|
||||
|
||||
if (disposed) {
|
||||
return;
|
||||
}
|
||||
|
||||
String preeditText = invokeResetXIC();
|
||||
needResetXIC = false;
|
||||
|
||||
awtLock();
|
||||
try {
|
||||
if (composedText != null) {
|
||||
composedText = null;
|
||||
// Remove any existing composed text by posting an InputMethodEvent with null composed text
|
||||
postInputMethodEvent(
|
||||
InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
|
||||
null,
|
||||
0,
|
||||
null,
|
||||
null,
|
||||
EventQueue.getMostRecentEventTime()
|
||||
);
|
||||
}
|
||||
|
||||
if (committedText != null) {
|
||||
preeditText = preeditText == null ? committedText : committedText + preeditText;
|
||||
committedText = null;
|
||||
}
|
||||
|
||||
if (preeditText != null && !preeditText.isEmpty()) {
|
||||
dispatchCommittedText(preeditText);
|
||||
}
|
||||
} finally {
|
||||
awtUnlock();
|
||||
}
|
||||
}
|
||||
|
||||
// Is called from native
|
||||
private static boolean isJbNewXimClientEnabled() {
|
||||
|
||||
@@ -119,7 +119,6 @@ import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
@@ -988,6 +987,14 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
|
||||
processXkbChanges(ev);
|
||||
}
|
||||
|
||||
if (ev.get_type() == XConstants.KeyPress) {
|
||||
doesCurrentlyDispatchedKeyPressContainThePreeditTextOfLastXResetIC =
|
||||
mayXResetICReturnThePreeditTextViaNextKeyPressEvent &&
|
||||
isKeyPressSyntetic(ev.get_xkey());
|
||||
|
||||
mayXResetICReturnThePreeditTextViaNextKeyPressEvent = false;
|
||||
}
|
||||
|
||||
if (XDropTargetEventProcessor.processEvent(ev) ||
|
||||
XDragSourceContextPeer.processEvent(ev)) {
|
||||
continue;
|
||||
@@ -1036,6 +1043,7 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
|
||||
XBaseWindow.ungrabInput();
|
||||
processException(thr);
|
||||
} finally {
|
||||
doesCurrentlyDispatchedKeyPressContainThePreeditTextOfLastXResetIC = false;
|
||||
// free event data if XGetEventData was called
|
||||
XlibWrapper.XFreeEventData(getDisplay(), ev.pData);
|
||||
awtUnlock();
|
||||
@@ -1043,6 +1051,62 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ================================================================================================================
|
||||
// JBR-3112 Linux: Last character issue with Korean.
|
||||
// XmbResetIC/XwcResetIC are called (by sun.awt.X11InputMethodBase#endComposition) when
|
||||
// the keyboard focus goes to another Java component.
|
||||
// By the X11 specification, these functions must return the current preedit text. However, some
|
||||
// input methods (e.g., iBus and fcitx4) don't return the preedit text, but instead send it later
|
||||
// (asynchronously) via a combination of a synthetic KeyPress event + XmbLookupString applied to it.
|
||||
// Not only does this behavior breaks the X11 specification,
|
||||
// but it also causes the preedit text to wrongly go to the newly focused Java component rather than
|
||||
// its intended target, the previously focused component for which the preedit text was originally composed.
|
||||
// Thus, in order to prevent the "outdated" preedit text from going to the newly focused component, let's
|
||||
// at least discard it at all.
|
||||
// *How* it's done: the toolkit gets notified whenever XmbResetIC/XwcResetIC gets called and then
|
||||
// discards the preedit text returned from XmbLookupString/XwcLookupString, applied to the next
|
||||
// KeyPress event being dispatched.
|
||||
// ================================================================================================================
|
||||
|
||||
private volatile boolean mayXResetICReturnThePreeditTextViaNextKeyPressEvent = false;
|
||||
private boolean doesCurrentlyDispatchedKeyPressContainThePreeditTextOfLastXResetIC = false;
|
||||
|
||||
/**
|
||||
* Notifies the toolkit that XmbResetIC/XwcResetIC has recently returned null
|
||||
* (likely meaning that the preedit text will be sent later via a synthetic KeyPress event,
|
||||
* although the focus may have already moved to another component)
|
||||
*/
|
||||
public void xResetICMayReturnThePreeditTextViaNextKeyPressEvent() {
|
||||
mayXResetICReturnThePreeditTextViaNextKeyPressEvent = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if the composed text returned from XmbLookupString/XwcLookupString
|
||||
* (see function awt_x11inputmethod_lookupString in awt_InputMethod.c), applied to the currently
|
||||
* dispatched KeyEvent, must be discarded (instead of being dispatched to the focused component) ;
|
||||
* false otherwise
|
||||
* @see XWindow#handleKeyPress(XKeyEvent)
|
||||
*/
|
||||
public boolean doesCurrentlyDispatchedKeyPressContainThePreeditTextOfLastXResetIC() {
|
||||
assert isToolkitThread();
|
||||
return doesCurrentlyDispatchedKeyPressContainThePreeditTextOfLastXResetIC;
|
||||
}
|
||||
|
||||
private static boolean isKeyPressSyntetic(XKeyEvent ev) {
|
||||
assert (ev.get_type() == XConstants.KeyPress);
|
||||
|
||||
return ( (ev.get_root() == 0) &&
|
||||
(ev.get_subwindow() == 0) &&
|
||||
(ev.get_time() == 0) &&
|
||||
(ev.get_x() == 0) &&
|
||||
(ev.get_y() == 0) &&
|
||||
(ev.get_x_root() == 0) &&
|
||||
(ev.get_y_root() == 0) &&
|
||||
(ev.get_state() == 0) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Listener installed to detect display changes.
|
||||
*/
|
||||
|
||||
@@ -1017,7 +1017,8 @@ class XWindow extends XBaseWindow implements X11ComponentPeer {
|
||||
|
||||
// REMIND: need to implement looking for disabled events
|
||||
private native boolean x11inputMethodLookupString(long event,
|
||||
long[] keysymArray);
|
||||
long[] keysymArray,
|
||||
boolean keyPressContainsThePreeditTextOfLastXResetIC);
|
||||
|
||||
private native boolean haveCurrentX11InputMethodInstance();
|
||||
|
||||
@@ -1274,7 +1275,12 @@ class XWindow extends XBaseWindow implements X11ComponentPeer {
|
||||
if ( //TODO check if there's an active input method instance
|
||||
// without calling a native method. Is it necessary though?
|
||||
haveCurrentX11InputMethodInstance()) {
|
||||
if (x11inputMethodLookupString(ev.pData, keysym)) {
|
||||
|
||||
final boolean keyPressContainsThePreeditTextOfLastXResetIC =
|
||||
Toolkit.getDefaultToolkit() instanceof XToolkit xToolkit &&
|
||||
xToolkit.doesCurrentlyDispatchedKeyPressContainThePreeditTextOfLastXResetIC();
|
||||
|
||||
if (x11inputMethodLookupString(ev.pData, keysym, keyPressContainsThePreeditTextOfLastXResetIC)) {
|
||||
if (keyEventLog.isLoggable(PlatformLogger.Level.FINE)) {
|
||||
keyEventLog.fine("--XWindow.java XIM did process event; return; dec keysym processed:"+(keysym[0])+
|
||||
"; hex keysym processed:"+Long.toHexString(keysym[0])
|
||||
|
||||
@@ -1287,8 +1287,10 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
|
||||
|
||||
@Override
|
||||
void setUserTimeBeforeShowing() {
|
||||
if (XWM.getWMID() == XWM.KDE2_WM && isSimpleWindow() && ((Window)target).getType() == Window.Type.POPUP) {
|
||||
if (XWM.getWMID() == XWM.KDE2_WM && isSimpleWindow() && ((Window)target).getType() == Window.Type.POPUP &&
|
||||
!isInitialising()) {
|
||||
// Workaround, to suppress blinking of taskbar icon, when hover popup is displayed for a background window
|
||||
// Checking of initializing status of XBaseWindow class allows to avoid deadlock.
|
||||
setUserTime(XToolkit.getCurrentServerTime(), false);
|
||||
}
|
||||
else if (winAttr.initialFocus || shouldSuppressWmTakeFocus()) {
|
||||
|
||||
@@ -30,6 +30,7 @@ import java.awt.AWTException;
|
||||
import java.awt.Component;
|
||||
import java.awt.Container;
|
||||
import java.awt.EventQueue;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.Window;
|
||||
import java.awt.event.InputMethodEvent;
|
||||
import java.awt.font.TextAttribute;
|
||||
@@ -37,10 +38,6 @@ import java.awt.font.TextHitInfo;
|
||||
import java.awt.im.InputMethodHighlight;
|
||||
import java.awt.im.spi.InputMethodContext;
|
||||
import java.awt.peer.ComponentPeer;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.lang.Character.Subset;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.text.AttributedCharacterIterator;
|
||||
@@ -49,9 +46,8 @@ import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import sun.awt.X11.XToolkit;
|
||||
import sun.awt.im.InputMethodAdapter;
|
||||
import sun.util.logging.PlatformLogger;
|
||||
|
||||
@@ -256,7 +252,7 @@ public abstract class X11InputMethodBase extends InputMethodAdapter {
|
||||
*/
|
||||
if (needResetXIC && haveActiveClient() &&
|
||||
getClientComponent() != needResetXICClient.get()){
|
||||
resetXIC();
|
||||
invokeResetXIC();
|
||||
|
||||
// needs to reset the last xic focused component.
|
||||
lastXICFocussedComponent = null;
|
||||
@@ -311,7 +307,7 @@ public abstract class X11InputMethodBase extends InputMethodAdapter {
|
||||
lastXICFocussedComponent = null;
|
||||
isLastXICActive = false;
|
||||
|
||||
resetXIC();
|
||||
invokeResetXIC();
|
||||
needResetXICClient.clear();
|
||||
needResetXIC = false;
|
||||
}
|
||||
@@ -370,7 +366,7 @@ public abstract class X11InputMethodBase extends InputMethodAdapter {
|
||||
// method could get the input focus.
|
||||
disableInputMethod();
|
||||
if (needResetXIC) {
|
||||
resetXIC();
|
||||
invokeResetXIC();
|
||||
needResetXICClient.clear();
|
||||
needResetXIC = false;
|
||||
}
|
||||
@@ -472,7 +468,7 @@ public abstract class X11InputMethodBase extends InputMethodAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
private void dispatchCommittedText(String str) {
|
||||
protected final void dispatchCommittedText(String str) {
|
||||
dispatchCommittedText(str, EventQueue.getMostRecentEventTime());
|
||||
}
|
||||
|
||||
@@ -614,7 +610,7 @@ public abstract class X11InputMethodBase extends InputMethodAdapter {
|
||||
return;
|
||||
}
|
||||
|
||||
String text = resetXIC();
|
||||
String text = invokeResetXIC();
|
||||
/* needResetXIC is only set to true for active client. So passive
|
||||
client should not reset the flag to false. */
|
||||
if (active) {
|
||||
@@ -799,6 +795,27 @@ public abstract class X11InputMethodBase extends InputMethodAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
protected final String invokeResetXIC() {
|
||||
if (Toolkit.getDefaultToolkit() instanceof XToolkit xToolkit) {
|
||||
awtLock();
|
||||
try {
|
||||
final String resetResult = resetXIC();
|
||||
if (resetResult == null) {
|
||||
// If XmbResetIC/XwcResetIC returns null, it means one of the following:
|
||||
// * There was no preedit text
|
||||
// * In case of iBus/fcitx4, the preedit text is sent later to the toolkit via
|
||||
// a synthetic KeyPress event + XmbLookupString/XwcLookupString applied to it
|
||||
xToolkit.xResetICMayReturnThePreeditTextViaNextKeyPressEvent();
|
||||
}
|
||||
return resetResult;
|
||||
} finally {
|
||||
awtUnlock();
|
||||
}
|
||||
} else {
|
||||
return resetXIC();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Native methods
|
||||
*/
|
||||
@@ -813,6 +830,7 @@ public abstract class X11InputMethodBase extends InputMethodAdapter {
|
||||
|
||||
protected native void disposeXIC();
|
||||
|
||||
/** Don't use it directly, use {@link #invokeResetXIC} instead */
|
||||
private native String resetXIC();
|
||||
|
||||
protected native boolean setCompositionEnabledNative(boolean enable);
|
||||
|
||||
@@ -39,7 +39,26 @@ import sun.util.logging.PlatformLogger;
|
||||
import sun.util.logging.PlatformLogger.Level;
|
||||
|
||||
import javax.swing.SwingUtilities;
|
||||
import java.awt.*;
|
||||
import java.awt.AWTEvent;
|
||||
import java.awt.AWTException;
|
||||
import java.awt.BufferCapabilities;
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.Container;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.Dialog;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
import java.awt.FontMetrics;
|
||||
import java.awt.Frame;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.GraphicsConfiguration;
|
||||
import java.awt.Image;
|
||||
import java.awt.Point;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.SystemColor;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.Window;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.InputEvent;
|
||||
@@ -103,6 +122,7 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
int width; // protected by dataLock
|
||||
int height; // protected by dataLock
|
||||
int wlBufferScale; // protected by dataLock
|
||||
double effectiveScale; // protected by dataLock
|
||||
|
||||
static {
|
||||
initIDs();
|
||||
@@ -118,7 +138,8 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
width = size.width;
|
||||
height = size.height;
|
||||
final WLGraphicsConfig config = (WLGraphicsConfig)target.getGraphicsConfiguration();
|
||||
wlBufferScale = config.getScale();
|
||||
wlBufferScale = config.getWlScale();
|
||||
effectiveScale = config.getEffectiveScale();
|
||||
surfaceData = config.createSurfaceData(this);
|
||||
nativePtr = nativeCreateFrame();
|
||||
paintArea = new WLRepaintArea();
|
||||
@@ -165,7 +186,9 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
}
|
||||
|
||||
boolean isVisible() {
|
||||
return visible && hasSurface();
|
||||
synchronized (getStateLock()) {
|
||||
return visible && hasSurface();
|
||||
}
|
||||
}
|
||||
|
||||
boolean hasSurface() {
|
||||
@@ -237,12 +260,16 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
}
|
||||
|
||||
protected void wlSetVisible(boolean v) {
|
||||
this.visible = v;
|
||||
synchronized (getStateLock()) {
|
||||
if (this.visible == v) return;
|
||||
|
||||
this.visible = v;
|
||||
}
|
||||
if (v) {
|
||||
String title = getTitle();
|
||||
boolean isWlPopup = targetIsWlPopup();
|
||||
int thisWidth = getWidth();
|
||||
int thisHeight = getHeight();
|
||||
int thisWidth = javaUnitsToSurfaceUnits(getWidth());
|
||||
int thisHeight = javaUnitsToSurfaceUnits(getHeight());
|
||||
boolean isModal = targetIsModal();
|
||||
|
||||
int state = (target instanceof Frame frame)
|
||||
@@ -260,13 +287,13 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
final Point toplevelLocation = toplevel == null
|
||||
? new Point(popupParent.getX(), popupParent.getY())
|
||||
: SwingUtilities.convertPoint(popupParent, 0, 0, toplevel);
|
||||
final int parentX = toplevelLocation.x;
|
||||
final int parentY = toplevelLocation.y;
|
||||
final int parentX = javaUnitsToSurfaceUnits(toplevelLocation.x);
|
||||
final int parentY = javaUnitsToSurfaceUnits(toplevelLocation.y);
|
||||
|
||||
// Offset must be relative to the top-left corner of the "parent".
|
||||
final Point offsetFromParent = popup.getLocation();
|
||||
final int offsetX = offsetFromParent.x;
|
||||
final int offsetY = offsetFromParent.y;
|
||||
final int offsetX = javaUnitsToSurfaceUnits(offsetFromParent.x);
|
||||
final int offsetY = javaUnitsToSurfaceUnits(offsetFromParent.y);
|
||||
|
||||
if (popupLog.isLoggable(PlatformLogger.Level.FINE)) {
|
||||
popupLog.fine("New popup: " + popup);
|
||||
@@ -280,9 +307,11 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
thisWidth, thisHeight,
|
||||
parentX + offsetX, parentY + offsetY);
|
||||
} else {
|
||||
int xNative = javaUnitsToSurfaceUnits(target.getX());
|
||||
int yNative = javaUnitsToSurfaceUnits(target.getY());
|
||||
nativeCreateWLSurface(nativePtr,
|
||||
getParentNativePtr(target),
|
||||
target.getX(), target.getY(),
|
||||
xNative, yNative,
|
||||
isModal, isMaximized, isMinimized,
|
||||
title, WLToolkit.getApplicationID());
|
||||
}
|
||||
@@ -322,12 +351,17 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
|| dialog.getModalityType() == Dialog.ModalityType.TOOLKIT_MODAL);
|
||||
}
|
||||
|
||||
void updateSurfaceData() {
|
||||
SurfaceData.convertTo(WLSurfaceDataExt.class, surfaceData).revalidate(
|
||||
getBufferWidth(), getBufferHeight(), getBufferScale());
|
||||
updateWindowGeometry();
|
||||
}
|
||||
|
||||
void configureWLSurface() {
|
||||
if (log.isLoggable(PlatformLogger.Level.FINE)) {
|
||||
log.fine(String.format("%s is configured to %dx%d with %dx scale", this, getBufferWidth(), getBufferHeight(), getBufferScale()));
|
||||
}
|
||||
SurfaceData.convertTo(WLSurfaceDataExt.class, surfaceData).revalidate(
|
||||
getBufferWidth(), getBufferHeight(), getBufferScale());
|
||||
updateSurfaceData();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -421,7 +455,9 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
// the location will be updated in notifyConfigured() following
|
||||
// the xdg_popup::repositioned event
|
||||
} else {
|
||||
performLocked(() -> WLRobotPeer.setLocationOfWLSurface(getWLSurface(nativePtr), newX, newY));
|
||||
int newXNative = javaUnitsToSurfaceUnits(newX);
|
||||
int newYNative = javaUnitsToSurfaceUnits(newY);
|
||||
performLocked(() -> WLRobotPeer.setLocationOfWLSurface(getWLSurface(nativePtr), newXNative, newYNative));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -436,9 +472,7 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
log.fine(String.format("%s is resizing its buffer to %dx%d with %dx scale",
|
||||
this, getBufferWidth(), getBufferHeight(), getBufferScale()));
|
||||
}
|
||||
SurfaceData.convertTo(WLSurfaceDataExt.class, surfaceData).revalidate(
|
||||
getBufferWidth(), getBufferHeight(), getBufferScale());
|
||||
updateWindowGeometry();
|
||||
updateSurfaceData();
|
||||
layout();
|
||||
|
||||
WLToolkit.postEvent(new ComponentEvent(getTarget(), ComponentEvent.COMPONENT_RESIZED));
|
||||
@@ -467,8 +501,10 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
final Point toplevelLocation = toplevel == null
|
||||
? new Point(popupParent.getX(), popupParent.getY())
|
||||
: SwingUtilities.convertPoint(popupParent, 0, 0, toplevel);
|
||||
final int parentX = toplevelLocation.x;
|
||||
final int parentY = toplevelLocation.y;
|
||||
final int parentX = javaUnitsToSurfaceUnits(toplevelLocation.x);
|
||||
final int parentY = javaUnitsToSurfaceUnits(toplevelLocation.y);
|
||||
int newXNative = javaUnitsToSurfaceUnits(newX);
|
||||
int newYNative = javaUnitsToSurfaceUnits(newY);
|
||||
if (popupLog.isLoggable(Level.FINE)) {
|
||||
popupLog.fine("Repositioning popup: " + popup);
|
||||
popupLog.fine("\tparent:" + popupParent);
|
||||
@@ -476,7 +512,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 + newX, parentY + newY);
|
||||
nativeRepositionWLPopup(nativePtr, thisWidth, thisHeight, parentX + newXNative, parentY + newYNative);
|
||||
} );
|
||||
}
|
||||
|
||||
@@ -499,16 +535,16 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
}
|
||||
}
|
||||
|
||||
private int toBufferUnits(int x) {
|
||||
return x * getBufferScale();
|
||||
}
|
||||
|
||||
public int getBufferWidth() {
|
||||
return toBufferUnits(getWidth());
|
||||
synchronized (dataLock) {
|
||||
return (int)(width * effectiveScale);
|
||||
}
|
||||
}
|
||||
|
||||
public int getBufferHeight() {
|
||||
return toBufferUnits(getHeight());
|
||||
synchronized (dataLock) {
|
||||
return (int)(height * effectiveScale);
|
||||
}
|
||||
}
|
||||
|
||||
public Rectangle getBufferBounds() {
|
||||
@@ -523,10 +559,14 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
// user's perspective. Client-side decorations often have invisible
|
||||
// portions like drop-shadows which should be ignored for the
|
||||
// purposes of aligning, placing and constraining windows"
|
||||
final Rectangle visibleBounds = getVisibleBounds();
|
||||
Rectangle nativeVisibleBounds = getVisibleBounds();
|
||||
nativeVisibleBounds.x = javaUnitsToSurfaceUnits(nativeVisibleBounds.x);
|
||||
nativeVisibleBounds.y = javaUnitsToSurfaceUnits(nativeVisibleBounds.y);
|
||||
nativeVisibleBounds.width = javaUnitsToSurfaceUnits(nativeVisibleBounds.width);
|
||||
nativeVisibleBounds.height = javaUnitsToSurfaceUnits(nativeVisibleBounds.height);
|
||||
performLocked(() -> nativeSetWindowGeometry(nativePtr,
|
||||
visibleBounds.x, visibleBounds.y,
|
||||
visibleBounds.width, visibleBounds.height));
|
||||
nativeVisibleBounds.x, nativeVisibleBounds.y,
|
||||
nativeVisibleBounds.width, nativeVisibleBounds.height));
|
||||
}
|
||||
|
||||
public void coalescePaintEvent(PaintEvent e) {
|
||||
@@ -559,10 +599,10 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
try {
|
||||
return WLRobotPeer.getLocationOfWLSurface(wlSurfacePtr);
|
||||
} catch (UnsupportedOperationException ignore) {
|
||||
return new Point(0, 0);
|
||||
return new Point();
|
||||
}
|
||||
} else {
|
||||
throw new UnsupportedOperationException("getLocationOnScreen() not supported without wayland surface");
|
||||
return new Point();
|
||||
}
|
||||
}, Point::new);
|
||||
}
|
||||
@@ -690,17 +730,23 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
}
|
||||
|
||||
void setMinimumSizeTo(Dimension minSize) {
|
||||
Dimension constrainedSize = constrainSize(minSize);
|
||||
performLocked(() -> nativeSetMinimumSize(nativePtr, constrainedSize.width, constrainedSize.height));
|
||||
Dimension nativeSize = constrainSize(minSize);
|
||||
nativeSize.width = javaUnitsToSurfaceUnits(nativeSize.width);
|
||||
nativeSize.height = javaUnitsToSurfaceUnits(nativeSize.height);
|
||||
performLocked(() -> nativeSetMinimumSize(nativePtr, nativeSize.width, nativeSize.height));
|
||||
}
|
||||
|
||||
void setMaximumSizeTo(Dimension maxSize) {
|
||||
Dimension constrainedSize = constrainSize(maxSize);
|
||||
performLocked(() -> nativeSetMaximumSize(nativePtr, constrainedSize.width, constrainedSize.height));
|
||||
Dimension nativeSize = constrainSize(maxSize);
|
||||
nativeSize.width = javaUnitsToSurfaceUnits(nativeSize.width);
|
||||
nativeSize.height = javaUnitsToSurfaceUnits(nativeSize.height);
|
||||
performLocked(() -> nativeSetMaximumSize(nativePtr, nativeSize.width, nativeSize.height));
|
||||
}
|
||||
|
||||
void showWindowMenu(int x, int y) {
|
||||
performLocked(() -> nativeShowWindowMenu(nativePtr, x, y));
|
||||
int xNative = javaUnitsToSurfaceUnits(x);
|
||||
int yNative = javaUnitsToSurfaceUnits(y);
|
||||
performLocked(() -> nativeShowWindowMenu(nativePtr, xNative, yNative));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -781,7 +827,7 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
WLComponentPeer peer = inputState.getPeer();
|
||||
if (peer == null) return;
|
||||
Cursor cursor = peer.getCursor(inputState.getPointerX(), inputState.getPointerY());
|
||||
setCursor(cursor, getGraphicsDevice() != null ? getGraphicsDevice().getScale() : 1);
|
||||
setCursor(cursor, getGraphicsDevice() != null ? getGraphicsDevice().getWlScale() : 1);
|
||||
}
|
||||
|
||||
Cursor getCursor(int x, int y) {
|
||||
@@ -892,17 +938,18 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
|
||||
@Override
|
||||
public boolean updateGraphicsData(GraphicsConfiguration gc) {
|
||||
final int newScale = ((WLGraphicsConfig)gc).getScale();
|
||||
final int newWlScale = ((WLGraphicsConfig)gc).getWlScale();
|
||||
|
||||
WLGraphicsDevice gd = ((WLGraphicsConfig) gc).getDevice();
|
||||
gd.addWindow(this);
|
||||
synchronized (dataLock) {
|
||||
if (newScale != wlBufferScale) {
|
||||
wlBufferScale = newScale;
|
||||
if (newWlScale != wlBufferScale) {
|
||||
wlBufferScale = newWlScale;
|
||||
effectiveScale = ((WLGraphicsConfig)gc).getEffectiveScale();
|
||||
if (log.isLoggable(PlatformLogger.Level.FINE)) {
|
||||
log.fine(String.format("%s is updating buffer to %dx%d with %dx scale", this, getBufferWidth(), getBufferHeight(), wlBufferScale));
|
||||
}
|
||||
SurfaceData.convertTo(WLSurfaceDataExt.class, surfaceData).revalidate(
|
||||
getBufferWidth(), getBufferHeight(), wlBufferScale);
|
||||
|
||||
updateSurfaceData();
|
||||
postPaintEvent();
|
||||
}
|
||||
}
|
||||
@@ -1124,7 +1171,37 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
performLocked(() -> nativeStartResize(nativePtr, edges));
|
||||
}
|
||||
|
||||
void notifyConfigured(int newX, int newY, int newWidth, int newHeight, boolean active, boolean maximized) {
|
||||
/**
|
||||
* Converts a value in the Wayland surface-local coordinate system
|
||||
* into the Java coordinate system.
|
||||
*/
|
||||
int surfaceUnitsToJavaUnits(int value) {
|
||||
if (!WLGraphicsEnvironment.isDebugScaleEnabled()) {
|
||||
return value;
|
||||
} else {
|
||||
synchronized (dataLock) {
|
||||
return (int)(value * wlBufferScale / effectiveScale);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a value in the Java coordinate system into the Wayland
|
||||
* surface-local coordinate system.
|
||||
*/
|
||||
int javaUnitsToSurfaceUnits(int value) {
|
||||
if (!WLGraphicsEnvironment.isDebugScaleEnabled()) {
|
||||
return value;
|
||||
} else {
|
||||
synchronized (dataLock) {
|
||||
return (int)(value * effectiveScale / wlBufferScale);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void notifyConfigured(int newXNative, int newYNative, int newWidthNative, int newHeightNative, boolean active, boolean maximized) {
|
||||
int newWidth = surfaceUnitsToJavaUnits(newWidthNative);
|
||||
int newHeight = surfaceUnitsToJavaUnits(newHeightNative);
|
||||
final long wlSurfacePtr = getWLSurface(nativePtr);
|
||||
if (!surfaceAssigned) {
|
||||
SurfaceData.convertTo(WLSurfaceDataExt.class, surfaceData).assignSurface(wlSurfacePtr);
|
||||
@@ -1137,6 +1214,8 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
boolean isWlPopup = targetIsWlPopup();
|
||||
|
||||
if (isWlPopup) { // Only popups provide (relative) location
|
||||
int newX = surfaceUnitsToJavaUnits(newXNative);
|
||||
int newY = surfaceUnitsToJavaUnits(newYNative);
|
||||
setLocationTo(newX, newY);
|
||||
}
|
||||
|
||||
@@ -1159,7 +1238,7 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
}
|
||||
|
||||
void notifyEnteredOutput(int wlOutputID) {
|
||||
// Called from native code whenever the corresponding wl_surface enters a new output
|
||||
// NB: May also be called from native code whenever the corresponding wl_surface enters a new output
|
||||
synchronized (devices) {
|
||||
final WLGraphicsEnvironment ge = (WLGraphicsEnvironment)WLGraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||
final WLGraphicsDevice gd = ge.notifySurfaceEnteredOutput(this, wlOutputID);
|
||||
@@ -1194,6 +1273,13 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
checkIfOnNewScreen();
|
||||
}
|
||||
|
||||
void notifyPopupDone() {
|
||||
assert(targetIsWlPopup());
|
||||
setVisible(false);
|
||||
// TODO: may need a better way of notifying interested components about popup disappearance
|
||||
WLToolkit.postEvent(new WindowEvent((Window) target, WindowEvent.WINDOW_CLOSING));
|
||||
}
|
||||
|
||||
private WLGraphicsDevice getGraphicsDevice() {
|
||||
int scale = 0;
|
||||
WLGraphicsDevice theDevice = null;
|
||||
@@ -1204,8 +1290,8 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
// Wayland's output and are removed as soon as we have left.
|
||||
synchronized (devices) {
|
||||
for (WLGraphicsDevice gd : devices) {
|
||||
if (gd.getScale() > scale) {
|
||||
scale = gd.getScale();
|
||||
if (gd.getWlScale() > scale) {
|
||||
scale = gd.getWlScale();
|
||||
theDevice = gd;
|
||||
}
|
||||
}
|
||||
@@ -1221,6 +1307,11 @@ public class WLComponentPeer implements ComponentPeer {
|
||||
if (log.isLoggable(Level.FINE)) {
|
||||
log.fine(this + " is on (possibly) new device " + newDevice);
|
||||
}
|
||||
var oldDevice = (WLGraphicsDevice) target.getGraphicsConfiguration().getDevice();
|
||||
if (oldDevice != newDevice) {
|
||||
oldDevice.removeWindow(this);
|
||||
newDevice.addWindow(this);
|
||||
}
|
||||
performUnlocked(() -> {
|
||||
var acc = AWTAccessor.getComponentAccessor();
|
||||
acc.setGraphicsConfiguration(target, gc);
|
||||
|
||||
@@ -45,6 +45,7 @@ public abstract class WLDecoratedPeer extends WLWindowPeer {
|
||||
}
|
||||
|
||||
public abstract boolean isResizable();
|
||||
public abstract boolean isInteractivelyResizable();
|
||||
|
||||
public abstract void setState(int newState);
|
||||
public abstract int getState();
|
||||
@@ -108,8 +109,8 @@ public abstract class WLDecoratedPeer extends WLWindowPeer {
|
||||
}
|
||||
|
||||
@Override
|
||||
void notifyConfigured(int newX, int newY, int newWidth, int newHeight, boolean active, boolean maximized) {
|
||||
super.notifyConfigured(newX, newY, newWidth, newHeight, active, maximized);
|
||||
void notifyConfigured(int newX, int newY, int newWidthNative, int newHeightNative, boolean active, boolean maximized) {
|
||||
super.notifyConfigured(newX, newY, newWidthNative, newHeightNative, active, maximized);
|
||||
decoration.setActive(active);
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,11 @@ public class WLDialogPeer extends WLDecoratedPeer implements DialogPeer {
|
||||
return ((Dialog)target).isResizable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInteractivelyResizable() {
|
||||
return isResizable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return ((Dialog)target).getTitle();
|
||||
|
||||
@@ -278,7 +278,7 @@ public class WLFrameDecoration {
|
||||
final boolean isRMBPressed = isRMB && isPressed;
|
||||
|
||||
Point point = e.getPoint();
|
||||
if (isLMBPressed && peer.isResizable()) {
|
||||
if (isLMBPressed && peer.isInteractivelyResizable()) {
|
||||
int resizeSide = getResizeEdges(point.x, point.y);
|
||||
if (resizeSide != 0) {
|
||||
peer.startResize(resizeSide);
|
||||
@@ -330,7 +330,7 @@ public class WLFrameDecoration {
|
||||
}
|
||||
|
||||
private int getResizeEdges(int x, int y) {
|
||||
if (!peer.isResizable()) return 0;
|
||||
if (!peer.isInteractivelyResizable()) return 0;
|
||||
int edges = 0;
|
||||
if (x < RESIZE_EDGE_THICKNESS) {
|
||||
edges |= XDG_TOPLEVEL_RESIZE_EDGE_LEFT;
|
||||
|
||||
@@ -73,6 +73,11 @@ public class WLFramePeer extends WLDecoratedPeer implements FramePeer {
|
||||
return getFrame().isResizable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInteractivelyResizable() {
|
||||
return getFrame().isResizable() && !isMaximized();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return getFrame().getTitle();
|
||||
@@ -108,6 +113,10 @@ public class WLFramePeer extends WLDecoratedPeer implements FramePeer {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isMaximized() {
|
||||
return (getState() & Frame.MAXIMIZED_BOTH) != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaximizedBounds(Rectangle bounds) {
|
||||
}
|
||||
@@ -133,11 +142,11 @@ public class WLFramePeer extends WLDecoratedPeer implements FramePeer {
|
||||
}
|
||||
|
||||
@Override
|
||||
void notifyConfigured(int newX, int newY, int newWidth, int newHeight, boolean active, boolean maximized) {
|
||||
void notifyConfigured(int newXNative, int newYNative, int newWidthNative, int newHeightNative, boolean active, boolean maximized) {
|
||||
int widthBefore = getWidth();
|
||||
int heightBefore = getHeight();
|
||||
|
||||
super.notifyConfigured(newX, newY, newWidth, newHeight, active, maximized);
|
||||
|
||||
super.notifyConfigured(newXNative, newYNative, newWidthNative, newHeightNative, active, maximized);
|
||||
|
||||
synchronized (getStateLock()) {
|
||||
int oldState = state;
|
||||
@@ -147,7 +156,7 @@ public class WLFramePeer extends WLDecoratedPeer implements FramePeer {
|
||||
if (maximized) {
|
||||
widthBeforeMaximized = widthBefore;
|
||||
heightBeforeMaximized = heightBefore;
|
||||
} else if (newWidth == 0 && newHeight == 0 && widthBeforeMaximized > 0 && heightBeforeMaximized > 0) {
|
||||
} else if (newWidthNative == 0 && newHeightNative == 0 && widthBeforeMaximized > 0 && heightBeforeMaximized > 0) {
|
||||
performUnlocked(() -> target.setSize(widthBeforeMaximized, heightBeforeMaximized));
|
||||
}
|
||||
WLToolkit.postEvent(new WindowEvent(getFrame(), WindowEvent.WINDOW_STATE_CHANGED, oldState, state));
|
||||
|
||||
@@ -39,17 +39,19 @@ public abstract class WLGraphicsConfig extends GraphicsConfiguration {
|
||||
private final WLGraphicsDevice device;
|
||||
private final int width;
|
||||
private final int height;
|
||||
private final int scale;
|
||||
private final int wlScale; // as reported by Wayland
|
||||
private final double effectiveScale; // as enforced by Java
|
||||
|
||||
protected WLGraphicsConfig(WLGraphicsDevice device, int width, int height, int scale) {
|
||||
protected WLGraphicsConfig(WLGraphicsDevice device, int width, int height, int wlScale) {
|
||||
this.device = device;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.scale = scale;
|
||||
this.wlScale = wlScale;
|
||||
this.effectiveScale = WLGraphicsEnvironment.effectiveScaleFrom(wlScale);
|
||||
}
|
||||
|
||||
boolean differsFrom(int width, int height, int scale) {
|
||||
return width != this.width || height != this.height || scale != this.scale;
|
||||
return width != this.width || height != this.height || scale != this.wlScale;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -67,7 +69,7 @@ public abstract class WLGraphicsConfig extends GraphicsConfiguration {
|
||||
|
||||
@Override
|
||||
public AffineTransform getDefaultTransform() {
|
||||
double scale = getScale();
|
||||
double scale = effectiveScale;
|
||||
return AffineTransform.getScaleInstance(scale, scale);
|
||||
}
|
||||
|
||||
@@ -80,11 +82,25 @@ public abstract class WLGraphicsConfig extends GraphicsConfiguration {
|
||||
|
||||
@Override
|
||||
public Rectangle getBounds() {
|
||||
return new Rectangle(width, height);
|
||||
// NB: despite the claims of GraphicsConfiguration.getBounds()'s javadoc,
|
||||
// the value returned is expected to be in user-space coordinates,
|
||||
// same as windows sizes, offsets, components' coordinates, etc.
|
||||
return new Rectangle((int) (width / effectiveScale), (int) (height / effectiveScale));
|
||||
}
|
||||
|
||||
public int getScale() {
|
||||
return scale;
|
||||
/**
|
||||
* Returns the preferred Wayland buffer scale for this display configuration.
|
||||
*/
|
||||
public int getWlScale() {
|
||||
return wlScale;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the effective scale, which can differ from the buffer scale
|
||||
* if overridden with the sun.java2d.uiScale system property.
|
||||
*/
|
||||
public double getEffectiveScale() {
|
||||
return effectiveScale;
|
||||
}
|
||||
|
||||
public abstract SurfaceType getSurfaceType();
|
||||
@@ -92,6 +108,6 @@ public abstract class WLGraphicsConfig extends GraphicsConfiguration {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("%dx%d %dx scale", width, height, scale);
|
||||
return String.format("%dx%d %dx scale", width, height, wlScale);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,8 @@ import java.awt.GraphicsDevice;
|
||||
import java.awt.Insets;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.Window;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Corresponds to Wayland's output and is identified by its wlID and x, y coordinates
|
||||
@@ -71,6 +73,10 @@ public class WLGraphicsDevice extends GraphicsDevice {
|
||||
// The default config is an object from the configs array
|
||||
private volatile WLGraphicsConfig defaultConfig = null;
|
||||
|
||||
// Top-level window peers that consider this device as their primary one
|
||||
// and get their graphics configuration from it
|
||||
private final Set<WLComponentPeer> toplevels = new HashSet<>(); // guarded by 'this'
|
||||
|
||||
private WLGraphicsDevice(int id, int x, int y, int widthMm, int heightMm) {
|
||||
this.wlID = id;
|
||||
this.x = x;
|
||||
@@ -109,6 +115,24 @@ public class WLGraphicsDevice extends GraphicsDevice {
|
||||
configs = newConfigs;
|
||||
defaultConfig = newDefaultConfig;
|
||||
}
|
||||
|
||||
// It is important that by the time displayChanged() events are delivered,
|
||||
// all the peers on this device had their graphics configuration updated
|
||||
// to refer to the new ones with, perhaps, different scale or resolution.
|
||||
// This affects various BufferStrategy that use volatile images as their buffers.
|
||||
notifyToplevels();
|
||||
}
|
||||
|
||||
private void notifyToplevels() {
|
||||
Set<WLComponentPeer> toplevelsCopy = new HashSet<>(toplevels.size());
|
||||
synchronized (this) {
|
||||
toplevelsCopy.addAll(toplevels);
|
||||
}
|
||||
int wlOutputID = this.wlID;
|
||||
// NB: each of those peers will likely receive another such notification
|
||||
// from Wayland when it gets the wl_surface::enter event, but the second one
|
||||
// will effectively be a no-op.
|
||||
toplevelsCopy.forEach((peer) -> peer.notifyEnteredOutput(wlOutputID));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -121,7 +145,7 @@ public class WLGraphicsDevice extends GraphicsDevice {
|
||||
this.x = similarDevice.x;
|
||||
this.y = similarDevice.y;
|
||||
|
||||
int newScale = similarDevice.getScale();
|
||||
int newScale = similarDevice.getWlScale();
|
||||
Rectangle newBounds = similarDevice.defaultConfig.getBounds();
|
||||
updateConfiguration(similarDevice.name, newBounds.width, newBounds.height, newScale);
|
||||
}
|
||||
@@ -183,8 +207,8 @@ public class WLGraphicsDevice extends GraphicsDevice {
|
||||
return defaultConfig;
|
||||
}
|
||||
|
||||
int getScale() {
|
||||
return defaultConfig.getScale();
|
||||
int getWlScale() {
|
||||
return defaultConfig.getWlScale();
|
||||
}
|
||||
|
||||
int getResolution() {
|
||||
@@ -247,13 +271,15 @@ public class WLGraphicsDevice extends GraphicsDevice {
|
||||
}
|
||||
|
||||
public void addWindow(WLComponentPeer peer) {
|
||||
// TODO: may be needed to keep track of windows on the device to notify
|
||||
// them of display change events, perhaps.
|
||||
synchronized (this) {
|
||||
toplevels.add(peer);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeWindow(WLComponentPeer peer) {
|
||||
// TODO: may be needed to keep track of windows on the device to notify
|
||||
// them of display change events, perhaps.
|
||||
synchronized (this) {
|
||||
toplevels.remove(peer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -49,6 +49,7 @@ public class WLGraphicsEnvironment extends SunGraphicsEnvironment {
|
||||
private static boolean verboseVulkanStatus = false;
|
||||
private static boolean vulkanRequested = false;
|
||||
private static int vulkanRequestedDeviceNumber = -1;
|
||||
private static final boolean debugScaleEnabled;
|
||||
@SuppressWarnings("removal")
|
||||
private static String vulkanOption =
|
||||
AccessController.doPrivileged(
|
||||
@@ -80,6 +81,8 @@ public class WLGraphicsEnvironment extends SunGraphicsEnvironment {
|
||||
log.fine("Vulkan rendering enabled: " + (vulkanEnabled?"YES":"NO"));
|
||||
}
|
||||
|
||||
debugScaleEnabled = SunGraphicsEnvironment.isUIScaleEnabled() && SunGraphicsEnvironment.getDebugScale() >= 1;
|
||||
|
||||
// Make sure the toolkit is loaded because otherwise this GE is going to be empty
|
||||
WLToolkit.isInitialized();
|
||||
}
|
||||
@@ -143,6 +146,7 @@ public class WLGraphicsEnvironment extends SunGraphicsEnvironment {
|
||||
if (gd.getID() == wlID) {
|
||||
newOutput = false;
|
||||
if (gd.isSameDeviceAs(wlID, x, y)) {
|
||||
// These coordinates and the size are not scaled.
|
||||
gd.updateConfiguration(humanID, width, height, scale);
|
||||
} else {
|
||||
final WLGraphicsDevice updatedDevice = WLGraphicsDevice.createWithConfiguration(wlID, humanID,
|
||||
@@ -211,7 +215,6 @@ public class WLGraphicsEnvironment extends SunGraphicsEnvironment {
|
||||
synchronized (devices) {
|
||||
for (WLGraphicsDevice gd : devices) {
|
||||
if (gd.getID() == wlOutputID) {
|
||||
gd.addWindow(wlComponentPeer);
|
||||
return gd;
|
||||
}
|
||||
}
|
||||
@@ -223,7 +226,6 @@ public class WLGraphicsEnvironment extends SunGraphicsEnvironment {
|
||||
synchronized (devices) {
|
||||
for (WLGraphicsDevice gd : devices) {
|
||||
if (gd.getID() == wlOutputID) {
|
||||
gd.removeWindow(wlComponentPeer);
|
||||
return gd;
|
||||
}
|
||||
}
|
||||
@@ -250,4 +252,12 @@ public class WLGraphicsEnvironment extends SunGraphicsEnvironment {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static double effectiveScaleFrom(int displayScale) {
|
||||
return debugScaleEnabled ? SunGraphicsEnvironment.getDebugScale() : displayScale;
|
||||
}
|
||||
|
||||
static boolean isDebugScaleEnabled() {
|
||||
return debugScaleEnabled;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,11 +215,23 @@ record WLInputState(WLPointerEvent eventWithSurface,
|
||||
}
|
||||
|
||||
public int getPointerX() {
|
||||
return eventWithCoordinates != null ? eventWithCoordinates.getSurfaceX() : 0;
|
||||
int x = eventWithCoordinates != null ? eventWithCoordinates.getSurfaceX() : 0;
|
||||
if (!WLGraphicsEnvironment.isDebugScaleEnabled()) {
|
||||
return x;
|
||||
} else {
|
||||
WLComponentPeer peer = getPeer();
|
||||
return peer == null ? x : peer.surfaceUnitsToJavaUnits(x);
|
||||
}
|
||||
}
|
||||
|
||||
public int getPointerY() {
|
||||
return eventWithCoordinates != null ? eventWithCoordinates.getSurfaceY() : 0;
|
||||
int y = eventWithCoordinates != null ? eventWithCoordinates.getSurfaceY() : 0;
|
||||
if (!WLGraphicsEnvironment.isDebugScaleEnabled()) {
|
||||
return y;
|
||||
} else {
|
||||
WLComponentPeer peer = getPeer();
|
||||
return peer == null ? y : peer.surfaceUnitsToJavaUnits(y);
|
||||
}
|
||||
}
|
||||
|
||||
public WLComponentPeer getPeer() {
|
||||
@@ -233,8 +245,8 @@ record WLInputState(WLPointerEvent eventWithSurface,
|
||||
*/
|
||||
public boolean isPointerOverPeer() {
|
||||
if (isPointerOverSurface && eventWithCoordinates != null) {
|
||||
int x = eventWithCoordinates.getSurfaceX();
|
||||
int y = eventWithCoordinates.getSurfaceY();
|
||||
int x = getPointerX();
|
||||
int y = getPointerY();
|
||||
WLComponentPeer peer = getPeer();
|
||||
if (peer != null) {
|
||||
return x >= 0
|
||||
|
||||
@@ -25,7 +25,14 @@
|
||||
package sun.awt.wl;
|
||||
|
||||
import sun.awt.AWTAccessor;
|
||||
import java.awt.*;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.Dialog;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
import java.awt.Insets;
|
||||
import java.awt.SystemColor;
|
||||
import java.awt.Window;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.awt.peer.ComponentPeer;
|
||||
import java.awt.peer.WindowPeer;
|
||||
@@ -141,6 +148,13 @@ public class WLWindowPeer extends WLComponentPeer implements WindowPeer {
|
||||
if (maxSize != null) super.setMaximumSizeTo(maxSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
void updateSurfaceData() {
|
||||
updateMinimumSize();
|
||||
updateMaximumSize();
|
||||
super.updateSurfaceData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateIconImages() {
|
||||
// No support for this from Wayland, icon is a desktop integration feature.
|
||||
|
||||
@@ -60,7 +60,7 @@ public abstract class WLVKSurfaceData extends VKSurfaceData implements WLSurface
|
||||
final int backgroundRGB = peer.getBackground() != null
|
||||
? peer.getBackground().getRGB()
|
||||
: 0;
|
||||
int scale = ((WLGraphicsConfig)peer.getGraphicsConfiguration()).getScale();
|
||||
int scale = ((WLGraphicsConfig)peer.getGraphicsConfiguration()).getWlScale();
|
||||
initOps(peer.getBufferWidth(), peer.getBufferHeight(), scale, backgroundRGB);
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ public class WLSMSurfaceData extends SurfaceData implements WLSurfaceDataExt {
|
||||
}
|
||||
ColorModel cm = graphicsConfig.getColorModel();
|
||||
SurfaceType surfaceType = graphicsConfig.getSurfaceType();
|
||||
return new WLSMSurfaceData(peer, surfaceType, cm, graphicsConfig.getScale(), graphicsConfig.getWlShmFormat());
|
||||
return new WLSMSurfaceData(peer, surfaceType, cm, graphicsConfig.getWlScale(), graphicsConfig.getWlShmFormat());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -26,18 +26,25 @@
|
||||
|
||||
package sun.java2d.wl;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.GraphicsConfiguration;
|
||||
import java.awt.ImageCapabilities;
|
||||
import java.awt.Transparency;
|
||||
import java.awt.image.ColorModel;
|
||||
import sun.awt.wl.WLGraphicsConfig;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
|
||||
import sun.awt.image.SunVolatileImage;
|
||||
import sun.awt.image.VolatileSurfaceManager;
|
||||
import sun.java2d.SurfaceData;
|
||||
|
||||
public class WLVolatileSurfaceManager extends VolatileSurfaceManager {
|
||||
public class WLVolatileSurfaceManager extends VolatileSurfaceManager implements PropertyChangeListener {
|
||||
private static final String SCALE_PROPERTY_NAME = "graphicsContextScaleTransform";
|
||||
|
||||
public WLVolatileSurfaceManager(SunVolatileImage vImg, Object context) {
|
||||
super(vImg, context);
|
||||
Component component = vImg.getComponent();
|
||||
if (component != null) {
|
||||
component.addPropertyChangeListener(SCALE_PROPERTY_NAME, this);
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean isAccelerationEnabled() {
|
||||
@@ -54,4 +61,11 @@ public class WLVolatileSurfaceManager extends VolatileSurfaceManager {
|
||||
// neither accelerated nor volatile
|
||||
return new ImageCapabilities(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void propertyChange(PropertyChangeEvent evt) {
|
||||
assert SCALE_PROPERTY_NAME.equals(evt.getPropertyName());
|
||||
|
||||
displayChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1056,9 +1056,15 @@ WLSBM_SizeChangeTo(WLSurfaceBufferManager * manager, jint width, jint height, ji
|
||||
}
|
||||
|
||||
MUTEX_LOCK(manager->drawLock);
|
||||
MUTEX_LOCK(manager->showLock);
|
||||
const bool change_needed =
|
||||
manager->bufferForDraw.width != width
|
||||
|| manager->bufferForDraw.height != height
|
||||
|| manager->scale != scale;
|
||||
manager->scale = scale;
|
||||
MUTEX_UNLOCK(manager->showLock);
|
||||
|
||||
const bool size_changed = manager->bufferForDraw.width != width || manager->bufferForDraw.height != height;
|
||||
if (size_changed) {
|
||||
if (change_needed) {
|
||||
DrawBufferDestroy(manager);
|
||||
|
||||
manager->bufferForDraw.width = width;
|
||||
@@ -1069,12 +1075,6 @@ WLSBM_SizeChangeTo(WLSurfaceBufferManager * manager, jint width, jint height, ji
|
||||
WLBufferTrace(manager, "WLSBM_SizeChangeTo %dx%d", width, height);
|
||||
}
|
||||
|
||||
MUTEX_LOCK(manager->showLock);
|
||||
if (manager->scale != scale) {
|
||||
manager->scale = scale;
|
||||
}
|
||||
MUTEX_UNLOCK(manager->showLock);
|
||||
|
||||
MUTEX_UNLOCK(manager->drawLock);
|
||||
}
|
||||
|
||||
|
||||
@@ -176,6 +176,11 @@ Java_sun_java2d_wl_WLSMSurfaceData_pixelsAt(JNIEnv *env, jobject wsd, jint x, ji
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (rasInfo.bounds.x2 - rasInfo.bounds.x1 < width || rasInfo.bounds.y2 - rasInfo.bounds.y1 < height) {
|
||||
JNU_ThrowByName(env, "java/lang/ArrayIndexOutOfBoundsException", "Surface too small");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
jintArray arrayObj = NULL;
|
||||
ops->GetRasInfo(env, ops, &rasInfo);
|
||||
if (rasInfo.rasBase && rasInfo.pixelStride == sizeof(jint)) {
|
||||
|
||||
@@ -43,6 +43,7 @@ static jmethodID postWindowClosingMID;
|
||||
static jmethodID notifyConfiguredMID;
|
||||
static jmethodID notifyEnteredOutputMID;
|
||||
static jmethodID notifyLeftOutputMID;
|
||||
static jmethodID notifyPopupDoneMID;
|
||||
|
||||
struct activation_token_list_item {
|
||||
struct xdg_activation_token_v1 *token;
|
||||
@@ -261,6 +262,14 @@ xdg_popup_done(void *data,
|
||||
struct xdg_popup *xdg_popup)
|
||||
{
|
||||
J2dTrace1(J2D_TRACE_INFO, "WLComponentPeer: xdg_popup_done(%p)\n", xdg_popup);
|
||||
struct WLFrame *frame = data;
|
||||
JNIEnv *env = getEnv();
|
||||
const jobject nativeFramePeer = (*env)->NewLocalRef(env, frame->nativeFramePeer);
|
||||
if (nativeFramePeer) {
|
||||
(*env)->CallVoidMethod(env, nativeFramePeer, notifyPopupDoneMID);
|
||||
(*env)->DeleteLocalRef(env, nativeFramePeer);
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -311,6 +320,9 @@ Java_sun_awt_wl_WLComponentPeer_initIDs
|
||||
CHECK_NULL_THROW_IE(env,
|
||||
notifyLeftOutputMID = (*env)->GetMethodID(env, clazz, "notifyLeftOutput", "(I)V"),
|
||||
"Failed to find method WLComponentPeer.notifyLeftOutput");
|
||||
CHECK_NULL_THROW_IE(env,
|
||||
notifyPopupDoneMID = (*env)->GetMethodID(env, clazz, "notifyPopupDone", "()V"),
|
||||
"Failed to find method WLComponentPeer.notifyPopupDone");
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
@@ -638,7 +650,8 @@ JNIEXPORT void JNICALL Java_sun_awt_wl_WLComponentPeer_nativeSetWindowGeometry
|
||||
struct WLFrame *frame = jlong_to_ptr(ptr);
|
||||
if (frame->xdg_surface) {
|
||||
xdg_surface_set_window_geometry(frame->xdg_surface, x, y, width, height);
|
||||
wlFlushToServer(env);
|
||||
// Do not flush here as this update needs to be committed together with the change
|
||||
// of the buffer's size and scale, if any.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -648,7 +661,8 @@ JNIEXPORT void JNICALL Java_sun_awt_wl_WLComponentPeer_nativeSetMinimumSize
|
||||
struct WLFrame *frame = jlong_to_ptr(ptr);
|
||||
if (frame->toplevel) {
|
||||
xdg_toplevel_set_min_size(frame->xdg_toplevel, width, height);
|
||||
wlFlushToServer(env);
|
||||
// Do not flush here as this update needs to be committed together with the change
|
||||
// of the buffer's size and scale, if any.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -658,7 +672,8 @@ JNIEXPORT void JNICALL Java_sun_awt_wl_WLComponentPeer_nativeSetMaximumSize
|
||||
struct WLFrame *frame = jlong_to_ptr(ptr);
|
||||
if (frame->toplevel) {
|
||||
xdg_toplevel_set_max_size(frame->xdg_toplevel, width, height);
|
||||
wlFlushToServer(env);
|
||||
// Do not flush here as this update needs to be committed together with the change
|
||||
// of the buffer's size and scale, if any.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -541,7 +541,7 @@ setXICWindowFocus(XIC ic, Window w)
|
||||
#define INITIAL_LOOKUP_BUF_SIZE 512
|
||||
|
||||
Boolean
|
||||
awt_x11inputmethod_lookupString(XKeyPressedEvent *event, KeySym *keysymp)
|
||||
awt_x11inputmethod_lookupString(XKeyPressedEvent *event, KeySym *keysymp, const Boolean keyPressContainsThePreeditTextOfLastXResetIC)
|
||||
{
|
||||
JNIEnv *env = GetJNIEnv();
|
||||
X11InputMethodData *pX11IMData = NULL;
|
||||
@@ -627,17 +627,22 @@ awt_x11inputmethod_lookupString(XKeyPressedEvent *event, KeySym *keysymp)
|
||||
/*FALLTHRU*/
|
||||
case XLookupChars:
|
||||
/*
|
||||
printf("lookupString: status=XLookupChars, type=%d, state=%x, keycode=%x, keysym=%x\n",
|
||||
event->type, event->state, event->keycode, keysym);
|
||||
printf("lookupString: status=XLookupChars, type=%d, state=%x, keycode=%x, keysym=%x, keyPressContainsThePreeditTextOfLastXResetIC=%d\n",
|
||||
event->type, event->state, event->keycode, keysym, (int)keyPressContainsThePreeditTextOfLastXResetIC);
|
||||
*/
|
||||
javastr = JNU_NewStringPlatform(env, (const char *)pX11IMData->lookup_buf);
|
||||
if (javastr != NULL) {
|
||||
JNU_CallMethodByName(env, NULL,
|
||||
currentX11InputMethodInstance,
|
||||
"dispatchCommittedText",
|
||||
"(Ljava/lang/String;J)V",
|
||||
javastr,
|
||||
event->time);
|
||||
|
||||
// JBR-3112
|
||||
// See sun.awt.X11.XToolkit#doesCurrentlyDispatchedKeyPressContainThePreeditTextOfLastXResetIC
|
||||
if (!keyPressContainsThePreeditTextOfLastXResetIC) {
|
||||
javastr = JNU_NewStringPlatform(env, (const char *)pX11IMData->lookup_buf);
|
||||
if (javastr != NULL) {
|
||||
JNU_CallMethodByName(env, NULL,
|
||||
currentX11InputMethodInstance,
|
||||
"dispatchCommittedText",
|
||||
"(Ljava/lang/String;J)V",
|
||||
javastr,
|
||||
event->time);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ jfieldID targetID;
|
||||
jfieldID graphicsConfigID;
|
||||
|
||||
extern jobject currentX11InputMethodInstance;
|
||||
extern Boolean awt_x11inputmethod_lookupString(XKeyPressedEvent *, KeySym *);
|
||||
extern Boolean awt_x11inputmethod_lookupString(XKeyPressedEvent *, KeySym *, Boolean keyPressContainsThePreeditTextOfLastXResetIC);
|
||||
Boolean awt_UseType4Patch = False;
|
||||
Boolean awt_ServerDetected = False;
|
||||
Boolean awt_XKBDetected = False;
|
||||
@@ -1103,7 +1103,7 @@ JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XWindow_haveCurrentX11InputMethodIns
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XWindow_x11inputMethodLookupString
|
||||
(JNIEnv *env, jobject object, jlong event, jlongArray keysymArray) {
|
||||
(JNIEnv *env, jobject object, jlong event, jlongArray keysymArray, jboolean keyPressContainsThePreeditTextOfLastXResetIC) {
|
||||
KeySym keysym = NoSymbol;
|
||||
Boolean boo;
|
||||
/* keysymArray (and testbuf[]) have dimension 2 because we put there two
|
||||
@@ -1117,7 +1117,11 @@ JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XWindow_x11inputMethodLookupString
|
||||
|
||||
testbuf[1]=0;
|
||||
|
||||
boo = awt_x11inputmethod_lookupString((XKeyPressedEvent*)jlong_to_ptr(event), &keysym);
|
||||
boo = awt_x11inputmethod_lookupString(
|
||||
(XKeyPressedEvent*)jlong_to_ptr(event),
|
||||
&keysym,
|
||||
(keyPressContainsThePreeditTextOfLastXResetIC == JNI_TRUE) ? True : False
|
||||
);
|
||||
testbuf[0] = keysym;
|
||||
|
||||
(*env)->SetLongArrayRegion(env, keysymArray, 0, 2, (jlong *)(testbuf));
|
||||
|
||||
@@ -61,7 +61,7 @@ public interface FontExtensions {
|
||||
SS16, SS17, SS18, SS19, SS20, SSTY, STCH, SUBS, SUPS, SWSH, TITL, TJMO, TNAM, TNUM, TRAD, TWID, UNIC, VALT, VATU,
|
||||
VCHW, VERT, VHAL, VJMO, VKNA, VKRN, VPAL, VRT2, VRTR, ZERO;
|
||||
|
||||
String getName() {
|
||||
public String getName() {
|
||||
return toString().toLowerCase();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* 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. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.jetbrains;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Set;
|
||||
|
||||
@Deprecated(forRemoval=true)
|
||||
public interface FontOpenTypeFeatures {
|
||||
/**
|
||||
* This method returns set of OpenType's features converted to String supported by current font
|
||||
*
|
||||
* @param font basic font
|
||||
*/
|
||||
Set<String> getAvailableFeatures(Font font);
|
||||
}
|
||||
@@ -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.16
|
||||
VERSION = 0.0.17
|
||||
|
||||
# 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 = 668AC33C794CA55FC4687EC63693E28
|
||||
HASH = 5AB752E7446152B4D115528584543C8F
|
||||
|
||||
30
test/hotspot/jtreg/jbMuslProblemList.txt
Normal file
30
test/hotspot/jtreg/jbMuslProblemList.txt
Normal file
@@ -0,0 +1,30 @@
|
||||
#############################################################################
|
||||
|
||||
# :hotspot_runtime
|
||||
|
||||
runtime/8176717/TestInheritFD.java JBR-6974 linux-all
|
||||
|
||||
#############################################################################
|
||||
|
||||
# :hotspot_serviceability
|
||||
|
||||
serviceability/dcmd/framework/HelpTest.java JBR-6974 linux-all
|
||||
serviceability/dcmd/framework/InvalidCommandTest.java JBR-6974 linux-all
|
||||
serviceability/dcmd/framework/VMVersionTest.java JBR-6974 linux-all
|
||||
serviceability/tmtools/jstat/GcCapacityTest.java JBR-6974 linux-all
|
||||
serviceability/tmtools/jstat/GcCauseTest01.java JBR-6974 linux-all
|
||||
serviceability/tmtools/jstat/GcCauseTest02.java JBR-6974 linux-all
|
||||
serviceability/tmtools/jstat/GcCauseTest03.java JBR-6974 linux-all
|
||||
serviceability/tmtools/jstat/GcNewTest.java JBR-6974 linux-all
|
||||
serviceability/tmtools/jstat/GcTest01.java JBR-6974 linux-all
|
||||
serviceability/tmtools/jstat/GcTest02.java JBR-6974 linux-all
|
||||
|
||||
#############################################################################
|
||||
|
||||
# :vmTestbase_*
|
||||
|
||||
#############################################################################
|
||||
|
||||
vmTestbase/nsk/aod/AttachProvider/AttachProvider01/AttachProvider01.java JBR-6970 linux-all
|
||||
vmTestbase/nsk/aod/VirtualMachine/VirtualMachine05/VirtualMachine05.java JBR-6970 linux-all
|
||||
vmTestbase/nsk/aod/VirtualMachineDescriptor/VirtualMachineDescriptor01/VirtualMachineDescriptor01.java JBR-6970 linux-all
|
||||
@@ -123,6 +123,7 @@ 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/stress/TestStressG1Humongous.java 8286554 windows-x64
|
||||
gc/stress/TestStressRSetCoarsening.java#id2 JBR-6706 windows-x64
|
||||
|
||||
gc/metaspace/CompressedClassSpaceSizeInJmapHeap.java 8241293 macosx-x64
|
||||
gc/metaspace/TestMetaspacePerfCounters.java#id3 initial_run generic-all
|
||||
@@ -258,6 +259,7 @@ vmTestbase/nsk/jdi/ReferenceType/instances/instances002/instances002.java initia
|
||||
vmTestbase/nsk/jdi/Value/type/type003/TestDescription.java time_out_intermittent macosx-all
|
||||
vmTestbase/nsk/jdi/VirtualMachine/allThreads/allthreads001/TestDescription.java JBR-6530 macosx-all
|
||||
vmTestbase/nsk/jdi/VirtualMachine/canGetBytecodes/cangetbytecodes001/TestDescription.java time_out_intermittent macosx-aarch64
|
||||
vmTestbase/nsk/jdi/VirtualMachine/canGetCurrentContendedMonitor/cangccm001/TestDescription.java JBR-6994 macosx-all
|
||||
vmTestbase/nsk/jdi/VirtualMachine/canGetMonitorInfo/cangetmonitorinfo001/TestDescription.java JBR-6361 macosx-all
|
||||
vmTestbase/nsk/jdi/VirtualMachine/canGetOwnedMonitorInfo/cangetinfo001/TestDescription.java JBR-6831 macosx-aarch64
|
||||
vmTestbase/nsk/jdi/stress/ClassPrepareEvents/ClassPrepareEvents001/ClassPrepareEvents001.java JBR-6470 macosx-all
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* 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 BoxLayout doesn't ignore invisible components
|
||||
* @key headful
|
||||
* @run main NPECheckRequests
|
||||
*/
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.awt.Dimension;
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
public class NPECheckRequests {
|
||||
JFrame frame;
|
||||
JPanel p;
|
||||
BrokenComponent foo;
|
||||
|
||||
public void init() {
|
||||
frame = new JFrame();
|
||||
p = new JPanel();
|
||||
BoxLayout boxLayout = new BoxLayout(p, BoxLayout.X_AXIS);
|
||||
p.setLayout(boxLayout);
|
||||
foo = new BrokenComponent();
|
||||
p.add(foo);
|
||||
frame.setLayout(new BorderLayout());
|
||||
frame.add(p, BorderLayout.CENTER);
|
||||
try {
|
||||
frame.pack();
|
||||
} catch (RuntimeException ignored) {
|
||||
// our broken component threw an exception
|
||||
}
|
||||
}
|
||||
|
||||
public void start() {
|
||||
foo.broken = false;
|
||||
// check that the layout isn't in a broken state because of that exception
|
||||
frame.pack();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws InterruptedException,
|
||||
InvocationTargetException {
|
||||
NPECheckRequests test = new NPECheckRequests();
|
||||
SwingUtilities.invokeAndWait(test::init);
|
||||
SwingUtilities.invokeAndWait(test::start);
|
||||
}
|
||||
|
||||
private class BrokenComponent extends JPanel {
|
||||
|
||||
boolean broken = true;
|
||||
|
||||
@Override
|
||||
public Dimension getPreferredSize() {
|
||||
if (broken) {
|
||||
throw new RuntimeException("Broken component");
|
||||
}
|
||||
return super.getPreferredSize();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
50
test/jdk/jb/hotspot/DetectVirtualization.java
Normal file
50
test/jdk/jb/hotspot/DetectVirtualization.java
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright 2022-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 Verifies that the system property describing virtualization
|
||||
* is present
|
||||
* @library /test/lib
|
||||
* @run main DetectVirtualization
|
||||
*/
|
||||
|
||||
public class DetectVirtualization {
|
||||
static final String VIRT_PROPERTY_NAME = "intellij.os.virtualization";
|
||||
|
||||
public static void main(String args[]) {
|
||||
String virtualization = System.getProperty(VIRT_PROPERTY_NAME);
|
||||
System.out.println("Detected virtualization: " + virtualization);
|
||||
switch (virtualization) {
|
||||
case "Xen":
|
||||
case "KVM":
|
||||
case "VMWare":
|
||||
case "HyperV":
|
||||
case "none":
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException(VIRT_PROPERTY_NAME + " has an unexpected value " + virtualization);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -38,7 +38,9 @@ import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static com.jetbrains.desktop.FontExtensions.featuresToStringArray;
|
||||
import static com.jetbrains.desktop.FontExtensions.getFeatures;
|
||||
@@ -211,11 +213,37 @@ public class FontExtensionsTest {
|
||||
return textDrawingEquals(BASE_FONT, fontWithFeatures(), TEST_STRING);
|
||||
}
|
||||
|
||||
@JBRTest
|
||||
private static Boolean getAvailableFeatures1() {
|
||||
Set<String> features = JBR.getFontOpenTypeFeatures().getAvailableFeatures(BASE_FONT);
|
||||
Set<FontExtensions.FeatureTag> expected =
|
||||
Set.of(FontExtensions.FeatureTag.SS01, FontExtensions.FeatureTag.CV03, FontExtensions.FeatureTag.ZERO);
|
||||
return features.containsAll(expected.stream().map(FontExtensions.FeatureTag::getName).toList());
|
||||
}
|
||||
|
||||
@JBRTest
|
||||
private static Boolean getAvailableFeatures2() {
|
||||
Set<String> features = JBR.getFontOpenTypeFeatures().getAvailableFeatures(new Font("Inconsolata", Font.PLAIN, 20));
|
||||
return features.isEmpty();
|
||||
}
|
||||
|
||||
@JBRTest
|
||||
private static Boolean getAvailableFeatures3() {
|
||||
Set<String> features = JBR.getFontOpenTypeFeatures().getAvailableFeatures(new Font("Inter", Font.PLAIN, 20));
|
||||
Set<FontExtensions.FeatureTag> expected =
|
||||
Set.of(FontExtensions.FeatureTag.SS01, FontExtensions.FeatureTag.SS02, FontExtensions.FeatureTag.SS03);
|
||||
return features.containsAll(expected.stream().map(FontExtensions.FeatureTag::getName).toList());
|
||||
}
|
||||
|
||||
public static void main(final String[] args) {
|
||||
if (!JBR.isFontExtensionsSupported()) {
|
||||
throw new RuntimeException("JBR FontExtension API is not available");
|
||||
}
|
||||
|
||||
if (!JBR.isFontOpenTypeFeaturesSupported()) {
|
||||
throw new RuntimeException("JBR FontOpenTypeFeatures API is not available");
|
||||
}
|
||||
|
||||
String error = "";
|
||||
try {
|
||||
for (final Method method : FontExtensionsTest.class.getDeclaredMethods()) {
|
||||
|
||||
@@ -7,49 +7,50 @@ javax/swing/JInternalFrame/Test6505027.java nobug macosx-all,linux-all,w
|
||||
javax/swing/JPopupMenu/4634626/bug4634626.java nobug macosx-all,linux-all,windows-all
|
||||
javax/swing/JPopupMenu/4966112/bug4966112.java nobug macosx-all,linux-all,windows-all
|
||||
jb/java/awt/Desktop/AboutHandlerTest.java nobug macosx-all,linux-all,windows-all
|
||||
sun/java2d/GdiRendering/InsetClipping.java nobug macosx-all,linux-all,windows-all
|
||||
|
||||
# VoiceOver on MacOS
|
||||
java/awt/event/KeyEvent/ExtendedModifiersTest/ExtendedModifiersTest.java JBR-5397 macosx-all
|
||||
java/awt/event/KeyEvent/KeyMaskTest/KeyMaskTest.java JBR-5397 macosx-all
|
||||
java/awt/event/KeyEvent/KeyTyped/CtrlSpace.java JBR-5397 macosx-all
|
||||
java/awt/event/KeyEvent/KeyEventLocationTest.java JBR-5397 macosx-all
|
||||
java/awt/event/KeyEvent/KeyTyped/CtrlSpace.java JBR-3817,JBR-5397 windows-all,macosx-all
|
||||
java/awt/event/KeyEvent/KeyEventLocationTest.java JBR-5916,JBR-5397 linux-all,macosx-all
|
||||
java/awt/event/MouseEvent/MouseButtonsAndKeyMasksTest/MouseButtonsAndKeyMasksTest.java JBR-5397 macosx-all
|
||||
java/awt/event/StressTest/MouseAndKeyEventStressTest.java JBR-5397 macosx-all
|
||||
java/awt/FileDialog/FilenameFilterTest/FilenameFilterTest.java JBR-5397 macosx-all
|
||||
java/awt/Focus/6378278/InputVerifierTest.java JBR-5397 macosx-all
|
||||
java/awt/Focus/6382144/EndlessLoopTest.java JBR-5397 macosx-all
|
||||
java/awt/Focus/8000326/SetFocusTraversalKeysEnabledTest.java JBR-5397 macosx-all
|
||||
java/awt/Focus/8073453/AWTFocusTransitionTest.java JBR-5397 macosx-all
|
||||
java/awt/Focus/8073453/SwingFocusTransitionTest.java JBR-5397 macosx-all
|
||||
java/awt/Focus/ConsumeNextKeyTypedOnModalShowTest/ConsumeNextKeyTypedOnModalShowTest.java JBR-5397 macosx-all
|
||||
java/awt/Focus/FocusTraversalPolicy/ButtonGroupLayoutTraversal/ButtonGroupLayoutTraversalTest.java JBR-5397 macosx-all
|
||||
java/awt/Focus/KeyEventForBadFocusOwnerTest/KeyEventForBadFocusOwnerTest.java JBR-5397 macosx-all
|
||||
java/awt/Focus/8000326/SetFocusTraversalKeysEnabledTest.java JBR-4997,JBR-5729,JBR-5397 windows-all,linux-all,macosx-all
|
||||
java/awt/Focus/8073453/AWTFocusTransitionTest.java JBR-5210,8298247,JBR-5397 windows-all,linux-all,macosx-all
|
||||
java/awt/Focus/8073453/SwingFocusTransitionTest.java JBR-5210,JBR-5397 windows-all,macosx-all
|
||||
java/awt/Focus/ConsumeNextKeyTypedOnModalShowTest/ConsumeNextKeyTypedOnModalShowTest.java 6986252,JBR-5178,JBR-6750,JBR-5397 windows-all,linux-all,macosx-all
|
||||
java/awt/Focus/FocusTraversalPolicy/ButtonGroupLayoutTraversal/ButtonGroupLayoutTraversalTest.java JBR-5210,JBR-5397 windows-all,macosx-all
|
||||
java/awt/Focus/KeyEventForBadFocusOwnerTest/KeyEventForBadFocusOwnerTest.java JBR-5210,JBR-5397 windows-all,macosx-all
|
||||
java/awt/hidpi/properties/HiDPIPropertiesUnixTest.java JBR-5397 macosx-all
|
||||
java/awt/KeyboardFocusmanager/ConsumeNextMnemonicKeyTypedTest/ConsumeNextMnemonicKeyTypedTest.java JBR-5397 macosx-all
|
||||
java/awt/KeyboardFocusmanager/TypeAhead/ButtonActionKeyTest/ButtonActionKeyTest.java JBR-5397 macosx-all
|
||||
java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.java JBR-5397 macosx-all
|
||||
java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.java JBR-5397,JBR-4074 macosx-all,windows-all
|
||||
java/awt/List/ItemEventTest/ItemEventTest.java JBR-5397,JBR-5505 macosx-all,windows-all
|
||||
java/awt/Modal/ModalFocusTransferTests/FocusTransferDWFAppModalTest.java JBR-5397 macosx-all
|
||||
java/awt/Robot/ModifierRobotKey/ModifierRobotKeyTest.java JBR-5397 macosx-all
|
||||
java/awt/Robot/ModifierRobotKey/ModifierRobotKeyTest.java JBR-5397,JBR-5802 macosx-all,windows-all
|
||||
java/awt/Toolkit/AWTEventListenerProxyTest/AWTEventListenerProxyTest.java JBR-6948 windows-x64
|
||||
java/awt/Toolkit/LockingKeyStateTest/LockingKeyStateTest.java JBR-5397 macosx-all
|
||||
javax/swing/JFileChooser/4524490/bug4524490.java JBR-5397 macosx-all
|
||||
|
||||
javax/swing/JFileChooser/4524490/bug4524490.java JBR-5397,JBR-5846 macosx-all,windows-all
|
||||
javax/swing/JFileChooser/6520101/bug6520101.java JBR-5397 macosx-all
|
||||
javax/swing/JFileChooser/8002077/bug8002077.java JBR-5397 macosx-all
|
||||
javax/swing/JLabel/4138746/JLabelMnemonicsTest.java JBR-5397 macosx-all
|
||||
javax/swing/JLabel/6596966/bug6596966.java JBR-5397 macosx-all
|
||||
javax/swing/JList/4618767/JListSelectedElementTest.java JBR-5397 macosx-all
|
||||
javax/swing/JList/6462008/bug6462008.java JBR-5397 macosx-all
|
||||
javax/swing/JMenu/4213634/bug4213634.java JBR-5397 macosx-all
|
||||
javax/swing/JMenu/4515762/bug4515762.java JBR-5397 macosx-all
|
||||
javax/swing/JMenu/4692443/bug4692443.java JBR-5397 macosx-all
|
||||
javax/swing/JMenu/6470128/bug6470128.java JBR-5397 macosx-all
|
||||
javax/swing/JMenuBar/4750590/bug4750590.java JBR-5397 macosx-all
|
||||
javax/swing/JMenuItem/4171437/bug4171437.java JBR-5397 macosx-all
|
||||
javax/swing/JMenuItem/6249972/bug6249972.java JBR-5397 macosx-all
|
||||
javax/swing/JFileChooser/8002077/bug8002077.java JBR-4880,JBR-5397 windows-all,macosx-all
|
||||
javax/swing/JLabel/4138746/JLabelMnemonicsTest.java JBR-4949,JBR-5397 linux-all,windows-all,macosx-all
|
||||
javax/swing/JLabel/6596966/bug6596966.java 8197552,JBR-5397 windows-all,macosx-all
|
||||
javax/swing/JList/4618767/JListSelectedElementTest.java JBR-4955,JBR-5397 windows-all,macosx-all
|
||||
javax/swing/JList/6462008/bug6462008.java JBR-5397,JBR-6773 macosx-all,windows-all
|
||||
javax/swing/JMenu/4213634/bug4213634.java 8197552,JBR-5397 windows-all,macosx-all
|
||||
javax/swing/JMenu/4515762/bug4515762.java 8197552,JBR-5397 windows-all,macosx-all
|
||||
javax/swing/JMenu/4692443/bug4692443.java JBR-5397,JBR-6093 macosx-all,windows-all
|
||||
javax/swing/JMenu/6470128/bug6470128.java 8253184,JBR-6307,JBR-5397 windows-all,linux-all,macosx-all
|
||||
javax/swing/JMenuBar/4750590/bug4750590.java JBR-5397,JBR-6094 macosx-all,windows-all
|
||||
javax/swing/JMenuItem/4171437/bug4171437.java JBR-5397,JBR-6112 macosx-all,windows-all
|
||||
javax/swing/JMenuItem/6249972/bug6249972.java 8197552,JBR-5397 windows-all,macosx-all
|
||||
javax/swing/JMenuItem/JMenuItemSetAcceleratorTest.java JBR-5397 macosx-all
|
||||
javax/swing/JPopupMenu/4458079/bug4458079.java JBR-5397 macosx-all
|
||||
javax/swing/JPopupMenu/4634626/bug4634626.java JBR-5397 macosx-all
|
||||
javax/swing/JPopupMenu/4634626/bug4634626.java 8253184,JBR-5397 windows-all,macosx-all
|
||||
javax/swing/JPopupMenu/6415145/bug6415145.java JBR-5397 macosx-all
|
||||
javax/swing/JPopupMenu/6827786/bug6827786.java JBR-5397 macosx-all
|
||||
javax/swing/JRadioButton/4314194/bug4314194.java JBR-5397 macosx-all
|
||||
@@ -58,28 +59,28 @@ javax/swing/JSplitPane/4615365/JSplitPaneDividerLocationTest.java JBR-5397 macos
|
||||
javax/swing/JSplitPane/4820080/JSplitPaneDragColorTest.java JBR-5397 macosx-all
|
||||
javax/swing/JTable/8236907/LastVisibleRow.java JBR-5397 macosx-all
|
||||
javax/swing/JTextField/4532513/DefaultCaretRequestsFocusTest.java JBR-5397 macosx-all
|
||||
javax/swing/JTextField/8036819/bug8036819.java JBR-5397 macosx-all
|
||||
javax/swing/JTextField/8036819/bug8036819.java JBR-5397,JBR-6113 macosx-all,windows-all
|
||||
javax/swing/JToolTip/bug5047379.java JBR-5397 macosx-all
|
||||
javax/swing/JTree/4518432/JTreeNodeCopyPasteTest.java JBR-5397 macosx-all
|
||||
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 JBR-5397 macosx-all
|
||||
javax/swing/plaf/synth/7158712/bug7158712.java JBR-5397 macosx-all
|
||||
javax/swing/Popup/TaskbarPositionTest.java JBR-5397 macosx-all
|
||||
javax/swing/text/CSSBorder/6796710/bug6796710.java JBR-5397 macosx-all
|
||||
sanity/client/SwingSet/src/EditorPaneDemoTest.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/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
|
||||
sanity/client/SwingSet/src/EditorPaneDemoTest.java JBR-5397,8212240,JBR-5510,JBR-6285,8253184 macosx-all,linux-all,windows-all
|
||||
sanity/client/SwingSet/src/ToolTipDemoTest.java JBR-5397 macosx-all
|
||||
sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java JBR-5397 macosx-all
|
||||
sun/java2d/GdiRendering/ClipShapeRendering.java JBR-5397 macosx-all
|
||||
sun/java2d/GdiRendering/InsetClipping.java JBR-5397 macosx-all
|
||||
sun/java2d/GdiRendering/InsetClipping.java JBR-5397,7124403,JBR-6513 macosx-all,windows-all,linux-all
|
||||
java/awt/Focus/NullActiveWindowOnFocusLost/NullActiveWindowOnFocusLost.java JBR-5397 macosx-all
|
||||
java/awt/FullScreen/BufferStrategyExceptionTest/BufferStrategyExceptionTest.java JBR-5397 macosx-all
|
||||
java/awt/FullScreen/FullScreenInsets/FullScreenInsets.java JBR-5397 macosx-all
|
||||
java/awt/List/ListMultipleSelectTest/ListMultipleSelectTest.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/MouseComboBoxTest/MouseComboBoxTest.java JBR-5397 macosx-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
|
||||
java/awt/PopupMenu/PopupMenuLocation.java JBR-5397 macosx-all
|
||||
@@ -93,136 +94,70 @@ javax/accessibility/SlowPanelIteration/SlowPanelIteration.java JBR-5397 macosx-a
|
||||
javax/accessibility/JFileChooserAccessibleDescriptionTest.java JBR-5397 macosx-all
|
||||
javax/swing/JButton/8151303/PressedIconTest.java JBR-5397 macosx-all
|
||||
javax/swing/JComboBox/4743225/bug4743225.java JBR-5397 macosx-all
|
||||
javax/swing/JComboBox/6236162/bug6236162.java JBR-5397 macosx-all
|
||||
javax/swing/JComboBox/6236162/bug6236162.java JBR-5210,JBR-5397 windows-all,macosx-all
|
||||
javax/swing/JComboBox/6559152/bug6559152.java JBR-5397 macosx-all
|
||||
javax/swing/JComboBox/8033069/bug8033069NoScrollBar.java JBR-5397 macosx-all
|
||||
javax/swing/JComboBox/8033069/bug8033069ScrollBar.java JBR-5397 macosx-all
|
||||
javax/swing/JComboBox/8182031/ComboPopupTest.java JBR-5397 macosx-all
|
||||
javax/swing/JComboBox/8182031/ComboPopupTest.java 8253184,JBR-5397 windows-all,macosx-all
|
||||
javax/swing/JComboBox/JComboBoxPopupMenuEventTest.java JBR-5397 macosx-all
|
||||
javax/swing/JComboBox/JComboBoxWithTitledBorderTest.java JBR-5397 macosx-all
|
||||
javax/swing/JEditorPane/8195095/ImageViewTest.java JBR-5397 macosx-all
|
||||
javax/swing/JEditorPane/8195095/ImageViewTest.java 8253184,JBR-5510,JBR-6283,JBR-5397 windows-all,linux-5.18.2-arch1-1,macosx-all
|
||||
javax/swing/JSpinner/4670051/DateFieldUnderCursorTest.java JBR-5397 macosx-all
|
||||
|
||||
# Windows (ZoomText, NVDA, or JAWS is enabled during testing)
|
||||
com/sun/java/accessibility/util/8051626/Bug8051626.java JBR-5505 windows-all
|
||||
java/awt/Choice/ChoicePopupLocation/ChoicePopupLocation.java JBR-5505 windows-all
|
||||
java/awt/Debug/DumpOnKey/DumpOnKey.java JBR-5505 windows-all
|
||||
java/awt/Dialog/ModalDialogPermission/ModalDialogPermission.java JBR-5505 windows-all
|
||||
java/awt/Dialog/NestedDialogs/Modal/NestedModalDialogTest.java JBR-5505 windows-all
|
||||
java/awt/dnd/Button2DragTest/Button2DragTest.java JBR-5505 windows-all
|
||||
java/awt/event/MouseEvent/ClickDuringKeypress/ClickDuringKeypress.java JBR-5505 windows-all
|
||||
java/awt/EventDispatchThread/HandleExceptionOnEDT/HandleExceptionOnEDT.java JBR-5505 windows-all
|
||||
java/awt/EventDispatchThread/PropertyPermissionOnEDT/PropertyPermissionOnEDT.java JBR-5505 windows-all
|
||||
java/awt/Button/DoubleActionEventTest.java JBR-6949 windows-x64
|
||||
java/awt/Choice/ChoiceConsumeMouseEvents.java JBR-6951 windows-x64
|
||||
java/awt/Choice/ChoiceFreezeTest.java JBR-6952 windows-x64
|
||||
java/awt/Choice/ChoicePopupLocation/ChoicePopupLocation.java JBR-6857,JBR-5505 macosx-all,windows-all
|
||||
java/awt/Choice/RemoveAllShrinkTest/RemoveAllShrinkTest.java JBR-5510,8310487,JBR-6950 linux-5.18.2-arch1-1,linux-all,windows-x64
|
||||
java/awt/dnd/Button2DragTest/Button2DragTest.java 8310490,JBR-5505 windows-all,linux-all
|
||||
java/awt/event/MouseEvent/ClickDuringKeypress/ClickDuringKeypress.java 8233568,JBR-5915,JBR-5505 macosx-all,linux-all,windows-all
|
||||
java/awt/Focus/6378278/InputVerifierTest.java JBR-5505 windows-all
|
||||
java/awt/Focus/CloseDialogActivateOwnerTest/CloseDialogActivateOwnerTest.java JBR-5505 windows-all
|
||||
java/awt/Focus/FocusTraversalPolicy/ButtonGroupLayoutTraversal/ButtonGroupLayoutTraversalTest.java JBR-5505 windows-all
|
||||
java/awt/Focus/KeyEventForBadFocusOwnerTest/KeyEventForBadFocusOwnerTest.java JBR-5505 windows-all
|
||||
java/awt/Focus/NoAutotransferToDisabledCompTest/NoAutotransferToDisabledCompTest.java JBR-5505 windows-all
|
||||
java/awt/Focus/OwnedWindowFocusIMECrashTest/OwnedWindowFocusIMECrashTest.java JBR-5505 windows-all
|
||||
java/awt/Focus/ShowFrameCheckForegroundTest/ShowFrameCheckForegroundTest.java JBR-5505 windows-all
|
||||
java/awt/Focus/TranserFocusToWindow/TranserFocusToWindow.java JBR-5505 windows-all
|
||||
java/awt/Focus/TypeAhead/TestFocusFreeze.java JBR-5505 windows-all
|
||||
java/awt/Focus/WindowInitialFocusTest/WindowInitialFocusTest.java JBR-5210 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/FontClass/FontAccess.java JBR-5505 windows-all
|
||||
java/awt/Frame/FramesGC/FramesGC.java JBR-5505 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
|
||||
java/awt/hidpi/SetMaximizedBoundsTest.java JBR-5505 windows-all
|
||||
java/awt/im/4959409/bug4959409.java JBR-5505 windows-all
|
||||
java/awt/im/memoryleak/InputContextMemoryLeakTest.java JBR-5505 windows-all
|
||||
java/awt/image/mlib/MlibOpsTest.java JBR-5505 windows-all
|
||||
java/awt/KeyboardFocusmanager/TypeAhead/FreezeTest/FreezeTest.java JBR-5505 windows-all
|
||||
java/awt/KeyboardFocusmanager/TypeAhead/TestDialogTypeAhead.java JBR-5505 windows-all
|
||||
java/awt/LightweightDispatcher/LWDispatcherMemoryLeakTest.java JBR-5505 windows-all
|
||||
java/awt/List/ItemEventTest/ItemEventTest.java JBR-5505 windows-all
|
||||
java/awt/List/KeyEventsTest/KeyEventsTest.java JBR-5505 windows-all
|
||||
java/awt/List/ListMultipleSelectTest/ListMultipleSelectTest.java JBR-5505 windows-all
|
||||
java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java JBR-5505 windows-all
|
||||
java/awt/Mixing/AWT_Mixing/JGlassPaneMoveOverlapping.java JBR-5505 windows-all
|
||||
java/awt/Mixing/LWPopupMenu.java JBR-5505 windows-all
|
||||
java/awt/List/ItemEventTest/ItemEventTest.java JBR-5711,JBR-5505 windows-all,linux-all
|
||||
java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java 8049405,JBR-5510,JBR-5505 macosx-all,linux-5.18.2-arch1-1,windows-all
|
||||
java/awt/Mixing/AWT_Mixing/JGlassPaneMoveOverlapping.java JBR-5510,JBR-5505 linux-5.18.2-arch1-1,windows-all
|
||||
java/awt/Mixing/MixingOnDialog.java JBR-5505 windows-all
|
||||
java/awt/Mixing/MixingOnShrinkingHWButton.java JBR-5505 windows-all
|
||||
java/awt/Mixing/OpaqueTest.java JBR-5505 windows-all
|
||||
java/awt/Mixing/OverlappingButtons.java JBR-5505 windows-all
|
||||
java/awt/Mixing/Validating.java JBR-5505 windows-all
|
||||
java/awt/Mixing/OpaqueTest.java JBR-5707,JBR-5505 linux-all,windows-all
|
||||
java/awt/Mixing/OverlappingButtons.java JBR-5707,JBR-5505 linux-all,windows-all
|
||||
java/awt/Mixing/Validating.java JBR-5708,JBR-5505 linux-all,windows-all
|
||||
java/awt/Modal/ModalFocusTransferTests/FocusTransferDialogsAppModalTest.java JBR-5505 windows-all
|
||||
java/awt/Modal/ModalFocusTransferTests/FocusTransferDialogsDocModalTest.java JBR-5505 windows-all
|
||||
java/awt/Modal/ModalFocusTransferTests/FocusTransferDialogsModelessTest.java JBR-5505 windows-all
|
||||
java/awt/Modal/ModalFocusTransferTests/FocusTransferDialogsNonModalTest.java JBR-5505 windows-all
|
||||
java/awt/Modal/ModalFocusTransferTests/FocusTransferDialogsDocModalTest.java 8164473,JBR-5505 linux-all,windows-all
|
||||
java/awt/Modal/ModalFocusTransferTests/FocusTransferDialogsModelessTest.java 8196432,JBR-5505 linux-all,windows-all
|
||||
java/awt/Modal/ModalFocusTransferTests/FocusTransferDialogsNonModalTest.java 8196432,JBR-5505 linux-all,windows-all
|
||||
java/awt/MouseInfo/GetPointerInfoTest.java JBR-5505 windows-all
|
||||
java/awt/MouseInfo/MultiscreenPointerInfo.java JBR-5505 windows-all
|
||||
java/awt/Multiscreen/MouseEventTest/MouseEventTest.java JBR-5505 windows-all
|
||||
java/awt/Multiscreen/MouseEventTest/MouseEventTest.java JBR-4908,JBR-5505 linux-all,windows-all
|
||||
java/awt/Multiscreen/MultiScreenLocationTest/MultiScreenLocationTest.java JBR-5505 windows-all
|
||||
java/awt/PopupMenu/PopupMenuLocation.java JBR-5505 windows-all
|
||||
java/awt/print/PrinterJob/GetUserNameTest.java JBR-5505 windows-all
|
||||
java/awt/PrintJob/Security/SecurityDialogTest.java JBR-5505 windows-all
|
||||
java/awt/Robot/ModifierRobotKey/ModifierRobotKeyTest.java JBR-5505 windows-all
|
||||
java/awt/Robot/MouseLocationOnScreen/MouseLocationOnScreen.java JBR-5505 windows-all
|
||||
java/awt/Robot/MultiScreenRobotPosition/MultiScreenRobotPosition.java JBR-5505 windows-all
|
||||
java/awt/security/WarningWindowDisposeTest/WarningWindowDisposeCrashTest.java JBR-5505 windows-all
|
||||
java/awt/Toolkit/LockingKeyStateTest/LockingKeyStateTest.java JBR-5505 windows-all
|
||||
java/awt/Toolkit/SecurityTest/SecurityTest2.java JBR-5505 windows-all
|
||||
java/awt/TrayIcon/SecurityCheck/NoPermissionTest/NoPermissionTest.java JBR-5505 windows-all
|
||||
java/awt/TrayIcon/SecurityCheck/PermissionTest/PermissionTest.java JBR-5505 windows-all
|
||||
java/awt/Robot/MultiScreenRobotPosition/MultiScreenRobotPosition.java JBR-830,JBR-5505 windows-x64,windows-all
|
||||
java/awt/Toolkit/LockingKeyStateTest/LockingKeyStateTest.java JBR-5765,JBR-5505 windows-all,macosx-all
|
||||
javax/accessibility/JSlider/AccessibleAction/JSliderAccessibleAction.java JBR-5505 windows-all
|
||||
javax/imageio/plugins/external_plugin_tests/TestClassPathPlugin.sh JBR-5505 windows-all
|
||||
javax/swing/JComboBox/8033069/bug8033069NoScrollBar.java JBR-5505 windows-all
|
||||
javax/swing/JComboBox/8033069/bug8033069ScrollBar.java JBR-5505 windows-all
|
||||
javax/swing/JComboBox/8136998/bug8136998.java JBR-5505 windows-all
|
||||
javax/swing/JComboBox/JComboBoxPopupMenuEventTest.java JBR-5505 windows-all
|
||||
javax/swing/JComboBox/JComboBoxWithTitledBorderTest.java JBR-5505 windows-all
|
||||
javax/swing/JFileChooser/4524490/bug4524490.java JBR-5505 windows-all
|
||||
javax/swing/JFileChooser/6570445/bug6570445.java JBR-5505 windows-all
|
||||
javax/swing/JFileChooser/6738668/bug6738668.java JBR-5505 windows-all
|
||||
javax/swing/JFileChooser/7036025/bug7036025.java JBR-5505 windows-all
|
||||
javax/swing/JFileChooser/8062561/bug8062561.java JBR-5505 windows-all
|
||||
javax/swing/JFileChooser/ShellFolderQueries/ShellFolderQueriesSecurityManagerTest.java JBR-5505 windows-all
|
||||
javax/swing/JFrame/8175301/ScaledFrameBackgroundTest.java JBR-5505 windows-all
|
||||
javax/swing/JInternalFrame/8145060/TestJInternalFrameMinimize.java JBR-5505 windows-all
|
||||
javax/swing/JInternalFrame/Test6325652.java JBR-5505 windows-all
|
||||
javax/swing/JInternalFrame/Test6505027.java JBR-5505 windows-all
|
||||
javax/swing/JMenu/4213634/bug4213634.java JBR-5505 windows-all
|
||||
javax/swing/JMenu/4515762/bug4515762.java JBR-5505 windows-all
|
||||
javax/swing/JMenu/4692443/bug4692443.java JBR-5505 windows-all
|
||||
javax/swing/JMenu/PopupReferenceMemoryLeak.java JBR-5505 windows-all
|
||||
javax/swing/JMenuBar/4750590/bug4750590.java JBR-5505 windows-all
|
||||
javax/swing/JMenuItem/4171437/bug4171437.java JBR-5505 windows-all
|
||||
javax/swing/JMenuItem/8158566/CloseOnMouseClickPropertyTest.java JBR-5505 windows-all
|
||||
javax/swing/JOptionPane/8081019/bug8081019.java JBR-5505 windows-all
|
||||
javax/swing/JInternalFrame/Test6505027.java JBR-5954,JBR-5505 linux-all,macosx-all,windows-all
|
||||
javax/swing/JPopupMenu/4458079/bug4458079.java JBR-5505 windows-all
|
||||
javax/swing/JPopupMenu/6675802/bug6675802.java JBR-5505 windows-all
|
||||
javax/swing/JRadioButton/8033699/bug8033699.java JBR-5505 windows-all
|
||||
javax/swing/JRadioButton/8075609/bug8075609.java JBR-5505 windows-all
|
||||
javax/swing/JRadioButton/ButtonGroupFocus/ButtonGroupFocusTest.java JBR-5505 windows-all
|
||||
javax/swing/JRadioButton/FocusTraversal/FocusTraversal.java JBR-5505 windows-all
|
||||
javax/swing/JRootPane/DefaultButtonTest.java JBR-5505 windows-all
|
||||
javax/swing/JScrollBar/bug4202954/bug4202954.java JBR-5505 windows-all
|
||||
javax/swing/JSpinner/4515999/JSpinnerMouseAndKeyPressTest.java JBR-5505 windows-all
|
||||
javax/swing/JTable/6263446/bug6263446.java JBR-5505 windows-all
|
||||
javax/swing/JTextField/8036819/bug8036819.java JBR-5505 windows-all
|
||||
javax/swing/JTree/4908142/bug4908142.java JBR-5505 windows-all
|
||||
javax/swing/JTree/4927934/bug4927934.java JBR-5505 windows-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradient.java JBR-5505 windows-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedTranslucentPerPixelTranslucentGradient.java JBR-5505 windows-all
|
||||
javax/swing/plaf/basic/BasicComboPopup/JComboBoxPopupLocation/JComboBoxPopupLocation.java JBR-5505 windows-all
|
||||
javax/swing/plaf/basic/BasicTableHeaderUI/6394566/bug6394566.java JBR-5505 windows-all
|
||||
javax/swing/plaf/synth/Test8043627.java JBR-5505 windows-all
|
||||
javax/swing/PopupFactory/6276087/NonOpaquePopupMenuTest.java JBR-5505 windows-all
|
||||
javax/swing/SwingUtilities/7088744/bug7088744.java JBR-5505 windows-all
|
||||
javax/swing/text/JTextComponent/6361367/bug6361367.java JBR-5505 windows-all
|
||||
javax/swing/ToolTipManager/Test6256140.java JBR-5505 windows-all
|
||||
javax/swing/UIDefaults/6795356/TableTest.java JBR-5505 windows-all
|
||||
javax/swing/plaf/basic/BasicComboPopup/JComboBoxPopupLocation/JComboBoxPopupLocation.java 8194945,JBR-5505 linux-all,macosx-all,windows-all
|
||||
jdk/editpad/EditPadTest.java JBR-5505 windows-all
|
||||
javax/swing/JPopupMenu/6217905/bug6217905.java JBR-5505 windows-all
|
||||
javax/swing/JPopupMenu/6415145/bug6415145.java JBR-5505 windows-all
|
||||
javax/swing/JPopupMenu/6515446/bug6515446.java JBR-5505 windows-all
|
||||
javax/swing/JPopupMenu/6580930/bug6580930.java JBR-5505 windows-all
|
||||
javax/swing/JPopupMenu/6800513/bug6800513.java JBR-5505 windows-all
|
||||
javax/swing/JPopupMenu/6987844/bug6987844.java JBR-5505 windows-all
|
||||
javax/swing/JPopupMenu/7156657/bug7156657.java JBR-5505 windows-all
|
||||
javax/swing/JPopupMenu/8075063/ContextMenuScrollTest.java JBR-5505 windows-all
|
||||
javax/swing/JPopupMenu/8075063/ContextMenuScrollTest.java JBR-6717,JBR-5505 linux-all,windows-all
|
||||
javax/swing/JRadioButton/8041561/bug8041561.java JBR-5505 windows-all
|
||||
javax/swing/JScrollBar/4708809/bug4708809.java JBR-5505 windows-all
|
||||
javax/swing/JScrollBar/7163696/Test7163696.java JBR-5505 windows-all
|
||||
@@ -231,24 +166,17 @@ javax/swing/JSlider/6401380/bug6401380.java JBR-5505 windows-all
|
||||
javax/swing/JSpinner/4788637/bug4788637.java JBR-5505 windows-all
|
||||
javax/swing/JSplitPane/4615365/JSplitPaneDividerLocationTest.java JBR-5505 windows-all
|
||||
javax/swing/JSplitPane/4820080/JSplitPaneDragColorTest.java JBR-5505 windows-all
|
||||
javax/swing/JSplitPane/4885629/bug4885629.java JBR-5505 windows-all
|
||||
javax/swing/JTabbedPane/4361477/bug4361477.java JBR-5505 windows-all
|
||||
javax/swing/JSplitPane/4885629/bug4885629.java 8019935,JBR-5505 macosx-all,windows-all
|
||||
javax/swing/JTabbedPane/4361477/bug4361477.java JBR-5932,JBR-5505 linux-all,windows-all
|
||||
javax/swing/JTable/4275046/bug4275046.java JBR-5505 windows-all
|
||||
javax/swing/JTable/7124218/SelectEditTableCell.java JBR-5505 windows-all
|
||||
javax/swing/JTable/BugCellEditorListener.java JBR-5505 windows-all
|
||||
javax/swing/JTableHeader/6884066/bug6884066.java JBR-5505 windows-all
|
||||
javax/swing/JToolTip/4846413/bug4846413.java JBR-5505 windows-all
|
||||
javax/swing/JToolTip/bug5047379.java JBR-5505 windows-all
|
||||
javax/swing/JTree/DnD/LastNodeLowerHalfDrop.java JBR-5505 windows-all
|
||||
javax/swing/JTree/DnD/LastNodeLowerHalfDrop.java 8159131,JBR-5505 linux-all,windows-all
|
||||
javax/swing/plaf/nimbus/8041642/ScrollBarThumbVisibleTest.java JBR-5505 windows-all
|
||||
javax/swing/plaf/nimbus/TestNimbusBGColor.java JBR-5505 windows-all
|
||||
javax/swing/reliability/TaskUndJFrameProperties.java JBR-5505 windows-all
|
||||
javax/swing/text/html/CSS/4530474/bug4530474.java JBR-5505 windows-all
|
||||
sanity/client/SwingSet/src/EditorPaneDemoTest.java JBR-5505 windows-all
|
||||
sanity/client/SwingSet/src/ToolTipDemoTest.java JBR-5505 windows-all
|
||||
javax/swing/reliability/TaskUndJFrameProperties.java JBR-6586,JBR-5505 windows-x64,windows-all
|
||||
sanity/client/SwingSet/src/ToolTipDemoTest.java 8293001,JBR-5505 linux-all,windows-all
|
||||
sun/awt/dnd/8024061/bug8024061.java JBR-5505 windows-all
|
||||
sun/java2d/GdiRendering/InsetClipping.java JBR-5505 windows-all
|
||||
java/awt/event/MouseWheelEvent/DisabledComponent/DisabledComponent.java JBR-5505 windows-all
|
||||
java/awt/List/ListGarbageCollectionTest/AwtListGarbageCollectionTest.java JBR-5505 windows-all
|
||||
java/awt/Window/HandleWindowDestroyTest/HandleWindowDestroyTest.java JBR-5505 windows-all
|
||||
java/awt/Window/HandleWindowDestroyTest/HandleWindowDestroyTest.java JBR-6540,JBR-5505 macosx-all,windows-all
|
||||
javax/swing/JProgressBar/8015748/JProgressBarOrientationRobotTest.java JBR-5505 windows-all
|
||||
|
||||
@@ -111,6 +111,7 @@
|
||||
|
||||
############################################################################
|
||||
|
||||
java/awt/Dialog/CloseDialog/CloseDialogTest.java JBR-6538 windows-all
|
||||
java/awt/EventQueue/6980209/bug6980209.java JBR-6699 linux-all
|
||||
java/awt/Focus/6378278/InputVerifierTest.java JBR-6700 linux-all
|
||||
java/awt/Focus/6382144/EndlessLoopTest.java JBR-6701 linux-all
|
||||
@@ -125,4 +126,5 @@ javax/swing/plaf/nimbus/8041642/bug8041642.java JBR-6698 linux-all
|
||||
javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java JBR-5952,JBR-6274 windows-x64,macosx-all
|
||||
|
||||
jb/java/awt/Focus/PopupIncomingFocusTest.java JBR-2651 generic-all
|
||||
jb/java/awt/Window/UndecoratedDialogInTransientsChain.java JBR-6924 windows-all
|
||||
jb/sun/awt/macos/InputMethodTest/KeyCodesTest.java JBR-6480 macosx-all
|
||||
@@ -99,13 +99,11 @@ java/awt/Window/BackgroundIsNotUpdated/BackgroundIsNotUpdated.java JBR-5510 linu
|
||||
java/awt/Window/MultiWindowApp/ChildAlwaysOnTopTest.java 8222323,JBR-5510 windows-all,linux-all
|
||||
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-5510 linux-all
|
||||
java/awt/Window/WindowTitleVisibleTest/WindowTitleVisibleTestLinuxGnome.java nobug linux-all
|
||||
javax/swing/GraphicsConfigNotifier/TestMultiScreenGConfigNotify.java nobug linux-all
|
||||
javax/swing/JButton/8151303/PressedIconTest.java 8266246,JBR-5210,JBR-5510 macosx-aarch64,windows-all,linux-all
|
||||
javax/swing/JComponent/7154030/bug7154030.java 8297454,JBR-5510 macosx-all,linux-all
|
||||
javax/swing/JDialog/Transparency/TransparencyTest.java 8253184,JBR-5510 windows-all,linux-all
|
||||
javax/swing/JEditorPane/8195095/ImageViewTest.java 8253184,JBR-5510,JBR-6283 windows-all,linux-all,macos-all
|
||||
javax/swing/JEditorPane/TestBrowserBGColor.java JBR-5510 linux-all
|
||||
javax/swing/JFrame/8175301/ScaledFrameBackgroundTest.java 8274106,JBR-5510 macosx-aarch64,linux-all
|
||||
javax/swing/JInternalFrame/5066752/bug5066752.java 8253184,JBR-5510 windows-all,linux-all
|
||||
@@ -130,7 +128,6 @@ javax/swing/plaf/nimbus/8057791/bug8057791.java 8253184,JBR-5510 windows-all,lin
|
||||
javax/swing/text/html/CSS/4530474/bug4530474.java JBR-5510,JBR-5951 linux-all,windows-x64
|
||||
javax/swing/text/html/StyleSheet/bug4936917.java 8277816,JBR-899,JBR-5510 windows-all,macosx-aarch64,linux-all
|
||||
jb/java/awt/MouseInfo/GetPointerInfoTest.java nobug linux-all
|
||||
jb/java/awt/Window/BackgroundWindowOrderOnSpaceChange.java JBR-6486 macosx-all
|
||||
jb/java/awt/Window/ZOrderOnModalDialogActivation.java JBR-5714 windows-all,linux-x64
|
||||
|
||||
sun/java2d/GdiRendering/ClipShapeRendering.java JBR-5204 linux-all,macosx-all,windows-all
|
||||
|
||||
64
test/jdk/jbMuslProblemList.txt
Normal file
64
test/jdk/jbMuslProblemList.txt
Normal file
@@ -0,0 +1,64 @@
|
||||
com/sun/java/swing/plaf/gtk/TestFileChooserSingleDirectorySelection.java initial_runs generic-all
|
||||
java/awt/BasicStroke/DashScaleMinWidth.java initial_runs generic-all
|
||||
java/awt/BasicStroke/DashZeroWidth.java initial_runs generic-all
|
||||
java/awt/datatransfer/Independence/IndependenceAWTTest.java initial_runs generic-all
|
||||
java/awt/datatransfer/Independence/IndependenceSwingTest.java initial_runs generic-all
|
||||
java/awt/event/ComponentEvent/ListItemEventsTest.java initial_runs generic-all
|
||||
java/awt/font/Rotate/RotatedFontTest.java initial_runs generic-all
|
||||
java/awt/font/Rotate/TranslatedOutlineTest.java initial_runs generic-all
|
||||
java/awt/font/TextLayout/HitTest.java initial_runs generic-all
|
||||
java/awt/font/TextLayout/TestGetPixelBounds.java initial_runs generic-all
|
||||
java/awt/grab/MenuDragEvents/MenuDragEvents.java initial_runs generic-all
|
||||
java/awt/Graphics2D/DrawString/RotTransText.java initial_runs generic-all
|
||||
java/awt/GridLayout/ChangeGridSize/ChangeGridSize.java initial_runs generic-all
|
||||
java/awt/image/DrawImage/SimpleManagedImage.java initial_runs generic-all
|
||||
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/PopupMenu/PopupMenuLocation.java initial_runs generic-all
|
||||
java/awt/PopupMenu/PopupMenuStayOpen.java initial_runs generic-all
|
||||
java/awt/TextArea/AutoScrollOnSelectAndAppend/AutoScrollOnSelectAndAppend.java initial_runs generic-all
|
||||
java/awt/TextComponent/MiddleMouseClickPasteTest.java initial_runs generic-all
|
||||
java/awt/Window/ShapedAndTranslucentWindows/TranslucentChoice.java initial_runs generic-all
|
||||
javax/imageio/plugins/shared/ImageWriterCompressionTest.java initial_runs generic-all
|
||||
javax/swing/JCheckBox/ImageCheckboxFocus/ImageCheckboxTest.java initial_runs generic-all
|
||||
javax/swing/JComboBox/6559152/bug6559152.java initial_runs generic-all
|
||||
javax/swing/JComboBox/TestComboBoxComponentRendering.java initial_runs generic-all
|
||||
javax/swing/JEditorPane/4666101/JEditorPaneNavigationTest.java initial_runs generic-all
|
||||
javax/swing/JEditorPane/6917744/bug6917744.java initial_runs generic-all
|
||||
javax/swing/JFileChooser/4400728/JFileChooserDefaultDirectoryTest.java initial_runs generic-all
|
||||
javax/swing/JFileChooser/FileViewNPETest.java initial_runs generic-all
|
||||
javax/swing/JFormattedTextField/TestSelectedTextBackgroundColor.java initial_runs generic-all
|
||||
javax/swing/JMenu/TestDisabledMenuForegroundColor.java initial_runs generic-all
|
||||
javax/swing/JPasswordField/TestSelectedTextBackgroundColor.java initial_runs generic-all
|
||||
javax/swing/JScrollBar/bug4202954/bug4202954.java initial_runs generic-all
|
||||
javax/swing/JScrollPane/HorizontalMouseWheelOnShiftPressed/HorizontalMouseWheelOnShiftPressed.java initial_runs generic-all
|
||||
javax/swing/JSpinner/TestSelectedTextBackgroundColor.java initial_runs generic-all
|
||||
javax/swing/JTable/6263446/bug6263446.java initial_runs generic-all
|
||||
javax/swing/JTextArea/8149849/DNDTextToScaledArea.java initial_runs generic-all
|
||||
javax/swing/JTextArea/JTextAreaOrientationTest.java initial_runs generic-all
|
||||
javax/swing/JTextArea/JTextAreaWordWrapTest.java initial_runs generic-all
|
||||
javax/swing/JTextField/4532513/DefaultCaretRequestsFocusTest.java initial_runs generic-all
|
||||
javax/swing/JTextPane/JTextPaneDocumentWrapping.java initial_runs generic-all
|
||||
javax/swing/JToolTip/TestTooltipBackgroundColor.java initial_runs generic-all
|
||||
javax/swing/JTree/4518432/JTreeNodeCopyPasteTest.java initial_runs generic-all
|
||||
javax/swing/JTree/6263446/bug6263446.java initial_runs generic-all
|
||||
javax/swing/LookAndFeel/8145547/DemandGTK2.sh initial_runs generic-all
|
||||
javax/swing/LookAndFeel/8145547/DemandGTK3.sh initial_runs generic-all
|
||||
javax/swing/plaf/basic/BasicGraphicsUtils/8132119/bug8132119.java initial_runs generic-all
|
||||
javax/swing/plaf/basic/BasicHTML/4251579/bug4251579.java initial_runs generic-all
|
||||
javax/swing/plaf/metal/MetalGradient/8163193/ButtonGradientTest.java initial_runs generic-all
|
||||
javax/swing/plaf/nimbus/8041642/bug8041642.java initial_runs generic-all
|
||||
javax/swing/plaf/nimbus/8041642/ScrollBarThumbVisibleTest.java initial_runs generic-all
|
||||
javax/swing/plaf/nimbus/8057791/bug8057791.java initial_runs generic-all
|
||||
javax/swing/text/FlowView/6318524/bug6318524.java initial_runs generic-all
|
||||
javax/swing/text/html/CSS/4530474/bug4530474.java initial_runs generic-all
|
||||
javax/swing/text/html/CSS/8231286/HtmlFontSizeTest.java initial_runs generic-all
|
||||
javax/swing/text/ParagraphView/6364882/bug6364882.java initial_runs generic-all
|
||||
javax/swing/text/StyledEditorKit/8016833/bug8016833.java initial_runs generic-all
|
||||
javax/swing/text/Utilities/bug7045593.java initial_runs generic-all
|
||||
javax/swing/UIDefaults/6302464/bug6302464.java initial_runs generic-all
|
||||
jb/java/awt/Focus/PopupIncomingFocusTest.java initial_runs generic-all
|
||||
jb/java/awt/Window/ZOrderOnModalDialogActivation.java initial_runs generic-all
|
||||
jb/javax/swing/JLabel/JLabel/JLabel269.java initial_runs generic-all
|
||||
@@ -132,6 +132,8 @@ java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_4.java 820420
|
||||
java/awt/event/MouseWheelEvent/WheelModifier/WheelModifier.java JBR-94 windows-x64,linux-all
|
||||
|
||||
java/awt/event/StressTest/MouseAndKeyEventStressTest.java JBR-6479 generic-all
|
||||
java/awt/FileDialog/8003399/bug8003399.java JBR-6930 windows-all
|
||||
java/awt/FileDialog/FileDialogIconTest/FileDialogIconTest.java 8160558 windows-all
|
||||
java/awt/FlowLayout/PreferredLayoutSize.java JBR-6349 linux-all
|
||||
java/awt/Focus/FocusOwnerFrameOnClick/FocusOwnerFrameOnClick.java 8081489 generic-all
|
||||
java/awt/Focus/FocusSubRequestTest/FocusSubRequestTest.java JBR-5178 windows-all
|
||||
@@ -151,9 +153,9 @@ java/awt/Frame/MaximizedUndecorated/MaximizedUndecorated.java 8022302 generic-al
|
||||
java/awt/Frame/MaximizedToIconified/MaximizedToIconified.java 8296972 macosx-all
|
||||
java/awt/Frame/MaximizedToOppositeScreen/MaximizedToOppositeScreenBig.java JBR-5303 windows-all
|
||||
java/awt/Frame/RestoreToOppositeScreen/RestoreToOppositeScreen.java 8286840 linux-all
|
||||
java/awt/FileDialog/FileDialogIconTest/FileDialogIconTest.java 8160558 windows-all
|
||||
java/awt/dnd/AcceptDropMultipleTimes/AcceptDropMultipleTimes.java JBR-4880,JBR-6683 windows-all,linux-all
|
||||
java/awt/dnd/DragTriggerEventTest.java 8320083,JBR-6548 windows-all,linux-all
|
||||
java/awt/dnd/DropActionChangeTest.java JBR-6489 generic-all
|
||||
java/awt/dnd/DropActionChangeTest.java JBR-6489,JBR-6757 generic-all,windows-all
|
||||
java/awt/dnd/DropTargetEnterExitTest/ExtraDragEnterTest.java 8029680 generic-all
|
||||
java/awt/dnd/DropTargetEnterExitTest/MissedDragExitTest.java JBR-5730 linux-all
|
||||
java/awt/dnd/DropTargetingTest.java JBR-6729 windows-all
|
||||
@@ -161,6 +163,7 @@ java/awt/dnd/MissedDragEnterTest.java JBR-6091 windows-all
|
||||
java/awt/dnd/MissingDragExitEventTest/MissingDragExitEventTest.java 8288839,JBR-5727,JBR-5959 windows-all,linux-all
|
||||
java/awt/dnd/ModalDialogDeadlockTest.java JBR-6776 windows-all
|
||||
java/awt/dnd/ModalDialogOnDropDeadlockTest.java JBR-6529 windows-all
|
||||
java/awt/dnd/ModalDialogOnDragDeadlockTest.java JBR-6996 windows-all
|
||||
java/awt/dnd/NestedHeavyweightDropTargetTest.java JBR-6580 windows-all
|
||||
java/awt/dnd/NextDropActionTest/NextDropActionTest.java 8313633 macosx-aarch64
|
||||
java/awt/dnd/URIListBetweenJVMsTest/URIListBetweenJVMsTest.java 8171510,JBR-881 macosx-all,linux-all
|
||||
@@ -281,6 +284,7 @@ java/awt/Toolkit/ScreenInsetsTest/ScreenInsetsTest.java JBR-5812 linux-all
|
||||
java/awt/Toolkit/SecurityTest/SecurityTest2.java JBR-5225 windows-all
|
||||
java/awt/Toolkit/SunDisplayChangerLeakTest/SunDisplayChangerLeakTest.java JBR-5051 windows-all
|
||||
java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Enable.java 6847163 linux-all,windows-all
|
||||
java/awt/TrayIcon/8072769/bug8072769.java JBR-6913 windows-all
|
||||
java/awt/TrayIcon/ActionCommand/ActionCommand.java 8150540,JBR-3107 windows-all,linux-all
|
||||
java/awt/TrayIcon/ActionEventMask/ActionEventMask.java 8150540,8242801,8295300,JBR-3107 windows-all,macosx-all,linux-all
|
||||
java/awt/TrayIcon/ActionEventTest/ActionEventTest.java 8150540,8242801 windows-all,macosx-all
|
||||
@@ -318,7 +322,7 @@ java/awt/Window/ShapedAndTranslucentWindows/Translucent.java 8222328 windows-all
|
||||
java/awt/Window/AlwaysOnTop/AlwaysOnTopEvenOfWindow.java JBR-6686 linux-aarch64
|
||||
java/awt/Window/AlwaysOnTop/AutoTestOnTop.java 6847593,8253184 linux-all,windows-all
|
||||
java/awt/Window/AlwaysOnTop/TestAlwaysOnTopBeforeShow.java JBR-6661 windows-all
|
||||
java/awt/Window/Grab/GrabTest.java 8253184 windows-all
|
||||
java/awt/Window/Grab/GrabTest.java 8253184,JBR-6922 windows-all,linux-all
|
||||
java/awt/Window/GrabSequence/GrabSequence.java 6848409 macosx-all,linux-all
|
||||
java/awt/Window/LocationAtScreenCorner/LocationAtScreenCorner.java 8203371 linux-all
|
||||
java/awt/FontClass/FontAccess.java JBR-5225 windows-all
|
||||
@@ -685,9 +689,9 @@ java/awt/event/MouseEvent/RobotLWTest/RobotLWTest.java 8233568,JBR-5583 macosx-a
|
||||
java/awt/event/MouseEvent/ClickDuringKeypress/ClickDuringKeypress.java 8233568,JBR-5915 macosx-all,linux-all
|
||||
java/awt/event/KeyEvent/DeadKey/DeadKeyMacOSXInputText.java 8233568 macosx-all
|
||||
java/awt/event/KeyEvent/DeadKey/deadKeyMacOSX.java 8233568 macosx-all
|
||||
java/awt/TrayIcon/RightClickWhenBalloonDisplayed/RightClickWhenBalloonDisplayed.java 8238720 windows-all
|
||||
java/awt/TrayIcon/RightClickWhenBalloonDisplayed/RightClickWhenBalloonDisplayed.java 8238720,JBR-6931 windows-all,linux-aarch64
|
||||
java/awt/Paint/bug8024864.java JBR-6544 generic-all
|
||||
java/awt/Paint/ComponentIsNotDrawnAfterRemoveAddTest/ComponentIsNotDrawnAfterRemoveAddTest.java 8253184 windows-all
|
||||
java/awt/Paint/ComponentIsNotDrawnAfterRemoveAddTest/ComponentIsNotDrawnAfterRemoveAddTest.java 8253184,JBR-6844 windows-all,linux-all
|
||||
java/awt/Paint/ListRepaint.java JBR-5060 linux-all
|
||||
java/awt/Paint/PaintNativeOnUpdate.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
|
||||
java/awt/PopupMenu/PopupMenuLocation.java 8238720 windows-all
|
||||
@@ -717,6 +721,7 @@ java/awt/Window/GetScreenLocation/GetScreenLocationTest.java 8225787,8253184 lin
|
||||
|
||||
# jdk_beans
|
||||
|
||||
java/beans/Beans/TypoInBeanDescription.java JBR-6916 windows-x64
|
||||
java/beans/Introspector/8132566/OverridePropertyInfoTest.java 8132565 generic-all
|
||||
java/beans/Introspector/8132566/OverrideUserDefPropertyInfoTest.java 8132565 generic-all
|
||||
|
||||
@@ -972,6 +977,7 @@ javax/swing/JPopupMenu/4760494/bug4760494.java 8253184 windows-all
|
||||
javax/swing/JPopupMenu/4870644/bug4870644.java 8194130 macosx-all,linux-all
|
||||
javax/swing/JPopupMenu/4966112/bug4966112.java 8253184 windows-all
|
||||
javax/swing/JPopupMenu/6415145/bug6415145.java 8197552 windows-all
|
||||
javax/swing/JPopupMenu/6495920/bug6495920.java JBR-6928 linux-x64
|
||||
javax/swing/JPopupMenu/6515446/bug6515446.java 8197552,JBR-6531 windows-all,linux-all
|
||||
javax/swing/JPopupMenu/6544309/bug6544309.java JBR-6532 windows-all,linux-all
|
||||
javax/swing/JPopupMenu/6675802/bug6675802.java JBR-5767 windows-all
|
||||
@@ -979,6 +985,7 @@ javax/swing/JPopupMenu/6800513/bug6800513.java 7184956,JBR-6533 macosx-all,linux
|
||||
javax/swing/JPopupMenu/6827786/bug6827786.java JBR-6657 linux-all,windows-x64
|
||||
javax/swing/JPopupMenu/6987844/bug6987844.java JBR-6718 linux-all,windows-all
|
||||
javax/swing/JPopupMenu/8075063/ContextMenuScrollTest.java JBR-6717 linux-all
|
||||
javax/swing/JPopupMenu/8173739/TestPopupMenu.java JBR-6959 linux-aarch64
|
||||
javax/swing/JPopupMenu/SetInvokerJPopupMenuTest.java JBR-6021 linux-all
|
||||
javax/swing/JRadioButton/8033699/bug8033699.java 8197552 windows-all
|
||||
javax/swing/JRadioButton/8075609/bug8075609.java 8197552,8266085,JBR-5510 windows-all,linux-5.18.2-arch1-1
|
||||
@@ -1020,7 +1027,7 @@ javax/swing/JFileChooser/8062561/bug8062561.java JBR-5767,JBR-5808 windows-all
|
||||
javax/swing/JFileChooser/8194044/FileSystemRootTest.java JBR-5767 windows-all
|
||||
javax/swing/JFileChooser/ShellFolderQueries/ShellFolderQueriesSecurityManagerTest.java JBR-5767 windows-all
|
||||
javax/swing/JFrame/8016356/bug8016356.java JBR-108 windows-all
|
||||
javax/swing/JFrame/8175301/ScaledFrameBackgroundTest.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JFrame/8175301/ScaledFrameBackgroundTest.java JBR-5510,JBR-6999 linux-5.18.2-arch1-1,windows-x64,macosx-64
|
||||
javax/swing/JScrollPane/HorizontalMouseWheelOnShiftPressed/HorizontalMouseWheelOnShiftPressed.java 8197552 windows-all
|
||||
javax/swing/JSplitPane/4885629/bug4885629.java 8019935,JBR-5510 macosx-all,linux-5.18.2-arch1-1
|
||||
javax/swing/JTabbedPane/4361477/bug4361477.java JBR-5932 linux-all
|
||||
@@ -1031,6 +1038,7 @@ javax/swing/JToggleButton/TestSelectedKey.java JBR-5846 windows-all
|
||||
javax/swing/JToolBar/4529206/bug4529206.java JBR-5387 linux-all
|
||||
javax/swing/JToolTip/6219960/bug6219960.java 8253184 windows-all
|
||||
javax/swing/SwingUtilities/TestBadBreak/TestBadBreak.java 8160720 generic-all
|
||||
javax/swing/system/6799345/TestShutdown.java JBR-6881 windows-all
|
||||
javax/swing/text/AbstractDocument/8190763/TestCCEOnEditEvent.java JBR-5799 windows-all
|
||||
javax/swing/text/DefaultCaret/HidingSelection/HidingSelectionTest.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/text/TableView/TableViewLayoutTest.java 8194936,JBR-4316,JBR-5510 linux-5.18.2-arch1-1,linux-all
|
||||
@@ -1046,12 +1054,12 @@ javax/swing/JInternalFrame/6647340/bug6647340.java 8253184 windows-all
|
||||
javax/swing/JInternalFrame/8145060/TestJInternalFrameMinimize.java JBR-788 windows-all,linux-all
|
||||
javax/swing/JInternalFrame/8145896/TestJInternalFrameMaximize.java JBR-5539 windows-all,,linux-5.18.2-arch1-1
|
||||
javax/swing/JInternalFrame/Test6325652.java JBR-6111 windows-all
|
||||
javax/swing/JInternalFrame/Test6505027.java JBR-5954 linux-all,osx-all
|
||||
javax/swing/JInternalFrame/Test6505027.java JBR-5954 linux-all,macosx-all
|
||||
javax/swing/JInternalFrame/Test6802868.java 8253184 windows-all
|
||||
javax/swing/ProgressMonitor/ProgressMonitorEscapeKeyPress.java JBR-5210 windows-all
|
||||
javax/swing/dnd/8139050/NativeErrorsInTableDnD.java 8202765,JBR-5210 macosx-all,linux-all,windows-all
|
||||
javax/swing/JEditorPane/6917744/bug6917744.java 8213124 macosx-all
|
||||
javax/swing/JEditorPane/8195095/ImageViewTest.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
|
||||
javax/swing/JEditorPane/8195095/ImageViewTest.java 8253184,JBR-5510,JBR-6283 windows-all,linux-5.18.2-arch1-1,macosx-all
|
||||
javax/swing/JRadioButton/4314194/bug4314194.java 8298153 linux-all
|
||||
javax/swing/JRootPane/4670486/bug4670486.java 8042381,8197552 macosx-all,windows-all
|
||||
javax/swing/JRootPane/DefaultButtonTest.java JBR-5739 windows-all,linux-all
|
||||
@@ -1068,6 +1076,7 @@ javax/swing/JInternalFrame/5066752/bug5066752.java 8253184,JBR-5510 windows-all,
|
||||
javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java JBR-5510,JBR-6546 linux-5.18.2-arch1-1,windows-x64
|
||||
javax/swing/JInternalFrame/8020708/bug8020708.java JBR-4879,JBR-6512 windows-all,linux-all
|
||||
javax/swing/JInternalFrame/8069348/bug8069348.java 8253184,JBR-900 windows-all,linux-all
|
||||
javax/swing/reliability/HangDuringStaticInitialization.java JBR-6958 windows-aarch64
|
||||
javax/swing/reliability/TaskUndJFrameProperties.java JBR-6586 windows-x64
|
||||
javax/swing/ToolTipManager/Test6256140.java 8197552 windows-all
|
||||
javax/swing/text/DefaultEditorKit/4278839/bug4278839.java CODETOOLS-7901623 windows-all
|
||||
@@ -1077,7 +1086,7 @@ javax/swing/text/JTextComponent/6361367/bug6361367.java JBR-5210 windows-all
|
||||
javax/swing/text/StyledEditorKit/4506788/bug4506788.java JBR-180 windows-all
|
||||
javax/swing/text/View/8014863/bug8014863.java JBR-5541 windows-all,linux-all
|
||||
javax/swing/text/View/8156217/FPMethodCalledTest.java JBR-5541 linux-all
|
||||
javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java JBR-5952,JBR-6061 windows-x64,macosx-all
|
||||
javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java JBR-5952,JBR-6061 windows-all,macosx-all
|
||||
javax/swing/UIDefaults/6795356/TableTest.java JBR-5767 windows-all
|
||||
java/awt/Robot/HiDPIScreenCapture/HiDPIRobotScreenCaptureTest.java 8253184,JBR-1656 windows-all,linux-all
|
||||
java/awt/Robot/HiDPIScreenCapture/ScreenCaptureTest.java 8253184,JBR-5510 windows-all,linux-5.18.2-arch1-1
|
||||
@@ -1239,7 +1248,7 @@ java/awt/TextArea/TextAreaCaretVisibilityTest/bug7129742.java JBR-5439 linux-all
|
||||
java/awt/TextArea/TextAreaCursorTest/HoveringAndDraggingTest.java 8024986 macosx-all,linux-all
|
||||
java/awt/TextArea/TextAreaTwicePack/TextAreaTwicePack.java 8253184 windows-all
|
||||
java/awt/TextField/OverScrollTest/OverScrollTest.java 8253184 windows-all
|
||||
java/awt/TextField/SelectionInvisibleTest/SelectionInvisibleTest.java JBR-6748 linux-x64
|
||||
java/awt/TextField/SelectionInvisibleTest/SelectionInvisibleTest.java JBR-6748 linux-all
|
||||
java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.java 8256289 windows-all
|
||||
java/awt/Focus/RequestFocusByCause/RequestFocusByCauseTest.java JBR-6335 linux-all
|
||||
java/awt/Focus/RequestOnCompWithNullParent/RequestOnCompWithNullParent1.java JBR-6507 linux-all
|
||||
@@ -1298,7 +1307,6 @@ javax/swing/SwingUtilities/4917669/bug4917669.java
|
||||
javax/swing/SwingUtilities/7088744/bug7088744.java JBR-4677 windows-all
|
||||
javax/swing/SwingUtilities/7146377/bug7146377.java JBR-4679 windows-all
|
||||
|
||||
java/awt/dnd/AcceptDropMultipleTimes/AcceptDropMultipleTimes.java JBR-4880 windows-all
|
||||
java/awt/event/KeyEvent/DeadKey/DeadKeySystemAssertionDialog.java JBR-4880,JBR-5706 windows-all,linux-all
|
||||
java/awt/event/KeyEvent/KeyCharTest/KeyCharTest.java JBR-4880 windows-all
|
||||
java/awt/Frame/LayoutOnMaximizeTest/LayoutOnMaximizeTest.java JBR-4880 windows-all
|
||||
@@ -1318,7 +1326,7 @@ javax/swing/JSpinner/SpinnerTest.java JBR-4880 windows-all
|
||||
javax/swing/JSpinner/TestJSpinnerFocusLost.java JBR-5210 windows-all
|
||||
javax/swing/JTable/7068740/bug7068740.java 8197552,JBR-6680 windows-all,linux-all
|
||||
javax/swing/JTable/7124218/SelectEditTableCell.java JBR-6679 linux-all,windows-all
|
||||
javax/swing/JTable/8236907/LastVisibleRow.java JBR-6066 macosx-aarch64,linux-aarch64
|
||||
javax/swing/JTable/8236907/LastVisibleRow.java JBR-6066 generic-all
|
||||
javax/swing/JTable/BugCellEditorListener.java JBR-6678 linux-all,windows-all
|
||||
javax/swing/JTable/JTableOrientationNavTest/JTableOrientationNavTest.java JBR-6836 linux-all
|
||||
javax/swing/text/CSSBorder/6796710/bug6796710.java JBR-6465 windows-all,linux-aarch64
|
||||
@@ -1345,6 +1353,7 @@ jb/javax/swing/JDialog/JDialog705.java JBR-4934 generic-all
|
||||
jb/javax/swing/JEditorPane/ZeroMargin.java JBR-2256 generic-all
|
||||
jb/javax/swing/JPopupMenu/JPopupMenuOutOfWindowTest.java JBR-5746 windows-all,linux-all
|
||||
|
||||
jb/java/awt/Window/BackgroundWindowOrderOnSpaceChange.java JBR-6486 macosx-all
|
||||
jb/java/awt/Window/ModalDialogAndPopup.java JBR-4984 macosx-all
|
||||
jb/java/awt/Window/ZOrderOnModalDialogActivation.java JBR-5714 windows-all
|
||||
jb/java/api/frontend/CustomTitleBarDoubleClick.java JBR-4912 windows-all
|
||||
@@ -1392,7 +1401,7 @@ java/awt/Mixing/LWPopupMenu.java JBR-824 generic-all
|
||||
java/awt/Mixing/OpaqueTest.java JBR-5707 linux-all
|
||||
java/awt/Mixing/OverlappingButtons.java JBR-5707 linux-all
|
||||
java/awt/Window/BackgroundIsNotUpdated/BackgroundIsNotUpdated.java JBR-5510 linux-5.18.2-arch1-1
|
||||
java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java JBR-5510 linux-5.18.2-arch1-1
|
||||
java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java JBR-4280 linux-all,macosx-all
|
||||
javax/swing/JComponent/7154030/bug7154030.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JEditorPane/TestBrowserBGColor.java JBR-5510 linux-5.18.2-arch1-1
|
||||
javax/swing/JRadioButton/8041561/bug8041561.java JBR-5510 linux-5.18.2-arch1-1
|
||||
@@ -1410,7 +1419,7 @@ jb/java/awt/CustomTitleBar/HitTestNonClientArea.java JBR-5465,JBR-5550 windows-a
|
||||
jb/java/awt/CustomTitleBar/MaximizeWindowTest.java JBR-5465,JBR-5550 windows-all
|
||||
jb/java/awt/CustomTitleBar/MaximizedWindowFocusTest.java JBR-5828 windows-all
|
||||
jb/java/awt/CustomTitleBar/MinimizingWindowTest.java JBR-5345 windows-x64
|
||||
jb/java/awt/CustomTitleBar/MouseEventsOnClientArea.java JBR-5910 windows-x64
|
||||
jb/java/awt/CustomTitleBar/MouseEventsOnClientArea.java JBR-6914 windows-all
|
||||
jb/java/awt/CustomTitleBar/NativeControlsVisibilityTest.java JBR-5345,JBR-6835 windows-all,macosx-all
|
||||
jb/java/awt/CustomTitleBar/WindowsControlWidthTest.java JBR-5345 windows-all
|
||||
jb/java/awt/CustomTitleBar/WindowResizeTest.java JBR-5592 windows-all
|
||||
|
||||
@@ -49,6 +49,7 @@ 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/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/JComboBox/TestComboBoxComponentRendering.java JBR-6100 linux-all
|
||||
@@ -58,6 +59,7 @@ javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradien
|
||||
|
||||
jb/java/awt/event/MouseEvent/ReleaseAndClickModifiers.java JBR-6589 windows-all
|
||||
|
||||
sanity/client/SwingSet/src/InternalFrameDemoTest.java 8253184,JBR-6685 windows-all,linux-all
|
||||
sanity/client/SwingSet/src/ToolTipDemoTest.java 8293001,JBR-6293 linux-all,windows-all
|
||||
sun/java2d/GdiRendering/ClipShapeRendering.java JBR-5204 linux-all,macosx-all,windows-all
|
||||
|
||||
@@ -65,9 +67,13 @@ sun/java2d/GdiRendering/ClipShapeRendering.java JBR-5204 linux-all,macosx-all,wi
|
||||
# the below tests are not intended to be executed in S2 configurations because
|
||||
# the tests contains tags to be launched for various scales including S2
|
||||
#
|
||||
java/awt/Robot/HiDPIScreenCapture/HiDPIRobotScreenCaptureTest.java nobug generic-all
|
||||
java/awt/Graphics/XORPaint.java#id0 nobug generic-all
|
||||
java/awt/Graphics2D/LargeWindowPaintTest.java#ZGenerational nobug generic-all
|
||||
java/awt/Graphics2D/LargeWindowPaintTest.java#ZSinglegen nobug generic-all
|
||||
java/awt/Graphics2D/LargeWindowPaintTest.java#default nobug generic-all
|
||||
java/awt/Mouse/GetMousePositionTest/GetMousePositionWithPopup.java nobug generic-all
|
||||
java/awt/Paint/PaintNativeOnUpdate.java nobug generic-all
|
||||
java/awt/Robot/HiDPIScreenCapture/HiDPIRobotScreenCaptureTest.java nobug generic-all
|
||||
java/awt/Window/MultiWindowApp/ChildAlwaysOnTopTest.java nobug generic-all
|
||||
javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java nobug generic-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedTranslucentPerPixelTranslucentGradient.java nobug generic-all
|
||||
@@ -101,7 +107,6 @@ jb/java/awt/Focus/PopupFromMenuTest.java JBR-5799 windows-all
|
||||
jb/java/awt/Focus/PopupIncomingFocusTest.java JBR-2651 generic-all
|
||||
jb/java/awt/Focus/RequestFocusInParent.java JBR-5715 windows-all
|
||||
jb/java/awt/Focus/SecondLevelPopupTest.java JBR-6090 windows-all
|
||||
jb/java/awt/Window/BackgroundWindowOrderOnSpaceChange.java JBR-6486 macosx-all
|
||||
jb/java/awt/Window/UndecoratedDialogInTransientsChain.java JBR-6090 windows-all
|
||||
jb/java/awt/Window/ZOrderOnModalDialogActivation.java JBR-5713 windows-all
|
||||
jdk/editpad/EditPadTest.java JBR-5712 windows-all
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user