diff --git a/.hgtags b/.hgtags index e774b097c5e65c5aa6852023a73930bc82c4f921..dbc8d128f1fc8a13dd860005ac1021230eebd628 100644 --- a/.hgtags +++ b/.hgtags @@ -195,3 +195,4 @@ a996b57e554198f4592a5f3c30f2f9f4075e545d jdk8-b70 2a5af0f766d0acd68a81fb08fe11fd66795f86af jdk8-b71 32a57e645e012a1f0665c075969ca598e0dbb948 jdk8-b72 733885f57e14cc27f5a5ff0dffe641d2fa3c704a jdk8-b73 +57d5d954462831ac353a1f40d3bb05ddb4620952 jdk8-b74 diff --git a/make/Makefile b/make/Makefile index ceb1492bb4ead52460cc683696cad3ba1198b644..c2db5a816a2b2a27b211cfb230b0216091b03f42 100644 --- a/make/Makefile +++ b/make/Makefile @@ -237,6 +237,9 @@ SUBDIRS = tools java javax sun com jdk ifeq ($(PLATFORM), macosx) SUBDIRS += apple endif +ifeq ($(PLATFORM), windows) + SUBDIRS += bridge +endif SUBDIRS_tools = launchers SUBDIRS_misc = org jpda diff --git a/make/bridge/AccessBridgeJava/Makefile b/make/bridge/AccessBridgeJava/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..c5bebd02cea3121d930428d009f99eaa9ead818e --- /dev/null +++ b/make/bridge/AccessBridgeJava/Makefile @@ -0,0 +1,93 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. 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. +# + +# +# Makefile for building AccessBridge +# +BUILDDIR = ../.. +PRODUCT = java +PACKAGE = com.sun.java.accessibility + +include $(BUILDDIR)/common/Defs.gmk +JARFILE = $(EXTDIR)/access-bridge$(ABSUFFIX).jar + +ifeq ($(ARCH_DATA_MODEL), 64) + ABPLATFORM = 64bit + ABSUFFIX = -64 +else +ifeq ($(ARCH_DATA_MODEL), 32) +ifdef ABLEGACY + ABSUFFIX = + ABPLATFORM = legacy +else + ABPLATFORM = 32bit + ABSUFFIX = -32 +endif +endif +endif + +# +# Java files to compile. +# +FILES_java = com/sun/java/accessibility/AccessBridge.java + +# +# Location for the newly built classfiles. +# +CLASSDESTDIR = $(TEMPDIR)/classes + +# +# Rules +# +CLASSDESTDIR = $(TEMPDIR)/classes + +FILES_class = $(FILES_java:%.java=$(CLASSDESTDIR)/%.class) + +build: prebuild + +prebuild: + $(CP) $(CLOSED_PLATFORM_SRC)/classes/com/sun/java/accessibility/$(ABPLATFORM)/AccessBridge.java \ + $(CLOSED_PLATFORM_SRC)/classes/com/sun/java/accessibility + +all : build $(JARFILE) + +# +# JAR file +# +$(JARFILE): \ + $(FILES_class) + $(BOOT_JAR_CMD) -cf $(JARFILE) \ + -C $(CLASSDESTDIR) com \ + $(BOOT_JAR_JFLAGS) + @$(java-vm-cleanup) + +# +# Rules +# +include $(BUILDDIR)/common/Classes.gmk + +clean clobber:: + $(RM) -r $(CLASSDESTDIR) \ + $(EXTDIR)/$(JARFILE) diff --git a/make/bridge/JAWTAccessBridge/Files_cpp.gmk b/make/bridge/JAWTAccessBridge/Files_cpp.gmk new file mode 100644 index 0000000000000000000000000000000000000000..5527f825b9f90ade4860ddde3d47319a9694f58b --- /dev/null +++ b/make/bridge/JAWTAccessBridge/Files_cpp.gmk @@ -0,0 +1,29 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. 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. +# + +# +# Native files to compile. +FILES_cpp = \ + JAWTAccessBridge.cpp diff --git a/make/bridge/JAWTAccessBridge/Makefile b/make/bridge/JAWTAccessBridge/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..7ca80afdbf7973ebede7b7cbcf43cf34d903c645 --- /dev/null +++ b/make/bridge/JAWTAccessBridge/Makefile @@ -0,0 +1,69 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. 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. +# + +# +# Makefile for building JAWTAccessBridge +# + +BUILDDIR = ../.. +LIBRARY = JAWTAccessBridge$(ABSUFFIX) +include $(BUILDDIR)/common/Defs.gmk + +# Indicate we want the C++ compiler to do the linking. +CPLUSPLUSLIBRARY=true + +ifeq ($(ARCH_DATA_MODEL), 64) + ABSUFFIX = -64 + ACCESSBRIDGE_ARCH = ACCESSBRIDGE_ARCH_64 + ABRIDGE_MACHINE=X64 +else +ifeq ($(ARCH_DATA_MODEL), 32) + ABRIDGE_MACHINE=I386 +ifdef ABLEGACY + ABSUFFIX = + ACCESSBRIDGE_ARCH = ACCESSBRIDGE_ARCH_LEGACY +else + ABSUFFIX = -32 + ACCESSBRIDGE_ARCH = ACCESSBRIDGE_ARCH_32 +endif +endif +endif + +include FILES_cpp.gmk + +VERSIONINFO_RESOURCE = $(CLOSED_PLATFORM_SRC)/native/sun/bridge/AccessBridgeStatusWindow.rc + +OTHER_CPPFLAGS += -D$(ACCESSBRIDGE_ARCH) -I "$(INCLUDEDIR)" -I "$(PLATFORM_INCLUDE)" +LDLIBS += kernel32.lib user32.lib gdi32.lib winspool.lib jawt.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \ + uuid.lib odbc32.lib odbccp32.lib /subsystem:windows /dll /incremental:no /machine:$(ABRIDGE_MACHINE) \ + /def:$(CLOSED_PLATFORM_SRC)/native/sun/bridge/JAWTAccessBridge.DEF /libpath:"$(LIBDIR)" + +# +# Rules +# +include $(BUILDDIR)/common/Library.gmk + +vpath %.cpp $(CLOSED_PLATFORM_SRC)/native/sun/bridge +vpath %.RC $(CLOSED_PLATFORM_SRC)/native/sun/bridge diff --git a/make/bridge/Jabswitch/Makefile b/make/bridge/Jabswitch/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..efd65e07a4296ead49b78f4fba6d0514a884fe97 --- /dev/null +++ b/make/bridge/Jabswitch/Makefile @@ -0,0 +1,63 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. 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. +# + +# +# Makefile for building jabswitch.exe +# + +BUILDDIR = ../.. +PROGRAM = jabswitch +include $(BUILDDIR)/common/Defs.gmk + +# Indicate we want the C++ compiler to do the linking. +CPLUSPLUSLIBRARY=true + +VERSIONINFO_RESOURCE = $(CLOSED_PLATFORM_SRC)/native/sun/bridge/AccessBridgeStatusWindow.rc +VERSIONRES = $(TEMPDIR)/AccessBridgeStatusWindow.res + +JAB_EXE= $(TEMPDIR)/jabswitch.exe + +JAB_SRC = $(CLOSED_PLATFORM_SRC)/native/sun/bridge/jabswitch.cpp + +JAB_MANIFEST_INP = $(CLOSED_PLATFORM_SRC)/native/sun/bridge/jabswitch.manifest +JAB_MANIFEST_OUT = $(TEMPDIR)/jabswitch.exe.intermediate.manifest + +RC_FLAGS += /fo "$(VERSIONRES)" +OTHER_CPPFLAGS += /MD /Fo"$(TEMPDIR)/" /Fd"$(TEMPDIR)/" /analyze- /Od /Gd /nologo /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /RTC1 /W3 /ZI /Zc:wchar_t /EHsc +LDDFLAGS += Advapi32.lib Version.lib User32.lib + +all: buildexe copyfilejab + +buildexe : + $(CD) $(TEMPDIR) + $(RC) $(RC_FLAGS) $(VERSIONINFO_RESOURCE) + $(CC) $(CPPFLAGS) $(JAB_SRC) $(LDDFLAGS) $(VERSIONRES) -o $(JAB_EXE) + $(MT) /nologo /verbose /manifest $(JAB_MANIFEST_INP) /outputresource:$(JAB_EXE) + +copyfilejab : + $(CP) $(JAB_EXE) $(BINDIR) + +vpath %.cpp $(CLOSED_PLATFORM_SRC)/native/sun/bridge +vpath %.rc $(CLOSED_PLATFORM_SRC)/native/sun/bridge diff --git a/make/bridge/Jaccess/Makefile b/make/bridge/Jaccess/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..df57536943ef3c13ba80d220d92b6eb71b1cae72 --- /dev/null +++ b/make/bridge/Jaccess/Makefile @@ -0,0 +1,85 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. 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. +# + +# +# Makefile for building jaccess +# +BUILDDIR = ../.. +PRODUCT = java +PACKAGE = com.sun.java.accessibility.jaccess + +include $(BUILDDIR)/common/Defs.gmk +JARFILE = $(EXTDIR)/jaccess.jar + +# +# Java files to compile. +# +#AUTO_FILES_JAVA_DIRS = $(CLOSED_PLATFORM_SRC)/bridge +FILES_java = \ + com/sun/java/accessibility/util/AccessibilityEventMonitor.java \ + com/sun/java/accessibility/util/AccessibilityListenerList.java \ + com/sun/java/accessibility/util/AWTEventMonitor.java \ + com/sun/java/accessibility/util/EventID.java \ + com/sun/java/accessibility/util/EventQueueMonitor.java \ + com/sun/java/accessibility/util/GUIInitializedListener.java \ + com/sun/java/accessibility/util/GUIInitializedMulticaster.java \ + com/sun/java/accessibility/util/SwingEventMonitor.java \ + com/sun/java/accessibility/util/TopLevelWindowListener.java \ + com/sun/java/accessibility/util/TopLevelWindowMulticaster.java \ + com/sun/java/accessibility/util/Translator.java \ + com/sun/java/accessibility/util/java/awt/ButtonTranslator.java \ + com/sun/java/accessibility/util/java/awt/CheckboxTranslator.java \ + com/sun/java/accessibility/util/java/awt/LabelTranslator.java \ + com/sun/java/accessibility/util/java/awt/ListTranslator.java \ + com/sun/java/accessibility/util/java/awt/TextComponentTranslator.java + +# +# Rules +# +CLASSDESTDIR = $(TEMPDIR)/classes + +FILES_class = $(FILES_java:%.java=$(CLASSDESTDIR)/%.class) + +all : build $(JARFILE) + +# +# JAR file +# +$(JARFILE): \ + $(FILES_class) + $(BOOT_JAR_CMD) -cf $(JARFILE) \ + -C $(CLASSDESTDIR) com \ + $(BOOT_JAR_JFLAGS) + @$(java-vm-cleanup) + + +# +# Rules +# +include $(BUILDDIR)/common/Classes.gmk + +clean clobber:: + $(RM) -r $(CLASSDESTDIR) \ + $(EXTDIR)/$(JARFILE) diff --git a/make/bridge/JavaAccessBridge/Files_cpp.gmk b/make/bridge/JavaAccessBridge/Files_cpp.gmk new file mode 100644 index 0000000000000000000000000000000000000000..3d197be7d4bc585d63c188f7efa03226b085e361 --- /dev/null +++ b/make/bridge/JavaAccessBridge/Files_cpp.gmk @@ -0,0 +1,33 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. 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. +# + +# +# Native files to compile. +FILES_cpp = \ + AccessBridgeATInstance.cpp \ + AccessBridgeDebug.cpp \ + AccessBridgeJavaEntryPoints.cpp \ + AccessBridgeMessages.cpp \ + JavaAccessBridge.cpp diff --git a/make/bridge/JavaAccessBridge/Makefile b/make/bridge/JavaAccessBridge/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..6637a777326f7f61f2cd463459330d69a2710c4e --- /dev/null +++ b/make/bridge/JavaAccessBridge/Makefile @@ -0,0 +1,90 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. 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. +# + +# +# Makefile for building JavaAccessBridge.DLL +# + +BUILDDIR = ../.. +LIBRARY = JavaAccessBridge$(ABSUFFIX) +include $(BUILDDIR)/common/Defs.gmk + +# Indicate we want the C++ compiler to do the linking. +CPLUSPLUSLIBRARY=true + +ifeq ($(ARCH_DATA_MODEL), 64) + ABSUFFIX = -64 + ACCESSBRIDGE_ARCH = ACCESSBRIDGE_ARCH_64 + ABRIDGE_MACHINE=X64 +else +ifeq ($(ARCH_DATA_MODEL), 32) + ABRIDGE_MACHINE=I386 +ifdef ABLEGACY + ABSUFFIX = + ACCESSBRIDGE_ARCH = ACCESSBRIDGE_ARCH_LEGACY +else + ABSUFFIX = -32 + ACCESSBRIDGE_ARCH = ACCESSBRIDGE_ARCH_32 +endif +endif +endif + +include FILES_cpp.gmk + +PLATFORM_INCLUDE_BRIDGE = $(PLATFORM_INCLUDE)/bridge + +VERSIONINFO_RESOURCE = $(CLOSED_PLATFORM_SRC)/native/sun/bridge/AccessBridgeStatusWindow.rc + +OTHER_CPPFLAGS += -D$(ACCESSBRIDGE_ARCH) -I "$(INCLUDEDIR)" -I "$(PLATFORM_INCLUDE)" +LDLIBS += kernel32.lib user32.lib gdi32.lib winspool.lib jawt.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \ + odbc32.lib odbccp32.lib /subsystem:windows /dll /incremental:no /machine:$(ABRIDGE_MACHINE) \ + /def:$(CLOSED_PLATFORM_SRC)/native/sun/bridge/JavaAccessBridge.DEF /libpath:"$(LIBDIR)" + +all : build postbuild + +postbuild : + $(MKDIR) -p $(PLATFORM_INCLUDE_BRIDGE) + $(CP) $(CLOSED_PLATFORM_SRC)/native/sun/bridge/accessibility.properties $(LIBDIR) + $(CP) $(CLOSED_PLATFORM_SRC)/native/sun/bridge/AccessBridgeCallbacks.h $(PLATFORM_INCLUDE_BRIDGE) + $(CP) $(CLOSED_PLATFORM_SRC)/native/sun/bridge/AccessBridgeCalls.h $(PLATFORM_INCLUDE_BRIDGE) + $(CP) $(CLOSED_PLATFORM_SRC)/native/sun/bridge/AccessBridgePackages.h $(PLATFORM_INCLUDE_BRIDGE) + $(CP) $(CLOSED_PLATFORM_SRC)/native/sun/bridge/AccessBridgeCalls.c $(PLATFORM_INCLUDE_BRIDGE) + +# +# Rules +# +include $(BUILDDIR)/common/Library.gmk + +vpath %.cpp $(CLOSED_PLATFORM_SRC)/native/sun/bridge +vpath %.DEF $(CLOSED_PLATFORM_SRC)/native/sun/bridge +vpath %.rc $(CLOSED_PLATFORM_SRC)/native/sun/bridge +vpath %.c $(CLOSED_PLATFORM_SRC)/native/sun/bridge +vpath %.h $(CLOSED_PLATFORM_SRC)/native/sun/bridge + +# +# Extra clean rule. +# +clean clobber:: + $(RM) $(FILES_h) diff --git a/make/bridge/Makefile b/make/bridge/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..6703a21d753a8defdffa815c2837c355298ef44b --- /dev/null +++ b/make/bridge/Makefile @@ -0,0 +1,65 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. 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. +# + +# +# Makefile for building Java Access Bridge +# + +BUILDDIR = .. +include $(BUILDDIR)/common/Defs.gmk + +# +# +ifndef OPENJDK +ifeq ($(PLATFORM), windows) +include $(BUILDDIR)/common/Subdirs.gmk + +# +# build for 32 and 64 bit (new api) +# +SUBDIRS = Jaccess JavaAccessBridge WindowsAccessBridge JAWTAccessBridge AccessBridgeJava Jabswitch +# +# build for legacy +# +ifeq ($(ARCH_DATA_MODEL), 32) +OTHERSUBDIRS_MAKEFLAGS += ABLEGACY=true +OTHERSUBDIRS = JavaAccessBridge WindowsAccessBridge JAWTAccessBridge AccessBridgeJava +endif + +ifeq ($(ARCH_DATA_MODEL), 32) +all build clean clobber :: + $(SUBDIRS-loop) + $(OTHERSUBDIRS-loop) +else +all build clean clobber :: + $(SUBDIRS-loop) +endif + +clean:: + $(RM) -r $(CLASSBINDIR) $(CLASSBINDIR) + +endif # PLATFORM +endif #OPENJDK + diff --git a/make/bridge/WindowsAccessBridge/Files_cpp.gmk b/make/bridge/WindowsAccessBridge/Files_cpp.gmk new file mode 100644 index 0000000000000000000000000000000000000000..411e2830153a8a0d716f39d486f521efea9d1bd4 --- /dev/null +++ b/make/bridge/WindowsAccessBridge/Files_cpp.gmk @@ -0,0 +1,35 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. 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. +# + +# +# Native files to compile. +FILES_cpp = \ + AccessBridgeJavaVMInstance.cpp \ + AccessBridgeMessageQueue.cpp \ + AccessBridgeMessages.cpp \ + AccessBridgeWindowsEntryPoints.cpp \ + WinAccessBridge.cpp \ + AccessBridgeDebug.cpp \ + AccessBridgeEventHandler.cpp diff --git a/make/bridge/WindowsAccessBridge/Makefile b/make/bridge/WindowsAccessBridge/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..f65f704e3eaea7ccdd99b0bfad8f2c8b9df9ab89 --- /dev/null +++ b/make/bridge/WindowsAccessBridge/Makefile @@ -0,0 +1,71 @@ +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. 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. +# + +# +# Makefile for building WindowsAccessBridge.dll +# + +BUILDDIR = ../.. +LIBRARY = WindowsAccessBridge$(ABSUFFIX) +include $(BUILDDIR)/common/Defs.gmk + +# Indicate we want the C++ compiler to do the linking. +CPLUSPLUSLIBRARY=true + +ifeq ($(ARCH_DATA_MODEL), 64) + ABSUFFIX = -64 + ACCESSBRIDGE_ARCH = ACCESSBRIDGE_ARCH_64 + ABRIDGE_MACHINE=X64 +else +ifeq ($(ARCH_DATA_MODEL), 32) + ABRIDGE_MACHINE=I386 +ifdef ABLEGACY + ABSUFFIX = + ACCESSBRIDGE_ARCH = ACCESSBRIDGE_ARCH_LEGACY +else + ABSUFFIX = -32 + ACCESSBRIDGE_ARCH = ACCESSBRIDGE_ARCH_32 +endif +endif +endif + +include FILES_cpp.gmk + +VERSIONINFO_RESOURCE = $(CLOSED_PLATFORM_SRC)/native/sun/bridge/AccessBridgeStatusWindow.rc + +OTHER_CPPFLAGS += -MT -D$(ACCESSBRIDGE_ARCH) -I "$(INCLUDEDIR)" -I "$(PLATFORM_INCLUDE)" +LDLIBS += kernel32.lib user32.lib gdi32.lib winspool.lib jawt.lib comdlg32.lib advapi32.lib shell32.lib \ + ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /subsystem:windows /dll /incremental:no /machine:$(ABRIDGE_MACHINE) \ + /def:$(CLOSED_PLATFORM_SRC)/native/sun/bridge/WinAccessBridge.DEF /libpath:"$(LIBDIR)" + + +# +# Rules +# +include $(BUILDDIR)/common/Library.gmk + +vpath %.cpp $(CLOSED_PLATFORM_SRC)/native/sun/bridge +vpath %.DEF $(CLOSED_PLATFORM_SRC)/native/sun/bridge +vpath %.rc $(CLOSED_PLATFORM_SRC)/native/sun/bridge diff --git a/makefiles/Bundles.gmk b/makefiles/Bundles.gmk index 05e55e3641cf3c46a70064f263fe171335ce3d9f..94b8a57a65cd05c8052e713ebddc232dd0b309a0 100644 --- a/makefiles/Bundles.gmk +++ b/makefiles/Bundles.gmk @@ -68,24 +68,25 @@ else endif -JDK_FILE_LIST := $(shell $(FIND) $(JDK_IMAGE_DIR) ! -type d) -JRE_FILE_LIST := $(shell $(FIND) $(JRE_IMAGE_DIR) ! -type d) +JDK_FILE_LIST := $(shell $(FIND) $(JDK_IMAGE_DIR)) +JRE_FILE_LIST := $(shell $(FIND) $(JRE_IMAGE_DIR)) -JDK_TARGET_LIST := $(subst $(JDK_IMAGE_DIR),$(JDK_BUNDLE_DIR)/Home,$(JDK_FILE_LIST)) -JRE_TARGET_LIST := $(subst $(JRE_IMAGE_DIR),$(JRE_BUNDLE_DIR)/Home,$(JRE_FILE_LIST)) +JDK_TARGET_LIST := $(subst $(JDK_IMAGE_DIR)/,$(JDK_BUNDLE_DIR)/Home/,$(JDK_FILE_LIST)) +JRE_TARGET_LIST := $(subst $(JRE_IMAGE_DIR)/,$(JRE_BUNDLE_DIR)/Home/,$(JRE_FILE_LIST)) # The old builds implementation of this did not preserve symlinks so # make sure they are followed and the contents copied instead. -# To fix this, just replace copy with install-file macro. +# To fix this, remove -L +# Copy empty directories (jre/lib/applet). $(JDK_BUNDLE_DIR)/Home/%: $(JDK_IMAGE_DIR)/% $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@) $(MKDIR) -p $(@D) - $(CP) -f -R -L '$<' '$@' + if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) -f -R -L '$<' '$@'; fi $(JRE_BUNDLE_DIR)/Home/%: $(JRE_IMAGE_DIR)/% $(ECHO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@) $(MKDIR) -p $(@D) - $(CP) -f -R -L '$<' '$@' + if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) -f -R -L '$<' '$@'; fi $(JDK_BUNDLE_DIR)/MacOS/libjli.dylib: $(ECHO) Creating link $(patsubst $(OUTPUT_ROOT)/%,%,$@) diff --git a/makefiles/CompileJavaClasses.gmk b/makefiles/CompileJavaClasses.gmk index abcbbfb9ffb852c8ce293b53f76b5f9d55bcf28f..584458c00c4b198723cb386e59ec876b0b23de21 100644 --- a/makefiles/CompileJavaClasses.gmk +++ b/makefiles/CompileJavaClasses.gmk @@ -59,6 +59,12 @@ ifndef OPENJDK # This gets built on unix platforms implicitly in the old build even though # it's excluded in the closed build. EXCLUDES+=sun/java2d/pisces + + # AccessBridge is compiled separately below. + EXFILES += AccessBridge.java \ + com/sun/java/accessibility/util/java/awt/ChoiceTranslator.java + # This seems to never be built + EXCLUDES += com/sun/java/accessibility/extensions endif endif @@ -248,10 +254,8 @@ include CopyIntoClasses.gmk # Now we have COPY_PATTERNS, COPY_FILES and COPY_EXTRA ifndef OPENJDK - CLOSED_SRC_DIRS:=$(JDK_TOPDIR)/src/closed/share/classes - ifneq ($(OPENJDK_TARGET_OS_API_DIR),windows) - CLOSED_SRC_DIRS += $(JDK_TOPDIR)/src/closed/$(OPENJDK_TARGET_OS_API_DIR)/classes - endif + CLOSED_SRC_DIRS:=$(JDK_TOPDIR)/src/closed/share/classes \ + $(JDK_TOPDIR)/src/closed/$(OPENJDK_TARGET_OS_API_DIR)/classes endif MACOSX_SRC_DIRS := @@ -364,8 +368,44 @@ endif ########################################################################################## -# copy with -a to preserve timestamps so dependencies down the line aren't messed up +ifndef OPENJDK +ifeq ($(OPENJDK_TARGET_OS), windows) +ifeq ($(OPENJDK_TARGET_CPU_BITS), 32) + $(eval $(call SetupJavaCompilation,BUILD_ACCESSBRIDGE_32,\ + SETUP:=GENERATE_JDKBYTECODE,\ + JAVAC_FLAGS:=-cp $(JDK_OUTPUTDIR)/classes,\ + SRC:=$(JDK_OUTPUTDIR)/gensrc_ab/32bit,\ + BIN:=$(JDK_OUTPUTDIR)/classes_ab/32bit)) + + $(BUILD_ACCESSBRIDGE_32): $(BUILD_JDK) + + $(eval $(call SetupJavaCompilation,BUILD_ACCESSBRIDGE_LEGACY,\ + SETUP:=GENERATE_JDKBYTECODE,\ + JAVAC_FLAGS:=-cp $(JDK_OUTPUTDIR)/classes,\ + SRC:=$(JDK_OUTPUTDIR)/gensrc_ab/legacy,\ + BIN:=$(JDK_OUTPUTDIR)/classes_ab/legacy)) + + $(BUILD_ACCESSBRIDGE_LEGACY): $(BUILD_JDK) + +else + + $(eval $(call SetupJavaCompilation,BUILD_ACCESSBRIDGE_64,\ + SETUP:=GENERATE_JDKBYTECODE,\ + JAVAC_FLAGS:=-cp $(JDK_OUTPUTDIR)/classes,\ + SRC:=$(JDK_OUTPUTDIR)/gensrc_ab/64bit,\ + BIN:=$(JDK_OUTPUTDIR)/classes_ab/64bit)) + + $(BUILD_ACCESSBRIDGE_64): $(BUILD_JDK) + +endif +endif +endif + +########################################################################################## + all: $(BUILD_JDK) $(BUILD_ALTCLASSES) $(BUILD_JOBJC) $(BUILD_JOBJC_HEADERS) $(COPY_EXTRA) \ - $(JDK_OUTPUTDIR)/classes/META-INF/services/com.sun.tools.xjc.Plugin + $(JDK_OUTPUTDIR)/classes/META-INF/services/com.sun.tools.xjc.Plugin \ + $(BUILD_ACCESSBRIDGE_32) $(BUILD_ACCESSBRIDGE_64) \ + $(BUILD_ACCESSBRIDGE_LEGACY) .PHONY: all diff --git a/makefiles/CompileLaunchers.gmk b/makefiles/CompileLaunchers.gmk index 354fea12044a87404d7d93f96974acc30e47d2cf..170dc164ec4061cab7fc7071a9ff3be12faee3d6 100644 --- a/makefiles/CompileLaunchers.gmk +++ b/makefiles/CompileLaunchers.gmk @@ -590,6 +590,34 @@ else $(CHMOD) a+x $@ endif +########################################################################################## +# jabswitch + +ifndef OPENJDK +ifeq ($(OPENJDK_TARGET_OS),windows) + + $(eval $(call SetupNativeCompilation,BUILD_JABSWITCH,\ + SRC:=$(JDK_TOPDIR)/src/closed/windows/native/sun/bridge,\ + INCLUDE_FILES:=jabswitch.cpp,\ + LANG:=C++,\ + CFLAGS:=$(filter-out -Zc:wchar_t-,$(CFLAGS_JDKEXE)) -Zc:wchar_t \ + -analyze- -Od -Gd -D_WINDOWS \ + -D_UNICODE -DUNICODE -RTC1 -EHsc,\ + LDFLAGS:=$(LDFLAGS_JDKEXE) \ + Advapi32.lib Version.lib User32.lib,\ + OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/jabswitch,\ + OUTPUT_DIR:=$(JDK_OUTPUTDIR)/bin,\ + PROGRAM:=jabswitch,\ + DEBUG_SYMBOLS:=true,\ + VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/closed/windows/native/sun/bridge/AccessBridgeStatusWindow.rc,\ + RC_FLAGS:=$(RC_FLAGS),\ + MANIFEST:=$(JDK_TOPDIR)/src/closed/windows/native/sun/bridge/jabswitch.manifest)) + + BUILD_LAUNCHERS += $(BUILD_JABSWITCH) + +endif +endif + ########################################################################################## $(BUILD_LAUNCHERS) : $(JDK_TOPDIR)/makefiles/CompileLaunchers.gmk diff --git a/makefiles/CompileNativeLibraries.gmk b/makefiles/CompileNativeLibraries.gmk index 5d601c661566aebbb64dab46dddcb53f668fe7cd..fdd2762107de542baf3408f4fd0e85ba432a5925 100644 --- a/makefiles/CompileNativeLibraries.gmk +++ b/makefiles/CompileNativeLibraries.gmk @@ -3294,6 +3294,97 @@ BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)JObjC$(SHARED_LIBR endif +########################################################################################## + +ifndef OPENJDK +ifeq ($(OPENJDK_TARGET_OS), windows) + + ACCESSBRIDGE_SRCDIR:=$(JDK_TOPDIR)/src/closed/windows/native/sun/bridge + + define SetupAccessBridge + # Parameter 1 Suffix + # Parameter 2 Machine + # Parameter 3 ACCESSBRIDGE_ARCH_ suffix + + $(call SetupNativeCompilation,BUILD_JAWTACCESSBRIDGE$1,\ + LIBRARY=JAWTAccessBridge$1,\ + OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\ + SRC:=$(ACCESSBRIDGE_SRCDIR),\ + INCLUDE_FILES:=JAWTAccessBridge.cpp,\ + LANG:=C++,\ + OPTIMIZATION:=LOW,\ + CFLAGS:=$(CFLAGS_JDKLIB) \ + -DACCESSBRIDGE_ARCH_$3,\ + LDFLAGS:=$(LDFLAGS_JDKLIB) kernel32.lib user32.lib gdi32.lib \ + winspool.lib jawt.lib comdlg32.lib advapi32.lib shell32.lib \ + ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib \ + -subsystem:windows -machine:$2 \ + -def:$(ACCESSBRIDGE_SRCDIR)/JAWTAccessBridge.DEF,\ + VERSIONINFO_RESOURCE:=$(ACCESSBRIDGE_SRCDIR)/AccessBridgeStatusWindow.rc,\ + RC_FLAGS:=$(RC_FLAGS),\ + OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjawtaccessbridge$1,\ + DEBUG_SYMBOLS:=true) + + $$(BUILD_JAWTACCESSBRIDGE$1): $(JDK_OUTPUTDIR)/lib/$(LIBRARY_PREFIX)jawt$(STATIC_LIBRARY_SUFFIX) + + $(call SetupNativeCompilation,BUILD_JAVAACCESSBRIDGE$1,\ + LIBRARY=JavaAccessBridge$1,\ + OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\ + SRC:=$(ACCESSBRIDGE_SRCDIR),\ + INCLUDE_FILES:=AccessBridgeATInstance.cpp AccessBridgeDebug.cpp \ + AccessBridgeJavaEntryPoints.cpp \ + AccessBridgeMessages.cpp JavaAccessBridge.cpp,\ + LANG:=C++,\ + OPTIMIZATION:=LOW,\ + CFLAGS:=$(CFLAGS_JDKLIB) \ + -DACCESSBRIDGE_ARCH_$3,\ + LDFLAGS:=$(LDFLAGS_JDKLIB) kernel32.lib user32.lib gdi32.lib \ + winspool.lib comdlg32.lib advapi32.lib shell32.lib \ + ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib \ + -subsystem:windows -machine:$2 \ + -def:$(ACCESSBRIDGE_SRCDIR)/JavaAccessBridge.DEF,\ + VERSIONINFO_RESOURCE:=$(ACCESSBRIDGE_SRCDIR)/AccessBridgeStatusWindow.rc,\ + RC_FLAGS:=$(RC_FLAGS),\ + OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjavaaccessbridge$1,\ + DEBUG_SYMBOLS:=true) + + $(call SetupNativeCompilation,BUILD_WINDOWSACCESSBRIDGE$1,\ + LIBRARY=WindowsAccessBridge$1,\ + OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\ + SRC:=$(ACCESSBRIDGE_SRCDIR),\ + INCLUDE_FILES:=AccessBridgeJavaVMInstance.cpp AccessBridgeMessageQueue.cpp \ + AccessBridgeMessages.cpp AccessBridgeWindowsEntryPoints.cpp \ + WinAccessBridge.cpp AccessBridgeDebug.cpp \ + AccessBridgeEventHandler.cpp,\ + LANG:=C++,\ + OPTIMIZATION:=LOW,\ + CFLAGS:=$(filter-out -MD,$(CFLAGS_JDKLIB)) -MT \ + -DACCESSBRIDGE_ARCH_$3,\ + LDFLAGS:=$(LDFLAGS_JDKLIB) kernel32.lib user32.lib gdi32.lib \ + winspool.lib comdlg32.lib advapi32.lib shell32.lib \ + ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib \ + -subsystem:windows -machine:$2 \ + -def:$(ACCESSBRIDGE_SRCDIR)/WinAccessBridge.DEF,\ + VERSIONINFO_RESOURCE:=$(ACCESSBRIDGE_SRCDIR)/AccessBridgeStatusWindow.rc,\ + RC_FLAGS:=$(RC_FLAGS),\ + OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libwindowsaccessbridge$1,\ + DEBUG_SYMBOLS:=true) + + BUILD_LIBRARIES += $$(BUILD_JAWTACCESSBRIDGE$1) $$(BUILD_JAVAACCESSBRIDGE$1) \ + $$(BUILD_WINDOWSACCESSBRIDGE$1) + + endef + + ifeq ($(OPENJDK_TARGET_CPU_BITS),32) + $(eval $(call SetupAccessBridge,-32,I386,32)) + $(eval $(call SetupAccessBridge,,I386,LEGACY)) + else + $(eval $(call SetupAccessBridge,-64,X64,64)) + endif +endif +endif + + ########################################################################################## all: $(COPY_FILES) $(BUILD_LIBRARIES) diff --git a/makefiles/CopyFiles.gmk b/makefiles/CopyFiles.gmk index be24ab2281994383f75c31e436e8d422f4bdf513..9c4dc0d7dec68a4048f8c57293405c427b612263 100644 --- a/makefiles/CopyFiles.gmk +++ b/makefiles/CopyFiles.gmk @@ -42,7 +42,7 @@ H_TARGET_FILES =$(INCLUDEDIR)/jdwpTransport.h \ $(INCLUDEDIR)/jvmticmlr.h \ $(INCLUDEDIR)/classfile_constants.h \ $(INCLUDEDIR)/jawt.h \ - $(OPENJDK_TARGET_OS_INCLUDE)/jni_md.h \ + $(OPENJDK_TARGET_OS_INCLUDE)/jni_md.h \ $(OPENJDK_TARGET_OS_INCLUDE)/jawt_md.h $(INCLUDEDIR)/%.h: $(JDK_TOPDIR)/src/share/javavm/export/%.h @@ -59,6 +59,27 @@ COPY_FILES = $(H_TARGET_FILES) ########################################################################################## +ifndef OPENJDK +ifeq ($(OPENJDK_TARGET_OS), windows) + COPY_FILES += $(OPENJDK_TARGET_OS_INCLUDE)/bridge/AccessBridgeCallbacks.h \ + $(OPENJDK_TARGET_OS_INCLUDE)/bridge/AccessBridgeCalls.h \ + $(OPENJDK_TARGET_OS_INCLUDE)/bridge/AccessBridgePackages.h \ + $(OPENJDK_TARGET_OS_INCLUDE)/bridge/AccessBridgeCalls.c \ + $(JDK_OUTPUTDIR)/lib/accessibility.properties + + $(OPENJDK_TARGET_OS_INCLUDE)/bridge/%: \ + $(JDK_TOPDIR)/src/closed/windows/native/sun/bridge/% + $(install-file) + + $(JDK_OUTPUTDIR)/lib/accessibility.properties: \ + $(JDK_TOPDIR)/src/closed/windows/native/sun/bridge/accessibility.properties + $(install-file) + +endif +endif + +########################################################################################## + LIBDIR = $(JDK_OUTPUTDIR)/lib SERVICETAG_LIBDIR = $(LIBDIR)/servicetag @@ -267,10 +288,12 @@ endif ifeq ($(OPENJDK_TARGET_OS),windows) MSVCR_TARGET := $(JDK_OUTPUTDIR)/bin/$(notdir $(MSVCR_DLL)) + # Chmod to avoid permission issues if bundles are unpacked on unix platforms. $(MSVCR_TARGET): $(MSVCR_DLL) $(MKDIR) -p $(@D) $(RM) $@ $(CP) $< $@ + $(CHMOD) a+rx $@ COPY_FILES += $(MSVCR_TARGET) endif @@ -317,7 +340,7 @@ ifeq ($(OPENJDK_TARGET_CPU_BITS),32) $(MKDIR) -p $(@D) $(RM) $(JVMCFG) $(PRINTF) "-client KNOWN\n">$(JVMCFG) - $(PRINTF) "-server IGNORE\n">>$(JVMCFG) + $(PRINTF) "-server ALIASED_TO -client\n">>$(JVMCFG) $(PRINTF) "-hotspot ALIASED_TO -client\n">>$(JVMCFG) $(PRINTF) "-classic WARN\n">>$(JVMCFG) $(PRINTF) "-native ERROR\n">>$(JVMCFG) diff --git a/makefiles/CreateJars.gmk b/makefiles/CreateJars.gmk index 21c3ca98bfbc1a9164a3fc890f661e2c757b9a61..dc93edb7e6ac26ef8baca5383cb17bcf3c154263 100644 --- a/makefiles/CreateJars.gmk +++ b/makefiles/CreateJars.gmk @@ -141,6 +141,7 @@ RT_JAR_EXCLUDES := \ com/sun/crypto/provider \ com/sun/istack/internal/tools \ com/sun/jarsigner \ + com/sun/java/accessibility \ com/sun/javadoc \ com/sun/jdi \ com/sun/net/ssl/internal/ssl \ @@ -941,6 +942,47 @@ JARS+=$(IMAGES_OUTPUTDIR)/src.zip ########################################################################################## +ifndef OPENJDK +ifeq ($(OPENJDK_TARGET_OS), windows) + + $(eval $(call SetupArchive,BUILD_JACCESS_JAR,,\ + SRCS:=$(JDK_OUTPUTDIR)/classes,\ + INCLUDES:=com/sun/java/accessibility/util,\ + JAR:=$(IMAGES_OUTPUTDIR)/lib/ext/jaccess.jar,\ + SKIP_METAINF:=true)) + + JARS += $(IMAGES_OUTPUTDIR)/lib/ext/jaccess.jar + + ifeq ($(OPENJDK_TARGET_CPU_BITS), 32) + $(eval $(call SetupArchive,BUILD_ACCESSBRIDGE_32_JAR,,\ + SRCS:=$(JDK_OUTPUTDIR)/classes_ab/32bit $(JDK_OUTPUTDIR)/classes,\ + INCLUDES:=com/sun/java/accessibility,\ + JAR:=$(IMAGES_OUTPUTDIR)/lib/ext/access-bridge-32.jar,\ + SKIP_METAINF:=true)) + + $(eval $(call SetupArchive,BUILD_ACCESSBRIDGE_LEGACY_JAR,,\ + SRCS:=$(JDK_OUTPUTDIR)/classes_ab/legacy $(JDK_OUTPUTDIR)/classes,\ + INCLUDES:=com/sun/java/accessibility,\ + JAR:=$(IMAGES_OUTPUTDIR)/lib/ext/access-bridge.jar,\ + SKIP_METAINF:=true)) + + JARS += $(IMAGES_OUTPUTDIR)/lib/ext/access-bridge-32.jar \ + $(IMAGES_OUTPUTDIR)/lib/ext/access-bridge.jar + else + $(eval $(call SetupArchive,BUILD_ACCESSBRIDGE_64_JAR,,\ + SRCS:=$(JDK_OUTPUTDIR)/classes_ab/64bit $(JDK_OUTPUTDIR)/classes,\ + INCLUDES:=com/sun/java/accessibility,\ + EXCLUDES:=com/sun/java/accessibility/util/java,\ + JAR:=$(IMAGES_OUTPUTDIR)/lib/ext/access-bridge-64.jar,\ + SKIP_METAINF:=true)) + + JARS += $(IMAGES_OUTPUTDIR)/lib/ext/access-bridge-64.jar + endif +endif +endif + +########################################################################################## + # # This is an empty jar (only contains manifest) and fits poorly into framework... # create simple rule instead diff --git a/makefiles/GensrcMisc.gmk b/makefiles/GensrcMisc.gmk index 7fdfa3c846c4b146e43a06d80324b0521e91c502..5b9c06e5abfa931ef029c187bf24482c700fc5b6 100644 --- a/makefiles/GensrcMisc.gmk +++ b/makefiles/GensrcMisc.gmk @@ -190,3 +190,36 @@ $(JDK_OUTPUTDIR)/gensrc/sun/nio/fs/SolarisConstants.java : $(BUILD_GENSRC_SOL_EX endif + +########################################################################################## + +ifndef OPENJDK +ifeq ($(OPENJDK_TARGET_OS), windows) + + AB_GENSRC_DIR := $(JDK_OUTPUTDIR)/gensrc_ab + AB_SRC_DIR := $(JDK_TOPDIR)/src/closed/windows/classes/com/sun/java/accessibility + + ifeq ($(OPENJDK_TARGET_CPU_BITS), 32) + $(AB_GENSRC_DIR)/32bit/com/sun/java/accessibility/AccessBridge.java: \ + $(AB_SRC_DIR)/32bit/AccessBridge.java + $(install-file) + + $(AB_GENSRC_DIR)/legacy/com/sun/java/accessibility/AccessBridge.java: \ + $(AB_SRC_DIR)/legacy/AccessBridge.java + $(install-file) + + GENSRC_MISC += $(AB_GENSRC_DIR)/32bit/com/sun/java/accessibility/AccessBridge.java \ + $(AB_GENSRC_DIR)/legacy/com/sun/java/accessibility/AccessBridge.java + + else + $(AB_GENSRC_DIR)/64bit/com/sun/java/accessibility/AccessBridge.java: \ + $(AB_SRC_DIR)/64bit/AccessBridge.java + $(install-file) + + GENSRC_MISC += $(AB_GENSRC_DIR)/64bit/com/sun/java/accessibility/AccessBridge.java + + endif +endif +endif + +########################################################################################## \ No newline at end of file diff --git a/makefiles/GensrcSwing.gmk b/makefiles/GensrcSwing.gmk index bd98aed1951360a5e6766a398610001c3dd030df..7a554f26da65dafaa49bd8d2a974d30e31b1d4e1 100644 --- a/makefiles/GensrcSwing.gmk +++ b/makefiles/GensrcSwing.gmk @@ -68,7 +68,7 @@ BEANS_SRC = $(BEANS:%=$(JDK_TOPDIR)/src/share/classes/javax/swing/%.java) \ # Dummy variable so far, in the old build system it was false by default SWINGBEAN_DEBUG_FLAG = false # GenDocletBeanInfo is compiled in Tools.gmk and picks up from $(JDK_OUTPUTDIR)/btclasses -$(JDK_OUTPUTDIR)/gensrc_no_srczip/_the.generated_beaninfo: $(BEANS_SRC) $(JDK_OUTPUTDIR)/gensrc/javax/swing/SwingBeanInfoBase.java $(JDK_OUTPUTDIR)/gensrc/sun/swing/BeanInfoUtils.java $(BUILD_TOOLS) +$(JDK_OUTPUTDIR)/gensrc_no_srczip/_the.generated_beaninfo: $(BEANS_SRC) $(JDK_OUTPUTDIR)/gensrc_no_srczip/javax/swing/SwingBeanInfoBase.java $(JDK_OUTPUTDIR)/gensrc/sun/swing/BeanInfoUtils.java $(BUILD_TOOLS) $(ECHO) Generating beaninfo $(MKDIR) -p $(JDK_OUTPUTDIR)/gensrc_no_srczip/javax/swing $(JAVA) -Djava.awt.headless=true -jar $(JAVADOC_JARS) -doclet GenDocletBeanInfo \ @@ -84,7 +84,7 @@ $(JDK_OUTPUTDIR)/gensrc_no_srczip/_the.generated_beaninfo: $(BEANS_SRC) $(JDK_OU # This file is the part of dt.jar # For some reason it is under $(JDK_TOPDIR)/make/tools/swing-beans/javax/swing # Should it be moved under $(JDK_TOPDIR)/src/share/classes/javax/swing instead? -$(JDK_OUTPUTDIR)/gensrc/javax/swing/SwingBeanInfoBase.java: $(DOCLETSRC_DIR)/javax/swing/SwingBeanInfoBase.java +$(JDK_OUTPUTDIR)/gensrc_no_srczip/javax/swing/SwingBeanInfoBase.java: $(DOCLETSRC_DIR)/javax/swing/SwingBeanInfoBase.java $(MKDIR) -p $(@D) $(CP) $< $@ diff --git a/makefiles/GensrcX11Wrappers.gmk b/makefiles/GensrcX11Wrappers.gmk index 0d1da2307aad9e564e92f2482d8781336b22f253..6a183d783ecf82510fc0286443853bb3958a193b 100644 --- a/makefiles/GensrcX11Wrappers.gmk +++ b/makefiles/GensrcX11Wrappers.gmk @@ -23,84 +23,95 @@ # questions. # - # This file is responsible for extracting the x11 native struct offsets to -# the xawt Java library. This is done by compiling and running a native -# binary, which dumps output to a text file. The offsets differ on 32 and 64 -# bit systems, so care must be taken here. +# the xawt Java library. The tool needs to be run on the os/arch that +# will host the final jvm, thus the tool cannot be used when cross compiling. + +# To enable cross compiling, the two versions of the generated offset file, +# sizes.32 and sizes.64 are committed into the source code repository. +# These are the ones used. -# Note: Some of the more complex logic here is most likely not needed anymore. +# However when not cross compiling, the offset generator tool is built and +# run, to verify that it still generates the same sizes.32 and sizes.64. GENSRC_X11WRAPPERS := +# Put temporary c-code and executable to calculate offsets here. +# Also put verification offset file here as well. GENSRC_X11WRAPPERS_TMP := $(JDK_OUTPUTDIR)/gensrc_x11wrappers -GENSRC_X11WRAPPERS_DST := $(JDK_OUTPUTDIR)/gensrc +# Put the generated Java classes used to interface X11 from awt here. +GENSRC_X11WRAPPERS_DST := $(JDK_OUTPUTDIR)/gensrc/sun/awt/X11 -GENSRC_SIZER_SRC := $(JDK_TOPDIR)/src/solaris/classes/sun/awt/X11/generator - -# Normal case is to generate version according to target bits -GENSRC_SIZES := sizes.$(OPENJDK_TARGET_CPU_BITS) +# The pre-calculated offset file are stored here: +GENSRC_SIZER_DIR := $(JDK_TOPDIR)/src/solaris/classes/sun/awt/X11/generator +# Normal case is to generate only according to target bits +GENSRC_X11_VERSION := $(OPENJDK_TARGET_CPU_BITS) ifeq ($(OPENJDK_TARGET_CPU_BITS), 64) -ifneq ($(OPENJDK_TARGET_OS), linux) -# On all 64-bit systems except Linux, generate both 32 and 64 bit versions -GENSRC_SIZES := sizes.32 sizes.64 -endif + ifneq ($(OPENJDK_TARGET_OS), linux) + # On all 64-bit systems except Linux, generate both 32 and 64 bit versions + GENSRC_X11_VERSION := 32 64 + endif else -ifeq ($(OPENJDK_TARGET_OS), solaris) -# As a special case, solaris 32-bit also generates the 64-bit version -GENSRC_SIZES := sizes.32 sizes.64 -endif + ifeq ($(OPENJDK_TARGET_OS), solaris) + # As a special case, solaris 32-bit also generates the 64-bit version + GENSRC_X11_VERSION := 32 64 + endif endif -########################################################################################## +GENSRC_X11_SIZES_USED := $(addprefix $(GENSRC_X11WRAPPERS_TMP)/sizes.,$(GENSRC_X11_VERSION)) + +# Copy only the sizes.* files that are actually needed. WrapperGenerator picks up any it finds from the +# file prefix it is given so those not needed need to be hidden. +$(GENSRC_X11WRAPPERS_TMP)/sizes.%: $(GENSRC_SIZER_DIR)/sizes.% + $(MKDIR) -p $(@D) + $(RM) '$@' + $(SORT) $< > $@ -$(GENSRC_X11WRAPPERS_TMP)/sizer/sizer.%.c : $(GENSRC_SIZER_SRC)/xlibtypes.txt $(BUILD_TOOLS) +# Run the tool on the offset files copied from the source repository to generate several Java classes +# used in awt. +$(JDK_OUTPUTDIR)/gensrc/_the.generated.x11 : $(GENSRC_X11_SIZES_USED) $(BUILD_TOOLS) + $(MKDIR) -p $(GENSRC_X11WRAPPERS_DST) + $(TOOL_WRAPPERGENERATOR) $(GENSRC_X11WRAPPERS_DST) $(GENSRC_SIZER_DIR)/xlibtypes.txt "gen" $(GENSRC_X11WRAPPERS_TMP)/sizes + $(TOUCH) $@ + +GENSRC_X11WRAPPERS += $(JDK_OUTPUTDIR)/gensrc/_the.generated.x11 + +ifneq ($(COMPILE_TYPE),cross) + # This is not a cross compile, regenerate the offset file, so that we + # can compare it with the version in the source code repository. + + # Generate the C code for the program that will output the offset file. + $(GENSRC_X11WRAPPERS_TMP)/sizer.%.c : $(GENSRC_SIZER_DIR)/xlibtypes.txt $(BUILD_TOOLS) $(ECHO) "Generating X11 wrapper ($*-bit version)" $(MKDIR) -p $(@D) - $(RM) $@ - $(TOOL_WRAPPERGENERATOR) $(@D) $< "sizer" $* + $(TOOL_WRAPPERGENERATOR) $(@D) $(GENSRC_SIZER_DIR)/xlibtypes.txt "sizer" $* -$(GENSRC_X11WRAPPERS_TMP)/sizer/sizer.%.exe : $(GENSRC_X11WRAPPERS_TMP)/sizer/sizer.%.c + # Compile the C code into an executable. + $(GENSRC_X11WRAPPERS_TMP)/sizer.%.exe : $(GENSRC_X11WRAPPERS_TMP)/sizer.%.c $(MKDIR) -p $(@D) - $(RM) $@ $@.tmp - (cd $(@D) && $(BUILD_CC) -m$* -o $@.tmp $< \ + (cd $(@D) && $(CC) -m$* -o $@ $< \ $(X_CFLAGS) \ $(X_LIBS) \ -I$(JDK_OUTPUTDIR)/include \ -I$(JDK_TOPDIR)/src/share/javavm/export \ -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/javavm/export \ - -I$(JDK_TOPDIR)//src/share/native/common \ + -I$(JDK_TOPDIR)/src/share/native/common \ -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/common \ -I$(JDK_TOPDIR)/src/solaris/native/sun/awt \ -I$(JDK_TOPDIR)/src/share/native/sun/awt/debug \ -I$(JDK_TOPDIR)/src/share/native/sun/awt/image/cvutils -lc) - $(MV) $@.tmp $@ -# Run the generated sizer binary to create the sizes text file -$(GENSRC_X11WRAPPERS_TMP)/sizer/sizes.% : $(GENSRC_X11WRAPPERS_TMP)/sizer/sizer.%.exe - $(MKDIR) -p $(@D) - $(RM) $@ $@.tmp - $< > $@.tmp - $(MV) $@.tmp $@ - -ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU), solaris-x86) - # On solaris-x86 we also need to create the 64-bit version, but we can't run a 64-bit binary - # As a workaround, copy this from a pre-generated file. -$(GENSRC_X11WRAPPERS_TMP)/sizer/sizes.64 : $(JDK_TOPDIR)/src/solaris/classes/sun/awt/X11/generator/sizes.64-solaris-i386 + .PRECIOUS: $(GENSRC_X11WRAPPERS_TMP)/sizer.%.exe $(GENSRC_X11WRAPPERS_TMP)/sizer.%.c + + # Run the executable create the offset file and check that it is identical + # to the offset file in the source code repository. + $(GENSRC_X11WRAPPERS_TMP)/sizes.%.verification : $(GENSRC_X11WRAPPERS_TMP)/sizer.%.exe $(MKDIR) -p $(@D) - $(RM) $@ - $(CP) $< $@ -endif + $(GENSRC_X11WRAPPERS_TMP)/sizer.$*.exe | $(SORT) > $@.tmp + $(ECHO) Verifying $(GENSRC_X11WRAPPERS_TMP)/sizes.$*.verification.tmp to $(GENSRC_X11WRAPPERS_TMP)/sizes.$* + $(DIFF) $(GENSRC_X11WRAPPERS_TMP)/sizes.$*.verification.tmp $(GENSRC_X11WRAPPERS_TMP)/sizes.$* + mv $@.tmp $@ -$(GENSRC_X11WRAPPERS_DST)/_the.generated.x11 : $(foreach S,$(GENSRC_SIZES),$(GENSRC_X11WRAPPERS_TMP)/sizer/$(S)) $(BUILD_TOOLS) - $(RM) $@ - $(MKDIR) -p $(@D)/sun/awt/X11 - $(TOOL_WRAPPERGENERATOR) $(@D)/sun/awt/X11 $(GENSRC_SIZER_SRC)/xlibtypes.txt "gen" $(GENSRC_X11WRAPPERS_TMP)/sizer/sizes -ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU), solaris-x86_64) - # On solaris-x86_64, as a safety measure, compare the generated file with the checked-in version - $(ECHO) COMPARING $(GENSRC_X11WRAPPERS_TMP)/sizer/sizes.64 and $(GENSRC_SIZER_SRC)/sizes.64-solaris-i386 - $(DIFF) $(GENSRC_X11WRAPPERS_TMP)/sizer/sizes.64 $(GENSRC_SIZER_SRC)/sizes.64-solaris-i386 + GENSRC_X11WRAPPERS += $(GENSRC_X11WRAPPERS_TMP)/sizes.$(OPENJDK_TARGET_CPU_BITS).verification endif - $(TOUCH) $@ -GENSRC_X11WRAPPERS += $(GENSRC_X11WRAPPERS_DST)/_the.generated.x11 diff --git a/src/macosx/classes/com/apple/laf/AquaKeyBindings.java b/src/macosx/classes/com/apple/laf/AquaKeyBindings.java index bbb804ae3f10429d36641c5f926b1a64bb803688..88db59f0b9fb51e22e0699d89ebb940a0106e1bb 100644 --- a/src/macosx/classes/com/apple/laf/AquaKeyBindings.java +++ b/src/macosx/classes/com/apple/laf/AquaKeyBindings.java @@ -142,6 +142,21 @@ public class AquaKeyBindings { })); } + LateBoundInputMap getPasswordFieldInputMap() { + return new LateBoundInputMap(new SimpleBinding(getTextFieldInputMap().getBindings()), + // nullify all the bindings that may discover space characters in the text + new SimpleBinding(new String[] { + "alt LEFT", null, + "alt KP_LEFT", null, + "alt RIGHT", null, + "alt KP_RIGHT", null, + "shift alt LEFT", null, + "shift alt KP_LEFT", null, + "shift alt RIGHT", null, + "shift alt KP_RIGHT", null, + })); + } + LateBoundInputMap getMultiLineTextInputMap() { return new LateBoundInputMap(new SimpleBinding(commonTextEditorBindings), new SimpleBinding(new String[] { "ENTER", DefaultEditorKit.insertBreakAction, diff --git a/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java b/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java index 4f108da2df053aa5d2cce99dd39ef48dba16c2e0..457b82d36a31ef25f43cc38e4946ccc6989487d6 100644 --- a/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java +++ b/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java @@ -697,7 +697,7 @@ public class AquaLookAndFeel extends BasicLookAndFeel { "Panel.foreground", black, "Panel.opaque", useOpaqueComponents, - "PasswordField.focusInputMap", aquaKeyBindings.getTextFieldInputMap(), + "PasswordField.focusInputMap", aquaKeyBindings.getPasswordFieldInputMap(), "PasswordField.font", controlFont, "PasswordField.background", textBackground, "PasswordField.foreground", textForeground, diff --git a/src/macosx/classes/com/apple/laf/AquaPainter.java b/src/macosx/classes/com/apple/laf/AquaPainter.java index cfafa43d9dea7065bcf3084b95b6817ddc1d32a5..303938d59888eb04fe7a586d32db5187bfea6f54 100644 --- a/src/macosx/classes/com/apple/laf/AquaPainter.java +++ b/src/macosx/classes/com/apple/laf/AquaPainter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,6 @@ import sun.awt.image.*; import sun.java2d.*; import sun.print.*; import apple.laf.*; -import apple.laf.JRSUIConstants.Widget; import apple.laf.JRSUIUtils.NineSliceMetricsProvider; abstract class AquaPainter { @@ -63,7 +62,7 @@ abstract class AquaPainter { } static AquaPainter create(final T state, final NineSliceMetricsProvider metricsProvider) { - return new AquaNineSlicingImagePainter(state, metricsProvider); + return new AquaNineSlicingImagePainter<>(state, metricsProvider); } abstract void paint(final Graphics2D g, final T stateToPaint, final Component c); @@ -71,7 +70,7 @@ abstract class AquaPainter { final Rectangle boundsRect = new Rectangle(); final JRSUIControl control; T state; - public AquaPainter(final JRSUIControl control, final T state) { + AquaPainter(final JRSUIControl control, final T state) { this.control = control; this.state = state; } @@ -94,14 +93,14 @@ abstract class AquaPainter { protected final HashMap slicedControlImages; protected final NineSliceMetricsProvider metricsProvider; - public AquaNineSlicingImagePainter(final T state) { + AquaNineSlicingImagePainter(final T state) { this(state, null); } - public AquaNineSlicingImagePainter(final T state, final NineSliceMetricsProvider metricsProvider) { + AquaNineSlicingImagePainter(final T state, final NineSliceMetricsProvider metricsProvider) { super(new JRSUIControl(false), state); this.metricsProvider = metricsProvider; - slicedControlImages = new HashMap(); + slicedControlImages = new HashMap<>(); } @Override @@ -127,7 +126,7 @@ abstract class AquaPainter { } static class AquaSingleImagePainter extends AquaPainter { - public AquaSingleImagePainter(final T state) { + AquaSingleImagePainter(final T state) { super(new JRSUIControl(false), state); } @@ -137,12 +136,12 @@ abstract class AquaPainter { } static void paintFromSingleCachedImage(final Graphics2D g, final JRSUIControl control, final JRSUIState controlState, final Component c, final Rectangle boundsRect) { - Rectangle clipRect = g.getClipBounds(); - Rectangle intersection = boundsRect.intersection(clipRect); + final Rectangle clipRect = g.getClipBounds(); + final Rectangle intersection = boundsRect.intersection(clipRect); if (intersection.width <= 0 || intersection.height <= 0) return; - int imgX1 = intersection.x - boundsRect.x; - int imgY1 = intersection.y - boundsRect.y; + final int imgX1 = intersection.x - boundsRect.x; + final int imgY1 = intersection.y - boundsRect.y; final GraphicsConfiguration config = g.getDeviceConfiguration(); final ImageCache cache = ImageCache.getInstance(); @@ -150,19 +149,14 @@ abstract class AquaPainter { if (image == null) { image = new BufferedImage(boundsRect.width, boundsRect.height, BufferedImage.TYPE_INT_ARGB_PRE); cache.setImage(image, config, boundsRect.width, boundsRect.height, controlState); - } else { - g.drawImage(image, intersection.x, intersection.y, intersection.x + intersection.width, intersection.y + intersection.height, - imgX1, imgY1, imgX1 + intersection.width, imgY1 + intersection.height, null); - return; - } + final WritableRaster raster = image.getRaster(); + final DataBufferInt buffer = (DataBufferInt)raster.getDataBuffer(); - final WritableRaster raster = image.getRaster(); - final DataBufferInt buffer = (DataBufferInt)raster.getDataBuffer(); - - control.set(controlState); - control.paint(SunWritableRaster.stealData(buffer, 0), - image.getWidth(), image.getHeight(), 0, 0, boundsRect.width, boundsRect.height); - SunWritableRaster.markDirty(buffer); + control.set(controlState); + control.paint(SunWritableRaster.stealData(buffer, 0), + image.getWidth(), image.getHeight(), 0, 0, boundsRect.width, boundsRect.height); + SunWritableRaster.markDirty(buffer); + } g.drawImage(image, intersection.x, intersection.y, intersection.x + intersection.width, intersection.y + intersection.height, imgX1, imgY1, imgX1 + intersection.width, imgY1 + intersection.height, null); @@ -173,7 +167,7 @@ abstract class AquaPainter { final JRSUIControl control; final JRSUIState state; - public RecyclableJRSUISlicedImageControl(final JRSUIControl control, final JRSUIState state, final NineSliceMetrics metrics) { + RecyclableJRSUISlicedImageControl(final JRSUIControl control, final JRSUIState state, final NineSliceMetrics metrics) { super(metrics); this.control = control; this.state = state; diff --git a/src/macosx/classes/com/apple/laf/ImageCache.java b/src/macosx/classes/com/apple/laf/ImageCache.java index 7ed83ae961c32b5e679d654da04a3a3be162bcf9..f9af5c06161a6220a8ca56a5ce3d2310dfcd1c26 100644 --- a/src/macosx/classes/com/apple/laf/ImageCache.java +++ b/src/macosx/classes/com/apple/laf/ImageCache.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,6 +30,7 @@ import java.lang.ref.*; import java.util.*; import java.util.concurrent.locks.*; +import apple.laf.JRSUIConstants; import apple.laf.JRSUIState; import com.apple.laf.AquaUtils.RecyclableSingleton; @@ -38,9 +39,9 @@ import com.apple.laf.AquaUtils.RecyclableSingleton; * SoftReferences so they will be dropped by the GC if heap memory gets tight. When our size hits max pixel count least * recently requested images are removed first. */ -class ImageCache { +final class ImageCache { // Ordered Map keyed by args hash, ordered by most recent accessed entry. - private final LinkedHashMap map = new LinkedHashMap(16, 0.75f, true); + private final LinkedHashMap map = new LinkedHashMap<>(16, 0.75f, true); // Maximum number of pixels to cache, this is used if maxCount private final int maxPixelCount; @@ -50,7 +51,7 @@ class ImageCache { // Lock for concurrent access to map private final ReadWriteLock lock = new ReentrantReadWriteLock(); // Reference queue for tracking lost softreferences to images in the cache - private final ReferenceQueue referenceQueue = new ReferenceQueue(); + private final ReferenceQueue referenceQueue = new ReferenceQueue<>(); // Singleton Instance private static final RecyclableSingleton instance = new RecyclableSingleton() { @@ -63,11 +64,11 @@ class ImageCache { return instance.get(); } - public ImageCache(final int maxPixelCount) { + ImageCache(final int maxPixelCount) { this.maxPixelCount = maxPixelCount; } - public ImageCache() { + ImageCache() { this((8 * 1024 * 1024) / 4); // 8Mb of pixels } @@ -99,10 +100,13 @@ class ImageCache { * @param config The graphics configuration, needed if cached image is a Volatile Image. Used as part of cache key * @param w The image width, used as part of cache key * @param h The image height, used as part of cache key - * @param args Other arguments to use as part of the cache key - * @return true if the image could be cached or false if the image is too big + * @return true if the image could be cached, false otherwise. */ public boolean setImage(final Image image, final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) { + if (state.is(JRSUIConstants.Animating.YES)) { + return false; + } + final int hash = hash(config, w, h, state); lock.writeLock().lock(); @@ -167,7 +171,7 @@ class ImageCache { private final int h; private final JRSUIState state; - public PixelCountSoftReference(final Image referent, final ReferenceQueue q, final int pixelCount, final int hash, final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) { + PixelCountSoftReference(final Image referent, final ReferenceQueue q, final int pixelCount, final int hash, final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) { super(referent, q); this.pixelCount = pixelCount; this.hash = hash; diff --git a/src/macosx/classes/sun/awt/CGraphicsDevice.java b/src/macosx/classes/sun/awt/CGraphicsDevice.java index 2b88453883979d52bc9cad7a7c330d3af030068e..bcb24ea46f7dd7dd1f4823db0f3cbc6b42acd8a1 100644 --- a/src/macosx/classes/sun/awt/CGraphicsDevice.java +++ b/src/macosx/classes/sun/awt/CGraphicsDevice.java @@ -30,6 +30,7 @@ import java.awt.GraphicsDevice; import java.awt.Window; import java.awt.AWTPermission; import java.awt.DisplayMode; +import java.util.Objects; import sun.java2d.opengl.CGLGraphicsConfig; @@ -122,12 +123,12 @@ public final class CGraphicsDevice extends GraphicsDevice { boolean fsSupported = isFullScreenSupported(); if (fsSupported && old != null) { - // enter windowed mode (and restore original display mode) - exitFullScreenExclusive(old); + // restore original display mode and enter windowed mode. if (originalMode != null) { setDisplayMode(originalMode); originalMode = null; } + exitFullScreenExclusive(old); } super.setFullScreenWindow(w); @@ -186,13 +187,20 @@ public final class CGraphicsDevice extends GraphicsDevice { } @Override - public void setDisplayMode(DisplayMode dm) { + public void setDisplayMode(final DisplayMode dm) { if (dm == null) { throw new IllegalArgumentException("Invalid display mode"); } - nativeSetDisplayMode(displayID, dm.getWidth(), dm.getHeight(), dm.getBitDepth(), dm.getRefreshRate()); - if (isFullScreenSupported() && getFullScreenWindow() != null) { - getFullScreenWindow().setSize(dm.getWidth(), dm.getHeight()); + if (!Objects.equals(dm, getDisplayMode())) { + final Window w = getFullScreenWindow(); + if (w != null) { + exitFullScreenExclusive(w); + } + nativeSetDisplayMode(displayID, dm.getWidth(), dm.getHeight(), + dm.getBitDepth(), dm.getRefreshRate()); + if (isFullScreenSupported() && w != null) { + enterFullScreenExclusive(w); + } } } diff --git a/src/macosx/classes/sun/lwawt/LWComponentPeer.java b/src/macosx/classes/sun/lwawt/LWComponentPeer.java index 55b4665a7521f80f8b35d89346b97a07ae93202d..aa9b798c617df75d61f76b64120d89b89b84a9bc 100644 --- a/src/macosx/classes/sun/lwawt/LWComponentPeer.java +++ b/src/macosx/classes/sun/lwawt/LWComponentPeer.java @@ -1226,7 +1226,7 @@ public abstract class LWComponentPeer sendEventToDelegate(e); } - private void sendEventToDelegate(final AWTEvent e) { + protected void sendEventToDelegate(final AWTEvent e) { synchronized (getDelegateLock()) { if (getDelegate() == null || !isShowing() || !isEnabled()) { return; diff --git a/src/macosx/classes/sun/lwawt/LWScrollPanePeer.java b/src/macosx/classes/sun/lwawt/LWScrollPanePeer.java index 1e386f25725cb138d4ecb9bb58b5df587ae215e7..723a9dd8da7efd5685219a8508d1a7cf6466a493 100644 --- a/src/macosx/classes/sun/lwawt/LWScrollPanePeer.java +++ b/src/macosx/classes/sun/lwawt/LWScrollPanePeer.java @@ -29,6 +29,7 @@ import javax.swing.*; import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent; import java.awt.*; +import java.awt.event.MouseWheelEvent; import java.awt.peer.ScrollPanePeer; import java.util.List; @@ -51,6 +52,21 @@ final class LWScrollPanePeer extends LWContainerPeer return sp; } + @Override + public void handleEvent(AWTEvent e) { + if (e instanceof MouseWheelEvent) { + MouseWheelEvent wheelEvent = (MouseWheelEvent) e; + //java.awt.ScrollPane consumes the event + // in case isWheelScrollingEnabled() is true, + // forcibly send the consumed event to the delegate + if (getTarget().isWheelScrollingEnabled() && wheelEvent.isConsumed()) { + sendEventToDelegate(wheelEvent); + } + } else { + super.handleEvent(e); + } + } + @Override public void stateChanged(final ChangeEvent e) { SwingUtilities.invokeLater(new Runnable() { diff --git a/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java b/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java index 7532f6201495a3d72cf5e5cc16dab83c85a724fc..ef2b4d087e2728325d527dd16a9fac4e6796eef7 100644 --- a/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java +++ b/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java @@ -34,7 +34,7 @@ import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.peer.TextFieldPeer; -import javax.swing.JPasswordField; +import javax.swing.*; import javax.swing.text.JTextComponent; final class LWTextFieldPeer @@ -48,7 +48,7 @@ final class LWTextFieldPeer @Override protected JPasswordField createDelegate() { - return new JTextAreaDelegate(); + return new JPasswordFieldDelegate(); } @Override @@ -69,9 +69,18 @@ final class LWTextFieldPeer public void setEchoChar(final char echoChar) { synchronized (getDelegateLock()) { getDelegate().setEchoChar(echoChar); - getDelegate().putClientProperty("JPasswordField.cutCopyAllowed", - getDelegate().echoCharIsSet() - ? Boolean.FALSE : Boolean.TRUE); + final boolean cutCopyAllowed; + final String focusInputMapKey; + if (echoChar != 0) { + cutCopyAllowed = false; + focusInputMapKey = "PasswordField.focusInputMap"; + } else { + cutCopyAllowed = true; + focusInputMapKey = "TextField.focusInputMap"; + } + getDelegate().putClientProperty("JPasswordField.cutCopyAllowed", cutCopyAllowed); + InputMap inputMap = (InputMap) UIManager.get(focusInputMapKey); + SwingUtilities.replaceUIInputMap(getDelegate(), JComponent.WHEN_FOCUSED, inputMap); } } @@ -106,11 +115,11 @@ final class LWTextFieldPeer super.handleJavaFocusEvent(e); } - private final class JTextAreaDelegate extends JPasswordField { + private final class JPasswordFieldDelegate extends JPasswordField { // Empty non private constructor was added because access to this // class shouldn't be emulated by a synthetic accessor method. - JTextAreaDelegate() { + JPasswordFieldDelegate() { super(); } diff --git a/src/macosx/classes/sun/lwawt/LWToolkit.java b/src/macosx/classes/sun/lwawt/LWToolkit.java index 57a8642b6d06f0fa527cb0d96865cada44d10665..89f39fccbf8aadef63dc184902c93773891f2562 100644 --- a/src/macosx/classes/sun/lwawt/LWToolkit.java +++ b/src/macosx/classes/sun/lwawt/LWToolkit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -539,7 +539,7 @@ public abstract class LWToolkit extends SunToolkit implements Runnable { @Override public void ungrab(Window w) { if (w.getPeer() != null) { - ((LWWindowPeer)w.getPeer()).ungrab(); + ((LWWindowPeer)w.getPeer()).ungrab(false); } } } diff --git a/src/macosx/classes/sun/lwawt/LWWindowPeer.java b/src/macosx/classes/sun/lwawt/LWWindowPeer.java index 9d583e65749cc58e1b0d2b8bd5595be7cc757dab..5b19788f2447489fc8644b1fc2d016a326ed4071 100644 --- a/src/macosx/classes/sun/lwawt/LWWindowPeer.java +++ b/src/macosx/classes/sun/lwawt/LWWindowPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -53,7 +53,7 @@ public class LWWindowPeer private static final PlatformLogger focusLog = PlatformLogger.getLogger("sun.lwawt.focus.LWWindowPeer"); - private PlatformWindow platformWindow; + private final PlatformWindow platformWindow; // Window bounds reported by the native system (as opposed to // regular bounds inherited from LWComponentPeer which are @@ -554,12 +554,14 @@ public class LWWindowPeer /** * Called by the {@code PlatformWindow} when this window is moved/resized by - * user. There's no notifyReshape() in LWComponentPeer as the only - * components which could be resized by user are top-level windows. + * user or window insets are changed. There's no notifyReshape() in + * LWComponentPeer as the only components which could be resized by user are + * top-level windows. */ public final void notifyReshape(int x, int y, int w, int h) { final boolean moved; final boolean resized; + final boolean invalid = updateInsets(platformWindow.getInsets()); synchronized (getStateLock()) { moved = (x != sysX) || (y != sysY); resized = (w != sysW) || (h != sysH); @@ -570,7 +572,7 @@ public class LWWindowPeer } // Check if anything changed - if (!moved && !resized) { + if (!moved && !resized && !invalid) { return; } // First, update peer's bounds @@ -584,10 +586,10 @@ public class LWWindowPeer } // Third, COMPONENT_MOVED/COMPONENT_RESIZED/PAINT events - if (moved) { + if (moved || invalid) { handleMove(x, y, true); } - if (resized) { + if (resized || invalid) { handleResize(w, h, true); repaintPeer(); } @@ -999,27 +1001,21 @@ public class LWWindowPeer } } - /* - * Request the window insets from the delegate and compares it - * with the current one. This method is mostly called by the - * delegate, e.g. when the window state is changed and insets - * should be recalculated. - * + /** + * Request the window insets from the delegate and compares it with the + * current one. This method is mostly called by the delegate, e.g. when the + * window state is changed and insets should be recalculated. + *

* This method may be called on the toolkit thread. */ - public boolean updateInsets(Insets newInsets) { - boolean changed = false; + public final boolean updateInsets(final Insets newInsets) { synchronized (getStateLock()) { - changed = (insets.equals(newInsets)); + if (insets.equals(newInsets)) { + return false; + } insets = newInsets; } - - if (changed) { - replaceSurfaceData(); - repaintPeer(); - } - - return changed; + return true; } public static LWWindowPeer getWindowUnderCursor() { @@ -1208,13 +1204,19 @@ public class LWWindowPeer grabbingWindow = this; } - void ungrab() { + final void ungrab(boolean doPost) { if (isGrabbing()) { grabbingWindow = null; - postEvent(new UngrabEvent(getTarget())); + if (doPost) { + postEvent(new UngrabEvent(getTarget())); + } } } + void ungrab() { + ungrab(true); + } + private boolean isGrabbing() { return this == grabbingWindow; } diff --git a/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java b/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java index 459895523e2cc02f3ffcde3b6ee53d4557a97cd9..5b56b19ac1c4152b51762a97d3ba02f9c0da1c0f 100644 --- a/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java +++ b/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java @@ -273,8 +273,31 @@ public class CDataTransferer extends DataTransferer { @Override protected ByteArrayOutputStream convertFileListToBytes(ArrayList fileList) throws IOException { - // TODO Auto-generated method stub - return null; + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + for (int i = 0; i < fileList.size(); i++) + { + byte[] bytes = fileList.get(i).getBytes(); + bos.write(bytes, 0, bytes.length); + bos.write(0); + } + return bos; + } + + @Override + protected boolean isURIListFormat(long format) { + String nat = getNativeForFormat(format); + if (nat == null) { + return false; + } + try { + DataFlavor df = new DataFlavor(nat); + if (df.getPrimaryType().equals("text") && df.getSubType().equals("uri-list")) { + return true; + } + } catch (Exception e) { + // Not a MIME format. + } + return false; } } diff --git a/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java b/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java index 4972301e78078cad40eedbc69965193115a9f950..495657963bd69d972153be70552cd522951c271d 100644 --- a/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java +++ b/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java @@ -27,7 +27,6 @@ package sun.lwawt.macosx; import java.awt.*; import java.awt.geom.Rectangle2D; -import java.awt.image.VolatileImage; import sun.awt.CGraphicsConfig; import sun.awt.CGraphicsEnvironment; @@ -89,29 +88,8 @@ public class CPlatformView extends CFRetainedResource { return peer; } - public void enterFullScreenMode(final long nsWindowPtr) { + public void enterFullScreenMode() { CWrapper.NSView.enterFullScreenMode(ptr); - - // REMIND: CGLSurfaceData expects top-level's size - // and therefore we need to account insets before - // recreating the surface data - Insets insets = peer.getInsets(); - - Rectangle screenBounds; - final long screenPtr = CWrapper.NSWindow.screen(nsWindowPtr); - try { - screenBounds = CWrapper.NSScreen.frame(screenPtr).getBounds(); - } finally { - CWrapper.NSObject.release(screenPtr); - } - - // the move/size notification from the underlying system comes - // but it contains a bounds smaller than the whole screen - // and therefore we need to create the synthetic notifications - peer.notifyReshape(screenBounds.x - insets.left, - screenBounds.y - insets.bottom, - screenBounds.width + insets.left + insets.right, - screenBounds.height + insets.top + insets.bottom); } public void exitFullScreenMode() { diff --git a/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java b/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java index b489eae96b6937af4cee2e9b15ac845ebefc961e..8f83702a209ee3390f8ac6647f1c4540ffc1cf58 100644 --- a/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java +++ b/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java @@ -38,7 +38,6 @@ import sun.awt.*; import sun.java2d.SurfaceData; import sun.java2d.opengl.CGLSurfaceData; import sun.lwawt.*; -import sun.lwawt.LWWindowPeer.PeerType; import sun.util.logging.PlatformLogger; import com.apple.laf.*; @@ -58,7 +57,6 @@ public final class CPlatformWindow extends CFRetainedResource implements Platfor private static native void nativeRevalidateNSWindowShadow(long nsWindowPtr); private static native void nativeSetNSWindowMinimizedIcon(long nsWindowPtr, long nsImage); private static native void nativeSetNSWindowRepresentedFilename(long nsWindowPtr, String representedFilename); - private static native void nativeSetNSWindowSecurityWarningPositioning(long nsWindowPtr, double x, double y, float biasX, float biasY); private static native void nativeSetEnabled(long nsWindowPtr, boolean isEnabled); private static native void nativeSynthesizeMouseEnteredExitedEvents(); private static native void nativeDispose(long nsWindowPtr); @@ -197,7 +195,8 @@ public final class CPlatformWindow extends CFRetainedResource implements Platfor // 1) setting native bounds via nativeSetBounds() call // 2) getting notification from the native level via deliverMoveResizeEvent() private Rectangle nativeBounds = new Rectangle(0, 0, 0, 0); - private volatile boolean isFullScreenMode = false; + private volatile boolean isFullScreenMode; + private boolean isFullScreenAnimationOn; private Window target; private LWWindowPeer peer; @@ -415,8 +414,10 @@ public final class CPlatformWindow extends CFRetainedResource implements Platfor @Override // PlatformWindow public Insets getInsets() { - final Insets insets = nativeGetNSWindowInsets(getNSWindowPtr()); - return insets; + if (!isFullScreenMode) { + return nativeGetNSWindowInsets(getNSWindowPtr()); + } + return new Insets(0, 0, 0, 0); } @Override // PlatformWindow @@ -728,7 +729,19 @@ public final class CPlatformWindow extends CFRetainedResource implements Platfor @Override public void enterFullScreenMode() { isFullScreenMode = true; - contentView.enterFullScreenMode(getNSWindowPtr()); + contentView.enterFullScreenMode(); + // the move/size notification from the underlying system comes + // but it contains a bounds smaller than the whole screen + // and therefore we need to create the synthetic notifications + Rectangle screenBounds; + final long screenPtr = CWrapper.NSWindow.screen(getNSWindowPtr()); + try { + screenBounds = CWrapper.NSScreen.frame(screenPtr).getBounds(); + } finally { + CWrapper.NSObject.release(screenPtr); + } + peer.notifyReshape(screenBounds.x, screenBounds.y, screenBounds.width, + screenBounds.height); } @Override @@ -875,11 +888,10 @@ public final class CPlatformWindow extends CFRetainedResource implements Platfor final Rectangle oldB = nativeBounds; nativeBounds = new Rectangle(x, y, width, height); peer.notifyReshape(x, y, width, height); - if (byUser && !oldB.getSize().equals(nativeBounds.getSize())) { + if ((byUser && !oldB.getSize().equals(nativeBounds.getSize())) + || isFullScreenAnimationOn) { flushBuffers(); } - //TODO validateSurface already called from notifyReshape - validateSurface(); } private void deliverWindowClosingEvent() { @@ -924,6 +936,10 @@ public final class CPlatformWindow extends CFRetainedResource implements Platfor return false; } + if (blocker instanceof CPrinterDialogPeer) { + return true; + } + CPlatformWindow pWindow = (CPlatformWindow)blocker.getPlatformWindow(); pWindow.orderAboveSiblings(); @@ -975,27 +991,19 @@ public final class CPlatformWindow extends CFRetainedResource implements Platfor orderAboveSiblings(); } - private void updateDisplay() { - EventQueue.invokeLater(new Runnable() { - public void run() { - validateSurface(); - } - }); - } - - private void updateWindowContent() { - ComponentEvent resizeEvent = new ComponentEvent(target, ComponentEvent.COMPONENT_RESIZED); - SunToolkit.postEvent(SunToolkit.targetToAppContext(target), resizeEvent); - } - private void windowWillEnterFullScreen() { - updateWindowContent(); + isFullScreenAnimationOn = true; } + private void windowDidEnterFullScreen() { - updateDisplay(); + isFullScreenAnimationOn = false; } + private void windowWillExitFullScreen() { - updateWindowContent(); + isFullScreenAnimationOn = true; + } + + private void windowDidExitFullScreen() { + isFullScreenAnimationOn = false; } - private void windowDidExitFullScreen() {} } diff --git a/src/macosx/native/sun/awt/AWTSurfaceLayers.m b/src/macosx/native/sun/awt/AWTSurfaceLayers.m index c6fec1fc392ef6f578ffa8c5d40ea1d8e4cb027b..6e9fbbca5abaa50e54a4955906326b33cc6a26bd 100644 --- a/src/macosx/native/sun/awt/AWTSurfaceLayers.m +++ b/src/macosx/native/sun/awt/AWTSurfaceLayers.m @@ -101,8 +101,7 @@ Java_sun_lwawt_macosx_CPlatformComponent_nativeCreateComponent JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ - AWT_ASSERT_APPKIT_THREAD; - + CALayer *windowLayer = jlong_to_ptr(windowLayerPtr); surfaceLayers = [[AWTSurfaceLayers alloc] initWithWindowLayer: windowLayer]; CFRetain(surfaceLayers); @@ -127,7 +126,6 @@ JNF_COCOA_ENTER(env); AWTSurfaceLayers *surfaceLayers = OBJC(surfaceLayersPtr); [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ - AWT_ASSERT_APPKIT_THREAD; CGRect rect = CGRectMake(x, y, width, height); [surfaceLayers setBounds: rect]; diff --git a/src/macosx/native/sun/awt/AWTView.m b/src/macosx/native/sun/awt/AWTView.m index 3770287a32a23854beb93820417506a68a07c56d..cc16a2026ee233b53cb55859c06f3e47254c4d2c 100644 --- a/src/macosx/native/sun/awt/AWTView.m +++ b/src/macosx/native/sun/awt/AWTView.m @@ -1243,8 +1243,7 @@ JNF_COCOA_ENTER(env); jobject cPlatformView = (*env)->NewGlobalRef(env, obj); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ - AWT_ASSERT_APPKIT_THREAD; - + CALayer *windowLayer = jlong_to_ptr(windowLayerPtr); AWTView *view = [[AWTView alloc] initWithRect:rect platformView:cPlatformView @@ -1274,8 +1273,7 @@ JNF_COCOA_ENTER(env); NSView *view = (NSView *)jlong_to_ptr(viewPtr); [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ - AWT_ASSERT_APPKIT_THREAD; - + if (toResize) { [view setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable]; } else { @@ -1308,8 +1306,7 @@ JNF_COCOA_ENTER(env); NSWindow *window = [view window]; [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ - AWT_ASSERT_APPKIT_THREAD; - + ret = (jint)[[AWTWindow getNSWindowDisplayID_AppKitThread: window] intValue]; }]; @@ -1336,8 +1333,7 @@ JNF_COCOA_ENTER(env); NSView *view = (NSView *)jlong_to_ptr(viewPtr); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ - AWT_ASSERT_APPKIT_THREAD; - + NSRect viewBounds = [view bounds]; NSRect frameInWindow = [view convertRect:viewBounds toView:nil]; rect = [[view window] convertRectToScreen:frameInWindow]; @@ -1366,9 +1362,7 @@ JNIEXPORT jboolean JNICALL Java_sun_lwawt_macosx_CPlatformView_nativeIsViewUnder JNF_COCOA_ENTER(env); NSView *nsView = OBJC(viewPtr); - [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ NSPoint ptWindowCoords = [[nsView window] mouseLocationOutsideOfEventStream]; NSPoint ptViewCoords = [nsView convertPoint:ptWindowCoords fromView:nil]; underMouse = [nsView hitTest:ptViewCoords] != nil; diff --git a/src/macosx/native/sun/awt/AWTWindow.m b/src/macosx/native/sun/awt/AWTWindow.m index fa27a3bf761bf2a114c0cc417739a9ab2aeb779c..3af7c6c736ff1305fb08cfffd3a0b8ff9b41d0ec 100644 --- a/src/macosx/native/sun/awt/AWTWindow.m +++ b/src/macosx/native/sun/awt/AWTWindow.m @@ -738,14 +738,12 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeCreateNSWind __block AWTWindow *window = nil; JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; JNFWeakJObjectWrapper *platformWindow = [JNFWeakJObjectWrapper wrapperWithJObject:obj withEnv:env]; NSView *contentView = OBJC(contentViewPtr); NSRect frameRect = NSMakeRect(x, y, w, h); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ window = [[AWTWindow alloc] initWithPlatformWindow:platformWindow styleBits:styleBits @@ -770,11 +768,9 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowSt (JNIEnv *env, jclass clazz, jlong windowPtr, jint mask, jint bits) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; @@ -807,12 +803,10 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMe (JNIEnv *env, jclass clazz, jlong windowPtr, jlong menuBarPtr) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); CMenuBar *menuBar = OBJC(menuBarPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; @@ -838,14 +832,12 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeGetNSWindo jobject ret = NULL; JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); __block NSRect contentRect = NSZeroRect; __block NSRect frame = NSZeroRect; - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ frame = [nsWindow frame]; contentRect = [NSWindow contentRectForFrameRect:frame styleMask:[nsWindow styleMask]]; @@ -873,14 +865,12 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowBo (JNIEnv *env, jclass clazz, jlong windowPtr, jdouble originX, jdouble originY, jdouble width, jdouble height) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; NSRect jrect = NSMakeRect(originX, originY, width, height); // TODO: not sure we need displayIfNeeded message in our view NSWindow *nsWindow = OBJC(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; @@ -913,7 +903,6 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMi (JNIEnv *env, jclass clazz, jlong windowPtr, jdouble minW, jdouble minH, jdouble maxW, jdouble maxH) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; if (minW < 1) minW = 1; if (minH < 1) minH = 1; @@ -921,8 +910,7 @@ AWT_ASSERT_NOT_APPKIT_THREAD; if (maxH < 1) maxH = 1; NSWindow *nsWindow = OBJC(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; @@ -949,12 +937,9 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowT (JNIEnv *env, jclass clazz, jlong windowPtr) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [nsWindow orderBack:nil]; }]; @@ -970,11 +955,9 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowT (JNIEnv *env, jclass clazz, jlong windowPtr) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ if (![nsWindow isKeyWindow]) { [nsWindow makeKeyAndOrderFront:nsWindow]; @@ -995,7 +978,6 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowTi (JNIEnv *env, jclass clazz, jlong windowPtr, jstring jtitle) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); [nsWindow performSelectorOnMainThread:@selector(setTitle:) @@ -1016,15 +998,9 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeRevalidateNSW JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); - if ([NSThread isMainThread]) { + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [nsWindow invalidateShadow]; - } else { - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - - [nsWindow invalidateShadow]; - }]; - } + }]; JNF_COCOA_EXIT(env); } @@ -1060,13 +1036,10 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMi (JNIEnv *env, jclass clazz, jlong windowPtr, jlong nsImagePtr) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); NSImage *image = OBJC(nsImagePtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [nsWindow setMiniwindowImage:image]; }]; @@ -1082,35 +1055,16 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowRe (JNIEnv *env, jclass clazz, jlong windowPtr, jstring filename) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); NSURL *url = (filename == NULL) ? nil : [NSURL fileURLWithPath:JNFNormalizedNSStringForPath(env, filename)]; - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [nsWindow setRepresentedURL:url]; }]; JNF_COCOA_EXIT(env); } -/* - * Class: sun_lwawt_macosx_CPlatformWindow - * Method: nativeSetNSWindowSecurityWarningPositioning - * Signature: (JDDFF)V - */ -JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowSecurityWarningPositioning -(JNIEnv *env, jclass clazz, jlong windowPtr, jdouble x, jdouble y, jfloat biasX, jfloat biasY) -{ -JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; - - [JNFException raise:env as:kRuntimeException reason:"unimplemented"]; - -JNF_COCOA_EXIT(env); -} - /* * Class: sun_lwawt_macosx_CPlatformWindow * Method: nativeGetTopmostPlatformWindowUnderMouse @@ -1144,10 +1098,8 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSynthesizeMou (JNIEnv *env, jclass clazz) { JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [AWTWindow synthesizeMouseEnteredExitedEventsForAllWindows]; }]; @@ -1168,7 +1120,7 @@ JNF_COCOA_ENTER(env); SEL toggleFullScreenSelector = @selector(toggleFullScreen:); if (![nsWindow respondsToSelector:toggleFullScreenSelector]) return; - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [nsWindow performSelector:toggleFullScreenSelector withObject:nil]; }]; @@ -1181,7 +1133,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetEnabled JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; [window setEnabled: isEnabled]; @@ -1196,7 +1148,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeDispose JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; if ([AWTWindow lastKeyWindow] == window) { diff --git a/src/macosx/native/sun/awt/ApplicationDelegate.m b/src/macosx/native/sun/awt/ApplicationDelegate.m index 7ba5fcfe80428dcb7efc2073f6ef71c8830eeedd..9a5aee94d44804e853fed1affa0c9a470e040170 100644 --- a/src/macosx/native/sun/awt/ApplicationDelegate.m +++ b/src/macosx/native/sun/awt/ApplicationDelegate.m @@ -515,10 +515,9 @@ AWT_ASSERT_APPKIT_THREAD; JNIEXPORT void JNICALL Java_com_apple_eawt_Application_nativeInitializeApplicationDelegate (JNIEnv *env, jclass clz) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); // Force initialization to happen on AppKit thread! - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [ApplicationDelegate sharedDelegate]; }]; JNF_COCOA_EXIT(env); @@ -532,10 +531,9 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeOpenCocoaAboutWindow (JNIEnv *env, jclass clz) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [NSApp orderFrontStandardAboutPanel:nil]; }]; @@ -550,10 +548,9 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeReplyToAppShouldTerminate (JNIEnv *env, jclass clz, jboolean doTerminate) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [NSApp replyToApplicationShouldTerminate:doTerminate]; }]; @@ -568,7 +565,6 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeRegisterForNotification (JNIEnv *env, jclass clz, jint notificationType) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThread:@selector(_registerForNotification:) onObject:[ApplicationDelegate class] @@ -586,13 +582,10 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockMenu (JNIEnv *env, jclass clz, jlong nsMenuPtr) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); NSMenu *menu = (NSMenu *)jlong_to_ptr(nsMenuPtr); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ [ApplicationDelegate sharedDelegate].fDockMenu = menu; }]; @@ -607,14 +600,13 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockIconImage (JNIEnv *env, jclass clz, jlong nsImagePtr) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); NSImage *_image = (NSImage *)jlong_to_ptr(nsImagePtr); - [JNFRunLoop performOnMainThread:@selector(_setDockIconImage:) - on:[ApplicationDelegate class] - withObject:_image - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(_setDockIconImage:) + on:[ApplicationDelegate class] + withObject:_image + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -629,12 +621,9 @@ JNIEXPORT jlong JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeGetDockIc { __block NSImage *image = nil; -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ image = [ApplicationDelegate _dockIconImage]; CFRetain(image); }]; @@ -652,13 +641,10 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockIconBadge (JNIEnv *env, jclass clz, jstring badge) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); NSString *badgeString = JNFJavaToNSString(env, badge); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ NSDockTile *dockTile = [NSApp dockTile]; [dockTile setBadgeLabel:badgeString]; [dockTile display]; @@ -675,12 +661,9 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeRequestActivation (JNIEnv *env, jclass clz, jboolean allWindows) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ NSApplicationActivationOptions options = allWindows ? NSApplicationActivateAllWindows : 0; options |= NSApplicationActivateIgnoringOtherApps; // without this, nothing happens! [[NSRunningApplication currentApplication] activateWithOptions:options]; @@ -697,12 +680,9 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeRequestUserAttention (JNIEnv *env, jclass clz, jboolean critical) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [NSApp requestUserAttention:critical ? NSCriticalRequest : NSInformationalRequest]; }]; @@ -717,13 +697,12 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeOpenHelpViewer (JNIEnv *env, jclass clz) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThread:@selector(showHelp:) - on:NSApp - withObject:nil - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(showHelp:) + on:NSApp + withObject:nil + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -736,7 +715,6 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeEnableSuddenTermination (JNIEnv *env, jclass clz) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); [[NSProcessInfo processInfo] enableSuddenTermination]; // Foundation thread-safe @@ -752,7 +730,6 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeDisableSuddenTermination (JNIEnv *env, jclass clz) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); [[NSProcessInfo processInfo] disableSuddenTermination]; // Foundation thread-safe @@ -768,12 +745,9 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMenuBarHandler_nativeSetMenuState (JNIEnv *env, jclass clz, jint menuID, jboolean visible, jboolean enabled) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ ApplicationDelegate *delegate = [ApplicationDelegate sharedDelegate]; switch (menuID) { case com_apple_eawt__AppMenuBarHandler_MENU_ABOUT: @@ -796,12 +770,10 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMenuBarHandler_nativeSetDefaultMenuBar (JNIEnv *env, jclass clz, jlong cMenuBarPtr) { -AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); CMenuBar *menu = (CMenuBar *)jlong_to_ptr(cMenuBarPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [ApplicationDelegate sharedDelegate].fDefaultMenuBar = menu; }]; diff --git a/src/macosx/native/sun/awt/CClipboard.m b/src/macosx/native/sun/awt/CClipboard.m index 366759747053219ab1e1a4dcd624631975e278b1..fb300f729716754e6b6cbcf596e71c9680bd942d 100644 --- a/src/macosx/native/sun/awt/CClipboard.m +++ b/src/macosx/native/sun/awt/CClipboard.m @@ -109,7 +109,6 @@ static CClipboard *sClipboard = nil; } - (void) javaDeclareTypes:(NSArray *)inTypes withOwner:(jobject)inClipboard jniEnv:(JNIEnv *)inEnv { - AWT_ASSERT_NOT_APPKIT_THREAD; //NSLog(@"CClipboard javaDeclareTypes %@ withOwner", inTypes); @@ -134,7 +133,6 @@ static CClipboard *sClipboard = nil; - (NSArray *) javaGetTypes { - AWT_ASSERT_NOT_APPKIT_THREAD; NSMutableArray *args = [NSMutableArray arrayWithCapacity:1]; [ThreadUtilities performOnMainThread:@selector(_nativeGetTypes:) onObject:self withObject:args waitUntilDone:YES awtMode:YES]; @@ -152,7 +150,6 @@ static CClipboard *sClipboard = nil; } - (void) javaSetData:(NSData *)inData forType:(NSString *) inFormat { - AWT_ASSERT_NOT_APPKIT_THREAD; CClipboardUpdate *newUpdate = [[CClipboardUpdate alloc] initWithData:inData withFormat:inFormat]; [ThreadUtilities performOnMainThread:@selector(_nativeSetData:) onObject:self withObject:newUpdate waitUntilDone:YES awtMode:YES]; @@ -171,7 +168,6 @@ static CClipboard *sClipboard = nil; } - (NSData *) javaGetDataForType:(NSString *) inFormat { - AWT_ASSERT_NOT_APPKIT_THREAD; NSMutableArray *args = [NSMutableArray arrayWithObject:inFormat]; [ThreadUtilities performOnMainThread:@selector(_nativeGetDataForType:) onObject:self withObject:args waitUntilDone:YES awtMode:YES]; diff --git a/src/macosx/native/sun/awt/CCursorManager.m b/src/macosx/native/sun/awt/CCursorManager.m index 601ea91e782a6f0b7726c90bc38bbcdfaafe9ed4..232a31621acc16a5683c39a4e9bd81628d281af7 100644 --- a/src/macosx/native/sun/awt/CCursorManager.m +++ b/src/macosx/native/sun/awt/CCursorManager.m @@ -74,7 +74,6 @@ Java_sun_lwawt_macosx_CCursorManager_nativeSetBuiltInCursor (JNIEnv *env, jclass class, jint type, jstring name) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; NSString *cursorName = JNFJavaToNSString(env, name); SEL cursorSelector = (type == sun_lwawt_macosx_CCursorManager_NAMED_CURSOR) ? lookupCursorSelectorForName(cursorName) : lookupCursorSelectorForType(type); @@ -87,9 +86,7 @@ AWT_ASSERT_NOT_APPKIT_THREAD; [JNFException raise:env as:kNoSuchMethodException reason:"missing NSCursor selector"]; } - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ setCursorOnAppKitThread([[NSCursor class] performSelector:cursorSelector]); }]; @@ -101,12 +98,9 @@ Java_sun_lwawt_macosx_CCursorManager_nativeSetCustomCursor (JNIEnv *env, jclass class, jlong imgPtr, jdouble x, jdouble y) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; NSImage *image = (NSImage *)jlong_to_ptr(imgPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ NSCursor *cursor = [[NSCursor alloc] initWithImage:image hotSpot:(NSPoint){ x, y }]; setCursorOnAppKitThread(cursor); @@ -127,8 +121,6 @@ JNF_COCOA_ENTER(env); __block NSPoint pt = NSZeroPoint; [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ - AWT_ASSERT_APPKIT_THREAD; - pt = ConvertNSScreenPoint(env, [NSEvent mouseLocation]); }]; @@ -144,13 +136,11 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CCursorManager_nativeSetAllowsCursorSetInBackground (JNIEnv *env, jclass class, jboolean allows) { - JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; SEL allowsSetInBackground_SEL = @selector(javaSetAllowsCursorSetInBackground:); if ([[NSCursor class] respondsToSelector:allowsSetInBackground_SEL]) { - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ NSMethodSignature *allowsSetInBackground_sig = [[NSCursor class] methodSignatureForSelector:allowsSetInBackground_SEL]; NSInvocation *invocation = diff --git a/src/macosx/native/sun/awt/CDesktopPeer.m b/src/macosx/native/sun/awt/CDesktopPeer.m index af9f3192d912990866e22441b629d4b5fc4ca5a7..9dd121059af6b1eced5d42865cfcf14297ce0143 100644 --- a/src/macosx/native/sun/awt/CDesktopPeer.m +++ b/src/macosx/native/sun/awt/CDesktopPeer.m @@ -36,8 +36,6 @@ JNIEXPORT jint JNICALL Java_sun_lwawt_macosx_CDesktopPeer__1lsOpenURI (JNIEnv *env, jclass clz, jstring uri) { - // AWT_ASSERT_ANY_THREAD - OSStatus status = noErr; JNF_COCOA_ENTER(env); @@ -63,8 +61,6 @@ JNF_COCOA_EXIT(env); JNIEXPORT jint JNICALL Java_sun_lwawt_macosx_CDesktopPeer__1lsOpenFile (JNIEnv *env, jclass clz, jstring jpath, jboolean print) { - // AWT_ASSERT_ANY_THREAD - OSStatus status = noErr; JNF_COCOA_ENTER(env); diff --git a/src/macosx/native/sun/awt/CDragSourceContextPeer.m b/src/macosx/native/sun/awt/CDragSourceContextPeer.m index e2fedfe35df1da79c267e987f0579446d3bd81b1..46788795f45b164205407d46210b61108cb3be4b 100644 --- a/src/macosx/native/sun/awt/CDragSourceContextPeer.m +++ b/src/macosx/native/sun/awt/CDragSourceContextPeer.m @@ -46,7 +46,7 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CDragSourceContextPeer_createNativ __block CDragSource* dragSource = nil; JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ dragSource = [[CDragSource alloc] init:jthis component:jcomponent peer:jpeer control:controlObj transferable:jtransferable triggerEvent:jtrigger dragPosX:jdragposx dragPosY:jdragposy modifiers:jextmodifiers clickCount:jclickcount timeStamp:jtimestamp @@ -103,7 +103,7 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CDragSourceContextPeer_setNativeCursor (JNIEnv *env, jobject jthis, jlong nativeDragSourceVal, jobject jcursor, jint jcursortype) { - AWT_ASSERT_NOT_APPKIT_THREAD; + //AWT_ASSERT_NOT_APPKIT_THREAD; //JNF_COCOA_ENTER(env); // jobject gCursor = JNFNewGlobalRef(env, jcursor); diff --git a/src/macosx/native/sun/awt/CImage.m b/src/macosx/native/sun/awt/CImage.m index 330e9943f62e027e47e5541373c31f7153f022cd..9bd56da3db605ea14ba1f9cf5d29a24b5d0e1300 100644 --- a/src/macosx/native/sun/awt/CImage.m +++ b/src/macosx/native/sun/awt/CImage.m @@ -108,7 +108,6 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromArra jlong result = 0L; JNF_COCOA_ENTER(env); -AWT_ASSERT_ANY_THREAD; NSBitmapImageRep* imageRep = CImage_CreateImageRep(env, buffer, width, height); if (imageRep) { @@ -139,7 +138,6 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromArra jlong result = 0L; JNF_COCOA_ENTER(env); -AWT_ASSERT_ANY_THREAD; jsize num = (*env)->GetArrayLength(env, buffers); NSMutableArray * reps = [NSMutableArray arrayWithCapacity: num]; @@ -187,7 +185,6 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromIcon NSImage *image = nil; JNF_COCOA_ENTER(env); -AWT_ASSERT_ANY_THREAD; IconRef iconRef; if (noErr == GetIconRef(kOnSystemDisk, kSystemIconsCreator, selector, &iconRef)) { @@ -212,7 +209,6 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromFile NSImage *image = nil; JNF_COCOA_ENTER(env); -AWT_ASSERT_ANY_THREAD; NSString *path = JNFNormalizedNSStringForPath(env, file); image = [[NSImage alloc] initByReferencingFile:path]; @@ -234,10 +230,9 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageOfFileFr __block NSImage *image = nil; JNF_COCOA_ENTER(env); -AWT_ASSERT_ANY_THREAD; NSString *path = JNFNormalizedNSStringForPath(env, file); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ image = [[NSWorkspace sharedWorkspace] iconForFile:path]; [image setScalesWhenResized:TRUE]; if (image) CFRetain(image); // GC @@ -259,7 +254,6 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromImag NSImage *image = nil; JNF_COCOA_ENTER(env); -AWT_ASSERT_ANY_THREAD; image = [NSImage imageNamed:JNFJavaToNSString(env, name)]; if (image) CFRetain(image); // GC @@ -278,7 +272,6 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CImage_nativeCopyNSImageIntoArray (JNIEnv *env, jclass klass, jlong nsImgPtr, jintArray buffer, jint w, jint h) { JNF_COCOA_ENTER(env); -AWT_ASSERT_ANY_THREAD; NSImage *img = (NSImage *)jlong_to_ptr(nsImgPtr); jint *dst = (*env)->GetPrimitiveArrayCritical(env, buffer, NULL); @@ -301,7 +294,6 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CImage_nativeGetNSImageSize jobject size = NULL; JNF_COCOA_ENTER(env); -AWT_ASSERT_ANY_THREAD; size = NSToJavaSize(env, [(NSImage *)jlong_to_ptr(nsImgPtr) size]); diff --git a/src/macosx/native/sun/awt/CInputMethod.m b/src/macosx/native/sun/awt/CInputMethod.m index 764e2db534d378224a1f3173dca5376d95e4f2fa..39a66c7242d1faaff47638ac0f76170bd3b10bf4 100644 --- a/src/macosx/native/sun/awt/CInputMethod.m +++ b/src/macosx/native/sun/awt/CInputMethod.m @@ -153,7 +153,7 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CInputMethod_nativeGetCurrentInp __block NSString *keyboardInfo = NULL; JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ keyboardInfo = [inputMethodController performSelector:@selector(currentInputMethodName)]; [keyboardInfo retain]; }]; @@ -177,7 +177,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CInputMethod_nativeNotifyPeer JNF_COCOA_ENTER(env); AWTView *view = (AWTView *)jlong_to_ptr(nativePeer); JNFJObjectWrapper *inputMethodWrapper = [[JNFJObjectWrapper alloc] initWithJObject:inputMethod withEnv:env]; - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [CInputMethod _nativeNotifyPeerWithView:view inputMethod:inputMethodWrapper]; }]; @@ -196,7 +196,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CInputMethod_nativeEndComposition JNF_COCOA_ENTER(env); AWTView *view = (AWTView *)jlong_to_ptr(nativePeer); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [CInputMethod _nativeEndComposition:view]; }]; @@ -216,7 +216,7 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CInputMethod_getNativeLocale __block NSString *isoAbbreviation; JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ isoAbbreviation = (NSString *) [inputMethodController performSelector:@selector(currentInputMethodLocale)]; [isoAbbreviation retain]; }]; @@ -259,7 +259,7 @@ JNF_COCOA_ENTER(env); NSString *localeStr = JNFJavaToNSString(env, locale); [localeStr retain]; - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ [CInputMethod setKeyboardLayout:localeStr]; }]; @@ -293,7 +293,7 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CInputMethodDescriptor_nativeGet __block NSArray *selectableArray = nil; JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ selectableArray = (NSArray *)[inputMethodController performSelector:@selector(availableInputMethodLocales)]; [selectableArray retain]; }]; diff --git a/src/macosx/native/sun/awt/CMenu.m b/src/macosx/native/sun/awt/CMenu.m index 32a9d5b7e125b505c1c2ec020d2d5b77200a5d70..e6325c2c3db608607244c65ae6553cba83543968 100644 --- a/src/macosx/native/sun/awt/CMenu.m +++ b/src/macosx/native/sun/awt/CMenu.m @@ -55,12 +55,10 @@ AWT_ASSERT_APPKIT_THREAD; //- (void)finalize { [super finalize]; } - (void)addJavaSubmenu:(CMenu *)submenu { -AWT_ASSERT_NOT_APPKIT_THREAD; [ThreadUtilities performOnMainThread:@selector(addNativeItem_OnAppKitThread:) onObject:self withObject:submenu waitUntilDone:YES awtMode:YES]; } - (void)addJavaMenuItem:(CMenuItem *)theMenuItem { -AWT_ASSERT_NOT_APPKIT_THREAD; [ThreadUtilities performOnMainThread:@selector(addNativeItem_OnAppKitThread:) onObject:self withObject:theMenuItem waitUntilDone:YES awtMode:YES]; } @@ -70,7 +68,6 @@ AWT_ASSERT_APPKIT_THREAD; } - (void)setJavaMenuTitle:(NSString *)title { -AWT_ASSERT_NOT_APPKIT_THREAD; if (title) { [ThreadUtilities performOnMainThread:@selector(setNativeMenuTitle_OnAppKitThread:) onObject:self withObject:title waitUntilDone:YES awtMode:YES]; @@ -95,7 +92,6 @@ AWT_ASSERT_APPKIT_THREAD; } - (void)deleteJavaItem:(jint)index { -AWT_ASSERT_NOT_APPKIT_THREAD; [ThreadUtilities performOnMainThread:@selector(deleteNativeJavaItem_OnAppKitThread:) onObject:self withObject:[NSNumber numberWithInt:index] waitUntilDone:YES awtMode:YES]; } diff --git a/src/macosx/native/sun/awt/CMenuComponent.m b/src/macosx/native/sun/awt/CMenuComponent.m index 9787625a75163b4b8dcef63d7868fdb9cb754113..4f9fc593e11da71e24ab03b217e6a2bf95834a89 100644 --- a/src/macosx/native/sun/awt/CMenuComponent.m +++ b/src/macosx/native/sun/awt/CMenuComponent.m @@ -80,10 +80,10 @@ Java_sun_lwawt_macosx_CMenuComponent_nativeDispose { JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThread:@selector(disposer) - on:((id)jlong_to_ptr(menuItemObj)) - withObject:nil - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(disposer) + on:((id)jlong_to_ptr(menuItemObj)) + withObject:nil + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } diff --git a/src/macosx/native/sun/awt/CMenuItem.m b/src/macosx/native/sun/awt/CMenuItem.m index 663860d7ff6cc70aa159f1305da64777f8519359..2281d8bcd959db244dbd60e4b92410f68e47d66b 100644 --- a/src/macosx/native/sun/awt/CMenuItem.m +++ b/src/macosx/native/sun/awt/CMenuItem.m @@ -104,7 +104,6 @@ JNF_COCOA_EXIT(env); } - (void) setJavaLabel:(NSString *)theLabel shortcut:(NSString *)theKeyEquivalent modifierMask:(jint)modifiers { -AWT_ASSERT_NOT_APPKIT_THREAD; NSUInteger modifierMask = 0; @@ -126,8 +125,7 @@ AWT_ASSERT_NOT_APPKIT_THREAD; modifierMask = JavaModifiersToNsKeyModifiers(modifiers, NO); } - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ [fMenuItem setKeyEquivalent:theKeyEquivalent]; [fMenuItem setKeyEquivalentModifierMask:modifierMask]; [fMenuItem setTitle:theLabel]; @@ -135,32 +133,23 @@ AWT_ASSERT_NOT_APPKIT_THREAD; } - (void) setJavaImage:(NSImage *)theImage { -AWT_ASSERT_NOT_APPKIT_THREAD; - - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [fMenuItem setImage:theImage]; }]; } - (void) setJavaToolTipText:(NSString *)theText { -AWT_ASSERT_NOT_APPKIT_THREAD; - - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [fMenuItem setToolTip:theText]; }]; } - (void)setJavaEnabled:(BOOL) enabled { -AWT_ASSERT_NOT_APPKIT_THREAD; - - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ @synchronized(self) { fIsEnabled = enabled; @@ -173,7 +162,6 @@ AWT_ASSERT_NOT_APPKIT_THREAD; } - (BOOL)isEnabled { - // AWT_ASSERT_ANY_THREAD; BOOL enabled = NO; @synchronized(self) { @@ -184,11 +172,8 @@ AWT_ASSERT_NOT_APPKIT_THREAD; - (void)setJavaState:(BOOL)newState { -AWT_ASSERT_NOT_APPKIT_THREAD; - - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ -AWT_ASSERT_APPKIT_THREAD; + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [fMenuItem setState:(newState ? NSOnState : NSOffState)]; }]; } diff --git a/src/macosx/native/sun/awt/CPopupMenu.m b/src/macosx/native/sun/awt/CPopupMenu.m index 49f4ceb938443ed8e122cc983efd806e2f6a5fc9..746bf44f785c833f7a8ab8a9818b3f61ce176b48 100644 --- a/src/macosx/native/sun/awt/CPopupMenu.m +++ b/src/macosx/native/sun/awt/CPopupMenu.m @@ -64,7 +64,7 @@ JNF_COCOA_ENTER(env); jobject cPeerObjGlobal = JNFNewGlobalRef(env, peer); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ aCPopupMenu = [[CPopupMenu alloc] initWithPeer:cPeerObjGlobal]; CFRetain(aCPopupMenu); [aCPopupMenu release]; @@ -82,7 +82,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPopupMenu_nativeShowPopupMenu CPopupMenu* cPopupMenu = (CPopupMenu*)jlong_to_ptr(menuPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ NSPoint loc = ConvertNSScreenPoint(env, NSMakePoint(x, y)); [[cPopupMenu menu] popUpMenuPositioningItem: nil diff --git a/src/macosx/native/sun/awt/CTrayIcon.m b/src/macosx/native/sun/awt/CTrayIcon.m index a69995f84aadc0cfca0037a226baa0910c628e52..fbc711534e9b4fbc60c9e737f776ccae3e253cc1 100644 --- a/src/macosx/native/sun/awt/CTrayIcon.m +++ b/src/macosx/native/sun/awt/CTrayIcon.m @@ -303,10 +303,9 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeCreate __block AWTTrayIcon *trayIcon = nil; JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; jobject thePeer = JNFNewGlobalRef(env, peer); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ trayIcon = [[AWTTrayIcon alloc] initWithPeer:thePeer]; }]; @@ -334,11 +333,10 @@ JNIEXPORT void JNICALL Java_java_awt_TrayIcon_initIDs JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeSetToolTip (JNIEnv *env, jobject self, jlong model, jstring jtooltip) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; AWTTrayIcon *icon = jlong_to_ptr(model); NSString *tooltip = JNFJavaToNSString(env, jtooltip); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [icon setTooltip:tooltip]; }]; @@ -353,10 +351,9 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CTrayIcon_setNativeImage (JNIEnv *env, jobject self, jlong model, jlong imagePtr, jboolean autosize) { JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; AWTTrayIcon *icon = jlong_to_ptr(model); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ [icon setImage:jlong_to_ptr(imagePtr) sizing:autosize]; }]; @@ -369,13 +366,10 @@ Java_sun_lwawt_macosx_CTrayIcon_nativeGetIconLocation jobject jpt = NULL; JNF_COCOA_ENTER(env); -AWT_ASSERT_NOT_APPKIT_THREAD; __block NSPoint pt = NSZeroPoint; AWTTrayIcon *icon = jlong_to_ptr(model); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ - AWT_ASSERT_APPKIT_THREAD; - + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ NSPoint loc = [icon getLocationOnScreen]; pt = ConvertNSScreenPoint(env, loc); }]; diff --git a/src/macosx/native/sun/awt/CWrapper.m b/src/macosx/native/sun/awt/CWrapper.m index eb047c5bc8224b84f94d974978c0bd91f6562cb4..538a0c3f1ff9fe68f2d1d615bd7e1561858867d2 100644 --- a/src/macosx/native/sun/awt/CWrapper.m +++ b/src/macosx/native/sun/awt/CWrapper.m @@ -46,7 +46,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSObject_release JNF_COCOA_ENTER(env); id obj = (id)jlong_to_ptr(objectPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ CFRelease(obj); }]; @@ -66,10 +66,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyAndOrderFront JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThread:@selector(makeKeyAndOrderFront:) - on:window - withObject:nil - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(makeKeyAndOrderFront:) + on:window + withObject:nil + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -86,10 +86,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyWindow JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThread:@selector(makeKeyWindow) - on:window - withObject:nil - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(makeKeyWindow) + on:window + withObject:nil + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -106,10 +106,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeMainWindow JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThread:@selector(makeMainWindow) - on:window - withObject:nil - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(makeMainWindow) + on:window + withObject:nil + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -128,7 +128,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_canBecomeMainWindow JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ canBecomeMainWindow = [window canBecomeMainWindow]; }]; @@ -151,7 +151,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_isKeyWindow JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ isKeyWindow = [window isKeyWindow]; }]; @@ -172,10 +172,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFront JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThread:@selector(orderFront:) - on:window - withObject:window - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(orderFront:) + on:window + withObject:window + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -192,10 +192,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderOut JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThread:@selector(orderOut:) - on:window - withObject:window - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(orderOut:) + on:window + withObject:window + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -212,10 +212,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFrontRegardless JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThread:@selector(orderFrontRegardless) - on:window - withObject:nil - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(orderFrontRegardless) + on:window + withObject:nil + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -233,7 +233,7 @@ JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); NSWindow *relativeTo = (NSWindow *)jlong_to_ptr(relativeToPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [window orderWindow:(NSWindowOrderingMode)order relativeTo:[relativeTo windowNumber]]; }]; @@ -267,7 +267,7 @@ JNF_COCOA_ENTER(env); initLevels(); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [window setLevel: LEVELS[level]]; }]; } else { @@ -290,7 +290,7 @@ JNF_COCOA_ENTER(env); NSWindow *parent = (NSWindow *)jlong_to_ptr(parentPtr); NSWindow *child = (NSWindow *)jlong_to_ptr(childPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [parent addChildWindow:child ordered:order]; }]; @@ -310,10 +310,10 @@ JNF_COCOA_ENTER(env); AWTWindow *parent = (AWTWindow *)jlong_to_ptr(parentPtr); AWTWindow *child = (AWTWindow *)jlong_to_ptr(childPtr); - [JNFRunLoop performOnMainThread:@selector(removeChildWindow:) - on:parent - withObject:child - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(removeChildWindow:) + on:parent + withObject:child + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -331,7 +331,7 @@ JNF_COCOA_ENTER(env); AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr); NSRect frame = NSMakeRect(x, y, w, h); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [window setFrame:frame display:display]; }]; @@ -350,7 +350,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setAlphaValue JNF_COCOA_ENTER(env); AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [window setAlphaValue:(CGFloat)alpha]; }]; @@ -369,7 +369,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setOpaque JNF_COCOA_ENTER(env); AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [window setOpaque:(BOOL)opaque]; }]; @@ -389,7 +389,7 @@ JNF_COCOA_ENTER(env); AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr); NSColor *color = (NSColor *)jlong_to_ptr(colorPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [window setBackgroundColor:color]; }]; @@ -410,7 +410,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_screen JNF_COCOA_ENTER(env); AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ const NSScreen *screen = [window screen]; CFRetain(screen); // GC screenPtr = ptr_to_jlong(screen); @@ -432,10 +432,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_miniaturize JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThread:@selector(miniaturize:) - on:window - withObject:nil - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(miniaturize:) + on:window + withObject:nil + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -452,10 +452,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_deminiaturize JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThread:@selector(deminiaturize:) - on:window - withObject:nil - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(deminiaturize:) + on:window + withObject:nil + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -472,10 +472,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_zoom JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); - [JNFRunLoop performOnMainThread:@selector(zoom:) - on:window - withObject:nil - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(zoom:) + on:window + withObject:nil + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -493,10 +493,10 @@ JNF_COCOA_ENTER(env); NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr); NSResponder *responder = (NSResponder *)jlong_to_ptr(responderPtr); - [JNFRunLoop performOnMainThread:@selector(makeFirstResponder:) - on:window - withObject:responder - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(makeFirstResponder:) + on:window + withObject:responder + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -514,7 +514,7 @@ JNF_COCOA_ENTER(env); NSView *view = (NSView *)jlong_to_ptr(viewPtr); NSView *subview = (NSView *)jlong_to_ptr(subviewPtr); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ [view addSubview:subview]; }]; @@ -533,10 +533,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSView_removeFromSuperview JNF_COCOA_ENTER(env); NSView *view = (NSView *)jlong_to_ptr(viewPtr); - [JNFRunLoop performOnMainThread:@selector(removeFromSuperview) - on:view - withObject:nil - waitUntilDone:NO]; + [ThreadUtilities performOnMainThread:@selector(removeFromSuperview) + on:view + withObject:nil + waitUntilDone:NO]; JNF_COCOA_EXIT(env); } @@ -553,7 +553,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSView_setFrame JNF_COCOA_ENTER(env); NSView *view = (NSView *)jlong_to_ptr(viewPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [view setFrame:NSMakeRect(x, y, w, h)]; }]; @@ -576,7 +576,7 @@ JNF_COCOA_ENTER(env); __block NSRect rect = NSZeroRect; NSView *view = (NSView *)jlong_to_ptr(viewPtr); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ rect = [view frame]; }]; @@ -599,7 +599,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSView_enterFullScreenMode JNF_COCOA_ENTER(env); NSView *view = (NSView *)jlong_to_ptr(viewPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ NSScreen *screen = [[view window] screen]; NSDictionary *opts = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], NSFullScreenModeAllScreens, nil]; [view enterFullScreenMode:screen withOptions:opts]; @@ -620,7 +620,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSView_exitFullScreenMode JNF_COCOA_ENTER(env); NSView *view = (NSView *)jlong_to_ptr(viewPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [view exitFullScreenModeWithOptions:nil]; }]; @@ -641,7 +641,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSView_window JNF_COCOA_ENTER(env); NSView *view = (NSView *)jlong_to_ptr(viewPtr); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ windowPtr = ptr_to_jlong([view window]); }]; @@ -655,14 +655,14 @@ JNF_COCOA_EXIT(env); * Method: setHidden * Signature: (JZ)V */ -JNIEXPORT jlong JNICALL +JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CWrapper_00024NSView_setHidden (JNIEnv *env, jclass cls, jlong viewPtr, jboolean toHide) { JNF_COCOA_ENTER(env); NSView *view = (NSView *)jlong_to_ptr(viewPtr); - [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [view setHidden:(BOOL)toHide]; }]; @@ -686,7 +686,7 @@ JNF_COCOA_ENTER(env); __block NSRect rect = NSZeroRect; NSScreen *screen = (NSScreen *)jlong_to_ptr(screenPtr); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ rect = [screen frame]; }]; @@ -713,7 +713,7 @@ JNF_COCOA_ENTER(env); __block NSRect rect = NSZeroRect; NSScreen *screen = (NSScreen *)jlong_to_ptr(screenPtr); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ rect = [screen visibleFrame]; }]; @@ -737,7 +737,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSScreen_screenByDisplayId JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ NSArray *screens = [NSScreen screens]; for (NSScreen *screen in screens) { NSDictionary *screenInfo = [screen deviceDescription]; @@ -768,7 +768,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSColor_clearColor JNF_COCOA_ENTER(env); - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ clearColorPtr = ptr_to_jlong([NSColor clearColor]); }]; diff --git a/src/macosx/native/sun/awt/JavaComponentAccessibility.m b/src/macosx/native/sun/awt/JavaComponentAccessibility.m index 61ba619af40a96464a3e3f4f1718106b6760cf69..f886c4afbe17610ee0afbb0b7c59cfdc2441c548 100644 --- a/src/macosx/native/sun/awt/JavaComponentAccessibility.m +++ b/src/macosx/native/sun/awt/JavaComponentAccessibility.m @@ -1147,7 +1147,6 @@ static NSObject *sAttributeNamesLOCK = nil; JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CAccessibility_focusChanged (JNIEnv *env, jobject jthis) { - AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThread:@selector(postFocusChanged:) onObject:[JavaComponentAccessibility class] withObject:nil waitUntilDone:NO awtMode:NO]; @@ -1164,7 +1163,6 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CAccessible_valueChanged (JNIEnv *env, jclass jklass, jlong element) { - AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThread:@selector(postValueChanged) onObject:(JavaComponentAccessibility *)jlong_to_ptr(element) withObject:nil waitUntilDone:NO awtMode:NO]; JNF_COCOA_EXIT(env); @@ -1178,7 +1176,6 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CAccessible_selectionChanged (JNIEnv *env, jclass jklass, jlong element) { - AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThread:@selector(postSelectionChanged) onObject:(JavaComponentAccessibility *)jlong_to_ptr(element) withObject:nil waitUntilDone:NO awtMode:NO]; JNF_COCOA_EXIT(env); @@ -1193,7 +1190,6 @@ JNF_COCOA_EXIT(env); JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CAccessible_unregisterFromCocoaAXSystem (JNIEnv *env, jclass jklass, jlong element) { - AWT_ASSERT_NOT_APPKIT_THREAD; JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThread:@selector(unregisterFromCocoaAXSystem) onObject:(JavaComponentAccessibility *)jlong_to_ptr(element) withObject:nil waitUntilDone:NO awtMode:NO]; JNF_COCOA_EXIT(env); diff --git a/src/macosx/native/sun/awt/LWCToolkit.m b/src/macosx/native/sun/awt/LWCToolkit.m index b58cfc0627dd00c8e2cdf4db518d78d8f4923069..45c546181f0374698f4d06aa775662134d1c1fdc 100644 --- a/src/macosx/native/sun/awt/LWCToolkit.m +++ b/src/macosx/native/sun/awt/LWCToolkit.m @@ -415,13 +415,9 @@ JNIEXPORT jboolean JNICALL Java_sun_lwawt_macosx_LWCToolkit_isApplicationActive JNF_COCOA_ENTER(env); - if ([NSThread isMainThread]) { + [ThreadUtilities performOnMainThreadWaiting:YES block:^() { active = (jboolean)[NSRunningApplication currentApplication].active; - } else { - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^() { - active = (jboolean)[NSRunningApplication currentApplication].active; - }]; - } + }]; JNF_COCOA_EXIT(env); diff --git a/src/macosx/native/sun/awt/awt.m b/src/macosx/native/sun/awt/awt.m index 8ca56bd117cc4dda5c58d8c182e1c5db01b995fa..ea684ed0808a228317c5d8ab3eda59d68fe66d3d 100644 --- a/src/macosx/native/sun/awt/awt.m +++ b/src/macosx/native/sun/awt/awt.m @@ -42,6 +42,15 @@ // The symbol is defined in libosxapp.dylib (ThreadUtilities.m) extern JavaVM *jvm; +// Indicates if AWT is running embedded (in SWT, FX, elsewhere) +static BOOL isEmbedded = NO; + +// Indicates that the app has been started with -XstartOnFirstThread +// (directly or via WebStart settings), and AWT should not run its +// own event loop in this mode. Even if a loop isn't running yet, +// we expect an embedder (e.g. SWT) to start it some time later. +static BOOL forceEmbeddedMode = NO; + static bool ShouldPrintVerboseDebugging() { static int debug = -1; if (debug == -1) { @@ -63,31 +72,29 @@ static void AWT_NSUncaughtExceptionHandler(NSException *exception); static CFRunLoopObserverRef busyObserver = NULL; static CFRunLoopObserverRef notBusyObserver = NULL; -static void setUpAWTAppKit(BOOL swt_mode, BOOL headless) { -AWT_ASSERT_APPKIT_THREAD; +static void setUpAWTAppKit() +{ BOOL verbose = ShouldPrintVerboseDebugging(); if (verbose) AWT_DEBUG_LOG(@"setting up busy observers"); - JNIEnv *env = [ThreadUtilities getJNIEnv]; - // Add CFRunLoopObservers to call into AWT so that AWT knows that the // AWT thread (which is the AppKit main thread) is alive. This way AWT // will not automatically shutdown. busyObserver = CFRunLoopObserverCreate( - NULL, // CFAllocator - kCFRunLoopAfterWaiting, // CFOptionFlags - true, // repeats - NSIntegerMax, // order - &BusyObserver, // CFRunLoopObserverCallBack - NULL); // CFRunLoopObserverContext + NULL, // CFAllocator + kCFRunLoopAfterWaiting, // CFOptionFlags + true, // repeats + NSIntegerMax, // order + &BusyObserver, // CFRunLoopObserverCallBack + NULL); // CFRunLoopObserverContext notBusyObserver = CFRunLoopObserverCreate( - NULL, // CFAllocator - kCFRunLoopBeforeWaiting, // CFOptionFlags - true, // repeats - NSIntegerMin, // order - &NotBusyObserver, // CFRunLoopObserverCallBack - NULL); // CFRunLoopObserverContext + NULL, // CFAllocator + kCFRunLoopBeforeWaiting, // CFOptionFlags + true, // repeats + NSIntegerMin, // order + &NotBusyObserver, // CFRunLoopObserverCallBack + NULL); // CFRunLoopObserverContext CFRunLoopRef runLoop = [[NSRunLoop currentRunLoop] getCFRunLoop]; CFRunLoopAddObserver(runLoop, busyObserver, kCFRunLoopDefaultMode); @@ -95,29 +102,33 @@ AWT_ASSERT_APPKIT_THREAD; CFRelease(busyObserver); CFRelease(notBusyObserver); - - if (!headless) setBusy(YES); + + setBusy(YES); +} + +static void setUpAppKitThreadName() +{ + BOOL verbose = ShouldPrintVerboseDebugging(); + JNIEnv *env = [ThreadUtilities getJNIEnv]; // Set the java name of the AppKit main thread appropriately. jclass threadClass = NULL; jstring name = NULL; jobject curThread = NULL; - if (!swt_mode) { - threadClass = (*env)->FindClass(env, "java/lang/Thread"); - if (threadClass == NULL || (*env)->ExceptionCheck(env)) goto cleanup; - jmethodID currentThreadID = (*env)->GetStaticMethodID(env, threadClass, "currentThread", "()Ljava/lang/Thread;"); - if (currentThreadID == NULL || (*env)->ExceptionCheck(env)) goto cleanup; - jmethodID setName = (*env)->GetMethodID(env, threadClass, "setName", "(Ljava/lang/String;)V"); - if (setName == NULL || (*env)->ExceptionCheck(env)) goto cleanup; - - curThread = (*env)->CallStaticObjectMethod(env, threadClass, currentThreadID); // AWT_THREADING Safe (known object) - if (curThread == NULL || (*env)->ExceptionCheck(env)) goto cleanup; - name = (*env)->NewStringUTF(env, "AWT-AppKit"); - if (name == NULL || (*env)->ExceptionCheck(env)) goto cleanup; - (*env)->CallVoidMethod(env, curThread, setName, name); // AWT_THREADING Safe (known object) - if ((*env)->ExceptionCheck(env)) goto cleanup; - } + threadClass = (*env)->FindClass(env, "java/lang/Thread"); + if (threadClass == NULL || (*env)->ExceptionCheck(env)) goto cleanup; + jmethodID currentThreadID = (*env)->GetStaticMethodID(env, threadClass, "currentThread", "()Ljava/lang/Thread;"); + if (currentThreadID == NULL || (*env)->ExceptionCheck(env)) goto cleanup; + jmethodID setName = (*env)->GetMethodID(env, threadClass, "setName", "(Ljava/lang/String;)V"); + if (setName == NULL || (*env)->ExceptionCheck(env)) goto cleanup; + + curThread = (*env)->CallStaticObjectMethod(env, threadClass, currentThreadID); // AWT_THREADING Safe (known object) + if (curThread == NULL || (*env)->ExceptionCheck(env)) goto cleanup; + name = (*env)->NewStringUTF(env, "AWT-AppKit"); + if (name == NULL || (*env)->ExceptionCheck(env)) goto cleanup; + (*env)->CallVoidMethod(env, curThread, setName, name); // AWT_THREADING Safe (known object) + if ((*env)->ExceptionCheck(env)) goto cleanup; cleanup: if (threadClass != NULL) { @@ -134,14 +145,10 @@ cleanup: (*env)->ExceptionClear(env); } - // Add the exception handler of last resort - NSSetUncaughtExceptionHandler(AWT_NSUncaughtExceptionHandler); - if (verbose) AWT_DEBUG_LOG(@"finished setting thread name"); } - // Returns true if java believes it is running headless BOOL isHeadless(JNIEnv *env) { // Just access the property directly, instead of using GraphicsEnvironment.isHeadless. @@ -200,7 +207,7 @@ static void AWT_NSUncaughtExceptionHandler(NSException *exception) { // This is an empty Obj-C object just so that -peformSelectorOnMainThread can be used. @interface AWTStarter : NSObject { } -+ (void)start:(BOOL)headless swtMode:(BOOL)swtMode swtModeForWebStart:(BOOL)swtModeForWebStart; ++ (void)start:(BOOL)headless; - (void)starter:(NSArray*)args; + (void)appKitIsRunning:(id)arg; @end @@ -242,7 +249,7 @@ AWT_ASSERT_APPKIT_THREAD; if (verbose) AWT_DEBUG_LOG(@"finished messaging AppKit started"); } -+ (void)start:(BOOL)headless swtMode:(BOOL)swtMode swtModeForWebStart:(BOOL)swtModeForWebStart ++ (void)start:(BOOL)headless { BOOL verbose = ShouldPrintVerboseDebugging(); @@ -258,7 +265,7 @@ AWT_ASSERT_APPKIT_THREAD; BOOL onMainThread = (pthread_main_np() != 0); if (verbose) { - NSString *msg = [NSString stringWithFormat:@"+[AWTStarter start headless:%d swtMode:%d swtModeForWebStart:%d] { onMainThread:%d }", headless, swtMode, swtModeForWebStart, onMainThread]; + NSString *msg = [NSString stringWithFormat:@"+[AWTStarter start headless:%d] { onMainThread:%d }", headless, onMainThread]; AWT_DEBUG_LOG(msg); } @@ -280,9 +287,7 @@ AWT_ASSERT_APPKIT_THREAD; NSArray * args = [NSArray arrayWithObjects: [NSNumber numberWithBool: onMainThread], - [NSNumber numberWithBool: swtMode], [NSNumber numberWithBool: headless], - [NSNumber numberWithBool: swtModeForWebStart], [NSNumber numberWithBool: verbose], nil]; @@ -310,39 +315,38 @@ AWT_ASSERT_APPKIT_THREAD; // Don't set the delegate until the NSApplication has been created and // its finishLaunching has initialized it. // ApplicationDelegate is the support code for com.apple.eawt. - void (^setDelegateBlock)() = ^(){ + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ OSXAPP_SetApplicationDelegate([ApplicationDelegate sharedDelegate]); - }; - if (onMainThread) { - setDelegateBlock(); - } else { - [JNFRunLoop performOnMainThreadWaiting:YES withBlock:setDelegateBlock]; - } + }]; } - (void)starter:(NSArray*)args { NSAutoreleasePool *pool = [NSAutoreleasePool new]; BOOL onMainThread = [[args objectAtIndex:0] boolValue]; - BOOL swtMode = [[args objectAtIndex:1] boolValue]; - BOOL headless = [[args objectAtIndex:2] boolValue]; - BOOL swtModeForWebStart = [[args objectAtIndex:3] boolValue]; - BOOL verbose = [[args objectAtIndex:4] boolValue]; + BOOL headless = [[args objectAtIndex:1] boolValue]; + BOOL verbose = [[args objectAtIndex:2] boolValue]; BOOL wasOnMainThread = onMainThread; - setUpAWTAppKit(swtMode, headless); + // Add the exception handler of last resort + NSSetUncaughtExceptionHandler(AWT_NSUncaughtExceptionHandler); // Headless mode trumps either ordinary AWT or SWT-in-AWT mode. Declare us a daemon and return. if (headless) { - BOOL didBecomeDaemon = [AWTStarter markAppAsDaemon]; + if (!forceEmbeddedMode) { + setUpAppKitThreadName(); + } + [AWTStarter markAppAsDaemon]; return; } - if (swtMode || swtModeForWebStart) { + if (forceEmbeddedMode) { if (verbose) NSLog(@"in SWT or SWT/WebStart mode"); - // The SWT should call NSApplicationLoad, but they don't know a priori that they will be using the AWT, so they don't. + // Init a default NSApplication instance instead of the NSApplicationAWT. + // Note that [NSApp isRunning] will return YES after that, though + // this behavior isn't specified anywhere. We rely on that. NSApplicationLoad(); } @@ -351,6 +355,13 @@ AWT_ASSERT_APPKIT_THREAD; // and -[NSApplication isRunning] returns YES, AWT is embedded inside another // AppKit Application. NSApplication *app = [NSApplicationAWT sharedApplication]; + isEmbedded = ![NSApp isKindOfClass:[NSApplicationAWT class]]; + + if (!isEmbedded) { + // Install run loop observers and set the AppKit Java thread name + setUpAWTAppKit(); + setUpAppKitThreadName(); + } // AWT gets to this point BEFORE NSApplicationDidFinishLaunchingNotification is sent. if (![app isRunning]) { @@ -360,17 +371,11 @@ AWT_ASSERT_APPKIT_THREAD; [NSApplicationAWT runAWTLoopWithApp: app]; } else { // We're either embedded, or showing a splash screen - if (![NSApp isKindOfClass:[NSApplicationAWT class]]) { + if (isEmbedded) { if (verbose) AWT_DEBUG_LOG(@"running embedded"); - // Since we're embedded, no need to be swamping the runloop with the observers. - CFRunLoopRef runLoop = [[NSRunLoop currentRunLoop] getCFRunLoop]; - CFRunLoopRemoveObserver(runLoop, busyObserver, kCFRunLoopDefaultMode); - CFRunLoopRemoveObserver(runLoop, notBusyObserver, kCFRunLoopDefaultMode); // We don't track if the runloop is busy, so set it free to let AWT finish when it needs setBusy(NO); - busyObserver = NULL; - notBusyObserver = NULL; } else { if (verbose) AWT_DEBUG_LOG(@"running after showing a splash screen"); } @@ -408,49 +413,28 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { return JNI_VERSION_1_4; } - // The following is true when AWT is attempting to connect to the window server - // when it isn't set up properly to do so. - // BOOL AWTLoadFailure = YES; For now we are skipping this check so i'm commenting out this variable as unused JNF_COCOA_ENTER(env); - // If -XstartOnFirstThread was used at invocation time, an environment variable will be set. - // (See java_md.c for the matching setenv call.) When that happens, we assume the SWT will be in use. - BOOL swt_compatible_mode = NO; - + // Launcher sets this env variable if -XstartOnFirstThread is specified char envVar[80]; snprintf(envVar, sizeof(envVar), "JAVA_STARTED_ON_FIRST_THREAD_%d", getpid()); if (getenv(envVar) != NULL) { - swt_compatible_mode = YES; + forceEmbeddedMode = YES; unsetenv(envVar); } - BOOL swt_in_webstart = isSWTInWebStart(env); - BOOL headless = isHeadless(env); - - // Make sure we're on the right thread. If not, we still need the JNIEnv to throw an exception. - if (pthread_main_np() != 0 && !swt_compatible_mode && !headless) { - AWT_DEBUG_LOG(@"Apple AWT Java VM was loaded on first thread -- can't start AWT."); - [JNFException raise:env as:kInternalError reason:"Can't start the AWT because Java was started on the first thread. Make sure StartOnFirstThread is " - "not specified in your application's Info.plist or on the command line"]; - return JNI_VERSION_1_4; + if (isSWTInWebStart(env)) { + forceEmbeddedMode = YES; } + BOOL headless = isHeadless(env); + // We need to let Foundation know that this is a multithreaded application, if it isn't already. if (![NSThread isMultiThreaded]) { [NSThread detachNewThreadSelector:nil toTarget:nil withObject:nil]; } -// if (swt_compatible_mode || headless || [AWTStarter isConnectedToWindowServer] || [AWTStarter isRemoteSession]) { -// No need in this check - we will try to launch AWTStarter anyways - to be able to run GUI application remotely -// AWTLoadFailure = NO; - - [AWTStarter start:headless swtMode:swt_compatible_mode swtModeForWebStart:swt_in_webstart]; - -// } - -/* if (AWTLoadFailure) { // We will not reach this code anyways - [JNFException raise:env as:kInternalError reason:"Can't connect to window server - not enough permissions."]; - } */ + [AWTStarter start:headless]; JNF_COCOA_EXIT(env); diff --git a/src/macosx/native/sun/osxapp/ThreadUtilities.h b/src/macosx/native/sun/osxapp/ThreadUtilities.h index 0acde2f9aa63131802720749f0ae03bcc3dc5b01..c0d2054f6e30c4d001376b7a83409ba76ddc4fcc 100644 --- a/src/macosx/native/sun/osxapp/ThreadUtilities.h +++ b/src/macosx/native/sun/osxapp/ThreadUtilities.h @@ -98,8 +98,6 @@ do { \ } \ } while (0) -#define AWT_ASSERT_ANY_THREAD - #endif /* AWT_THREAD_ASSERTS_MESSAGES */ #ifdef AWT_THREAD_ASSERTS_WAIT @@ -114,15 +112,12 @@ do { \ while (pthread_main_np() != 0) {} \ } while (0) -#define AWT_ASSERT_ANY_THREAD - #endif /* AWT_THREAD_ASSERTS_WAIT */ #else /* AWT_THREAD_ASSERTS */ #define AWT_ASSERT_APPKIT_THREAD do {} while (0) #define AWT_ASSERT_NOT_APPKIT_THREAD do {} while (0) -#define AWT_ASSERT_ANY_THREAD #endif /* AWT_THREAD_ASSERTS */ // -------------------------------------------------------------------------- @@ -139,7 +134,10 @@ __attribute__((visibility("default"))) + (JNIEnv*)getJNIEnvUncached; + (void)performOnMainThread:(SEL)aSelector onObject:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait awtMode:(BOOL)inAWT; + +//Wrappers for the corresponding JNFRunLoop methods with a check for main thread + (void)performOnMainThreadWaiting:(BOOL)wait block:(void (^)())block; ++ (void)performOnMainThread:(SEL)aSelector on:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait; @end void OSXAPP_SetJavaVM(JavaVM *vm); diff --git a/src/macosx/native/sun/osxapp/ThreadUtilities.m b/src/macosx/native/sun/osxapp/ThreadUtilities.m index 0e40fc1a52ba01d537260993f46817536d271615..0b42f1b5896ee648b78bcb848ea9decdf22b4baf 100644 --- a/src/macosx/native/sun/osxapp/ThreadUtilities.m +++ b/src/macosx/native/sun/osxapp/ThreadUtilities.m @@ -37,27 +37,13 @@ static JNIEnv *appKitEnv = NULL; static NSArray *sPerformModes = nil; static NSArray *sAWTPerformModes = nil; -static BOOL sCocoaComponentCompatibility = NO; -static NSTimeInterval sCocoaComponentCompatibilityTimeout = 0.5; static BOOL sLoggingEnabled = YES; #ifdef AWT_THREAD_ASSERTS_ENV_ASSERT int sAWTThreadAsserts = 0; #endif /* AWT_THREAD_ASSERTS_ENV_ASSERT */ - -// This is for backward compatibility for those people using CocoaComponent -// Since we've flipped the AWT threading model for Tiger (10.4), all the rules -// for CocoaComponent are wrong. -// So for existing CocoaComponent users, we can't be synchronous. -// Making things totally asynchronous breaks a _lot_, so we try to be -// synchronous and time out after a little bit. -#define NOT_READY 0 -#define READY 1 -#define IN_PROGRESS 2 - BOOL sInPerformFromJava = NO; -NSUInteger sPerformCount = 0; // This class is used so that performSelectorOnMainThread can be // controlled a little more easily by us. It has 2 roles. @@ -73,8 +59,6 @@ NSUInteger sPerformCount = 0; - (id) initWithTarget:(id)target selector:(SEL)selector arg:(id)arg wait:(BOOL)wait; - (void) perform; -- (void) performCompatible; -- (void) _performCompatible:(NSConditionLock *)resultLock; @end @@ -113,8 +97,6 @@ NSUInteger sPerformCount = 0; sInPerformFromJava = YES; } - sPerformCount++; - // Actually do the work (cheat to avoid a method call) @try { objc_msgSend(fTarget, fSelector, fArg); @@ -128,69 +110,6 @@ NSUInteger sPerformCount = 0; } } } - -- (void) performCompatible { - // We check if we are on the AppKit thread because frequently, apps - // using CocoaComponent are doing things on the wrong thread! - if (pthread_main_np()) { - [fTarget performSelector:fSelector withObject:fArg]; - } else { - // Setup the lock - NSConditionLock *resultLock = - [[NSConditionLock alloc] initWithCondition:NOT_READY]; - - // Make sure that if we return early, nothing gets released out - // from under us - [resultLock retain]; - [fTarget retain]; - [fArg retain]; - [self retain]; - // Do an asynchronous perform to the main thread. - [self performSelectorOnMainThread:@selector(_performCompatible:) - withObject:resultLock waitUntilDone:NO modes:sAWTPerformModes]; - - // Wait for a little bit for it to finish - [resultLock lockWhenCondition:READY beforeDate:[NSDate dateWithTimeIntervalSinceNow:sCocoaComponentCompatibilityTimeout]]; - - // If the _performCompatible is actually in progress, - // we should let it finish - if ([resultLock condition] == IN_PROGRESS) { - [resultLock lockWhenCondition:READY]; - } - - if ([resultLock condition] == NOT_READY && sLoggingEnabled) { - NSLog(@"[Java CocoaComponent compatibility mode]: Operation timed out due to possible deadlock: selector '%@' on target '%@' with args '%@'", NSStringFromSelector(fSelector), fTarget, fArg); - } - - [resultLock unlock]; - [resultLock autorelease]; - } -} - -- (void) _performCompatible:(NSConditionLock *)resultLock { - // notify that the perform is in progress! - [resultLock lock]; - [resultLock unlockWithCondition:IN_PROGRESS]; - - sPerformCount++; - - // Actually do the work. - @try { - [fTarget performSelector:fSelector withObject:fArg]; - } @catch (NSException *e) { - NSLog(@"*** CPerformer: ignoring exception '%@' raised during performCompatible of selector '%@' on target '%@' with args '%@'", e, NSStringFromSelector(fSelector), fTarget, fArg); - } @finally { - // notify done! - [resultLock lock]; - [resultLock unlockWithCondition:READY]; - - // Clean up after ourselves - [resultLock autorelease]; - [fTarget autorelease]; - [fArg autorelease]; - [self autorelease]; - } -} @end @@ -236,13 +155,8 @@ AWT_ASSERT_APPKIT_THREAD; // java event thread without deadlocking. See CToolkit.invokeAndWait. + (void)performOnMainThread:(SEL)aSelector onObject:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait awtMode:(BOOL)inAWT { CPerformer *performer = [[CPerformer alloc] initWithTarget:target selector:aSelector arg:arg wait:wait]; - if (sCocoaComponentCompatibility && wait && inAWT) { - [performer performCompatible]; - [performer autorelease]; - } else { - [performer performSelectorOnMainThread:@selector(perform) withObject:nil waitUntilDone:wait modes:((inAWT) ? sAWTPerformModes : sPerformModes)]; // AWT_THREADING Safe (cover method) - [performer release]; - } + [performer performSelectorOnMainThread:@selector(perform) withObject:nil waitUntilDone:wait modes:((inAWT) ? sAWTPerformModes : sPerformModes)]; // AWT_THREADING Safe (cover method) + [performer release]; } + (void)performOnMainThreadWaiting:(BOOL)wait block:(void (^)())block { @@ -253,6 +167,14 @@ AWT_ASSERT_APPKIT_THREAD; } } ++ (void)performOnMainThread:(SEL)aSelector on:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait { + if ([NSThread isMainThread] && wait == YES) { + [target performSelector:aSelector withObject:arg]; + } else { + [JNFRunLoop performOnMainThread:aSelector on:target withObject:arg waitUntilDone:wait]; + } +} + @end diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java b/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java index 6fb52a4cd4ac3fe6004d2c020565d82a2b929708..1fe26b09f310ae05c54593b2acfebaf2924a72d7 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java @@ -787,7 +787,6 @@ public class GTKLookAndFeel extends SynthLookAndFeel { "List.font", new FontLazyValue(Region.LIST), "List.rendererUseUIBorder", Boolean.FALSE, - "Menu.shortcutKeys", new int[] {KeyEvent.ALT_MASK}, "Menu.arrowIcon", new GTKStyle.GTKLazyValue( "com.sun.java.swing.plaf.gtk.GTKIconFactory", "getMenuArrowIcon"), diff --git a/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java b/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java index 923cd9d18b9d7ff2ff71bb3e0707ce11447e8781..fdc6fa6210a2956d5e5bdb55612b33be1718b852 100644 --- a/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java +++ b/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java @@ -630,8 +630,10 @@ public class MotifLookAndFeel extends BasicLookAndFeel "Menu.menuPopupOffsetY", new Integer(0), "Menu.submenuPopupOffsetX", new Integer(-2), "Menu.submenuPopupOffsetY", new Integer(3), - "Menu.shortcutKeys", new int[] {KeyEvent.ALT_MASK, - KeyEvent.META_MASK}, + "Menu.shortcutKeys", new int[]{ + SwingUtilities2.getSystemMnemonicKeyMask(), + KeyEvent.META_MASK + }, "Menu.cancelMode", "hideMenuTree", "MenuBar.border", menuBarBorder, diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java index 7d5e237948cd2f0f7def3ef0e04c7ccef3cc8c1a..6213ac1e0c0afae295b8c5bdb2eff3649a509b96 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java @@ -2619,13 +2619,15 @@ public class WindowsLookAndFeel extends BasicLookAndFeel private static class FocusColorProperty extends DesktopProperty { public FocusColorProperty () { - // Fallback value is never used bacause of the configureValue method doesn't return null + // Fallback value is never used because of the configureValue method doesn't return null super("win.3d.backgroundColor", Color.BLACK); } @Override protected Object configureValue(Object value) { - if (! ((Boolean)Toolkit.getDefaultToolkit().getDesktopProperty("win.highContrast.on")).booleanValue()){ + Object highContrastOn = Toolkit.getDefaultToolkit(). + getDesktopProperty("win.highContrast.on"); + if (highContrastOn == null || !((Boolean) highContrastOn).booleanValue()) { return Color.BLACK; } return Color.BLACK.equals(value) ? Color.WHITE : Color.BLACK; diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java index 1fbc2254d99ce746e5aa79b92d585b4a8b9cdeb6..db5baf9610c6afc7ec9989581c817ac8d70c3676 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java @@ -93,6 +93,11 @@ public class WindowsTreeUI extends BasicTreeUI { counter = endRow; } } + + if (testRect == null) { + return; + } + tree.scrollRectToVisible(new Rectangle(visRect.x, beginY, 1, testRect.y + testRect.height- beginY)); diff --git a/src/share/classes/java/awt/Button.java b/src/share/classes/java/awt/Button.java index f0bad87430b13fcc443a98b3cbf47b45a9d9a441..9fe42d41cbcd658ea4d9fec3b98e5c229955792c 100644 --- a/src/share/classes/java/awt/Button.java +++ b/src/share/classes/java/awt/Button.java @@ -300,7 +300,7 @@ public class Button extends Component implements Accessible { * @since 1.4 */ public synchronized ActionListener[] getActionListeners() { - return (ActionListener[]) (getListeners(ActionListener.class)); + return getListeners(ActionListener.class); } /** diff --git a/src/share/classes/java/awt/Checkbox.java b/src/share/classes/java/awt/Checkbox.java index 5c8e65f8aac682f0750e7dc591226958b48ea74e..f0486f35e45a0c28db9b37f28ff00fac904edb79 100644 --- a/src/share/classes/java/awt/Checkbox.java +++ b/src/share/classes/java/awt/Checkbox.java @@ -470,7 +470,7 @@ public class Checkbox extends Component implements ItemSelectable, Accessible { * @since 1.4 */ public synchronized ItemListener[] getItemListeners() { - return (ItemListener[]) (getListeners(ItemListener.class)); + return getListeners(ItemListener.class); } /** diff --git a/src/share/classes/java/awt/Choice.java b/src/share/classes/java/awt/Choice.java index 895be89a615ba54b5b9f2822c9e9a0293335754c..9ef765818dc05ae39c86a149940dc28ee90e42c2 100644 --- a/src/share/classes/java/awt/Choice.java +++ b/src/share/classes/java/awt/Choice.java @@ -85,7 +85,7 @@ public class Choice extends Component implements ItemSelectable, Accessible { * @see #insert(String, int) * @see #remove(String) */ - Vector pItems; + Vector pItems; /** * The index of the current choice for this Choice @@ -129,7 +129,7 @@ public class Choice extends Component implements ItemSelectable, Accessible { */ public Choice() throws HeadlessException { GraphicsEnvironment.checkHeadless(); - pItems = new Vector(); + pItems = new Vector<>(); } /** @@ -191,7 +191,7 @@ public class Choice extends Component implements ItemSelectable, Accessible { * be called on the toolkit thread. */ final String getItemImpl(int index) { - return (String)pItems.elementAt(index); + return pItems.elementAt(index); } /** @@ -524,7 +524,7 @@ public class Choice extends Component implements ItemSelectable, Accessible { * @since 1.4 */ public synchronized ItemListener[] getItemListeners() { - return (ItemListener[])(getListeners(ItemListener.class)); + return getListeners(ItemListener.class); } /** diff --git a/src/share/classes/java/awt/Component.java b/src/share/classes/java/awt/Component.java index e4f25f0da2bc8c5049253b62627d5bf36e2c74fa..42e422d3e9338eabcc9de1dbb45aadd83bb77542 100644 --- a/src/share/classes/java/awt/Component.java +++ b/src/share/classes/java/awt/Component.java @@ -7287,6 +7287,7 @@ public abstract class Component implements ImageObserver, MenuContainer, } final Set getFocusTraversalKeys_NoIDCheck(int id) { // Okay to return Set directly because it is an unmodifiable view + @SuppressWarnings("unchecked") Set keystrokes = (focusTraversalKeys != null) ? focusTraversalKeys[id] : null; diff --git a/src/share/classes/java/awt/Container.java b/src/share/classes/java/awt/Container.java index ce2a19138b12045e7ad779ad2ac6d733d3d588ce..78af6b10c62e827cc43f0ceeb1542a762c121065 100644 --- a/src/share/classes/java/awt/Container.java +++ b/src/share/classes/java/awt/Container.java @@ -161,7 +161,7 @@ public class Container extends Component { private boolean focusTraversalPolicyProvider; // keeps track of the threads that are printing this component - private transient Set printingThreads; + private transient Set printingThreads; // True if there is at least one thread that's printing this component private transient boolean printing = false; @@ -275,7 +275,7 @@ public class Container extends Component { */ public Container() { } - + @SuppressWarnings({"unchecked","rawtypes"}) void initializeFocusTraversalKeys() { focusTraversalKeys = new Set[4]; } @@ -2006,7 +2006,7 @@ public class Container extends Component { try { synchronized (getObjectLock()) { if (printingThreads == null) { - printingThreads = new HashSet(); + printingThreads = new HashSet<>(); } printingThreads.add(t); printing = true; @@ -2148,7 +2148,7 @@ public class Container extends Component { * @since 1.4 */ public synchronized ContainerListener[] getContainerListeners() { - return (ContainerListener[]) (getListeners(ContainerListener.class)); + return getListeners(ContainerListener.class); } /** @@ -2599,9 +2599,9 @@ public class Container extends Component { if (GraphicsEnvironment.isHeadless()) { throw new HeadlessException(); } - PointerInfo pi = (PointerInfo)java.security.AccessController.doPrivileged( - new java.security.PrivilegedAction() { - public Object run() { + PointerInfo pi = java.security.AccessController.doPrivileged( + new java.security.PrivilegedAction() { + public PointerInfo run() { return MouseInfo.getPointerInfo(); } } @@ -2682,7 +2682,7 @@ public class Container extends Component { y - comp.y, ignoreEnabled); } else { - comp = comp.locate(x - comp.x, y - comp.y); + comp = comp.getComponentAt(x - comp.x, y - comp.y); } if (comp != null && comp.visible && (ignoreEnabled || comp.enabled)) @@ -2700,7 +2700,7 @@ public class Container extends Component { y - comp.y, ignoreEnabled); } else { - comp = comp.locate(x - comp.x, y - comp.y); + comp = comp.getComponentAt(x - comp.x, y - comp.y); } if (comp != null && comp.visible && (ignoreEnabled || comp.enabled)) @@ -4637,7 +4637,7 @@ class LightweightDispatcher implements java.io.Serializable, AWTEventListener { private void startListeningForOtherDrags() { //System.out.println("Adding AWTEventListener"); java.security.AccessController.doPrivileged( - new java.security.PrivilegedAction() { + new java.security.PrivilegedAction() { public Object run() { nativeContainer.getToolkit().addAWTEventListener( LightweightDispatcher.this, @@ -4652,7 +4652,7 @@ class LightweightDispatcher implements java.io.Serializable, AWTEventListener { private void stopListeningForOtherDrags() { //System.out.println("Removing AWTEventListener"); java.security.AccessController.doPrivileged( - new java.security.PrivilegedAction() { + new java.security.PrivilegedAction() { public Object run() { nativeContainer.getToolkit().removeAWTEventListener(LightweightDispatcher.this); return null; diff --git a/src/share/classes/java/awt/Dialog.java b/src/share/classes/java/awt/Dialog.java index 800d19c0200843be255cd76094ba0592b4925240..622a4531d3a73c39cdde8a7b6552651b535552cf 100644 --- a/src/share/classes/java/awt/Dialog.java +++ b/src/share/classes/java/awt/Dialog.java @@ -1047,9 +1047,9 @@ public class Dialog extends Window { // if this dialog is toolkit-modal, the filter should be added // to all EDTs (for all AppContexts) if (modalityType == ModalityType.TOOLKIT_MODAL) { - Iterator it = AppContext.getAppContexts().iterator(); + Iterator it = AppContext.getAppContexts().iterator(); while (it.hasNext()) { - AppContext appContext = (AppContext)it.next(); + AppContext appContext = it.next(); if (appContext == showAppContext) { continue; } @@ -1084,9 +1084,9 @@ public class Dialog extends Window { // if this dialog is toolkit-modal, its filter must be removed // from all EDTs (for all AppContexts) if (modalityType == ModalityType.TOOLKIT_MODAL) { - Iterator it = AppContext.getAppContexts().iterator(); + Iterator it = AppContext.getAppContexts().iterator(); while (it.hasNext()) { - AppContext appContext = (AppContext)it.next(); + AppContext appContext = it.next(); if (appContext == showAppContext) { continue; } @@ -1396,7 +1396,7 @@ public class Dialog extends Window { if (d.shouldBlock(this)) { Window w = d; while ((w != null) && (w != this)) { - w = (Window)(w.getOwner_NoClientCode()); + w = w.getOwner_NoClientCode(); } if ((w == this) || !shouldBlock(d) || (modalityType.compareTo(d.getModalityType()) < 0)) { blockers.add(d); @@ -1611,7 +1611,7 @@ public class Dialog extends Window { setModal(modal); } - blockedWindows = new IdentityArrayList(); + blockedWindows = new IdentityArrayList<>(); } /* diff --git a/src/share/classes/java/awt/Frame.java b/src/share/classes/java/awt/Frame.java index 1a3173730e5ea28344fb8dd2aa37d850cb0be3c0..2513ddb75efd5c9a878f8fde2ed7cb3bb6a6419b 100644 --- a/src/share/classes/java/awt/Frame.java +++ b/src/share/classes/java/awt/Frame.java @@ -353,7 +353,7 @@ public class Frame extends Window implements MenuContainer { * @serial * @see java.awt.Window#ownedWindowList */ - Vector ownedWindows; + Vector ownedWindows; private static final String base = "frame"; private static int nameCounter = 0; @@ -1242,7 +1242,7 @@ public class Frame extends Window implements MenuContainer { // if (ownedWindows != null) { for (int i = 0; i < ownedWindows.size(); i++) { - connectOwnedWindow((Window) ownedWindows.elementAt(i)); + connectOwnedWindow(ownedWindows.elementAt(i)); } ownedWindows = null; } diff --git a/src/share/classes/java/awt/KeyboardFocusManager.java b/src/share/classes/java/awt/KeyboardFocusManager.java index 36a5b9b7faecaa308785cb94308ff68ef0710db4..af9dcb1b2c233561f67854ebf65531460b963532 100644 --- a/src/share/classes/java/awt/KeyboardFocusManager.java +++ b/src/share/classes/java/awt/KeyboardFocusManager.java @@ -416,7 +416,7 @@ public abstract class KeyboardFocusManager } } - static Set initFocusTraversalKeysSet(String value, Set targetSet) { + static Set initFocusTraversalKeysSet(String value, Set targetSet) { StringTokenizer tokens = new StringTokenizer(value, ","); while (tokens.hasMoreTokens()) { targetSet.add(AWTKeyStroke.getAWTKeyStroke(tokens.nextToken())); diff --git a/src/share/classes/java/awt/Scrollbar.java b/src/share/classes/java/awt/Scrollbar.java index fb033305e51ebcff6e6fd7e693cdaf8b4fa801d9..b6a581d96a807ba8e0fca2730c3c86955d9b4db0 100644 --- a/src/share/classes/java/awt/Scrollbar.java +++ b/src/share/classes/java/awt/Scrollbar.java @@ -1012,7 +1012,7 @@ public class Scrollbar extends Component implements Adjustable, Accessible { * @since 1.4 */ public synchronized AdjustmentListener[] getAdjustmentListeners() { - return (AdjustmentListener[])(getListeners(AdjustmentListener.class)); + return getListeners(AdjustmentListener.class); } /** diff --git a/src/share/classes/java/awt/TextArea.java b/src/share/classes/java/awt/TextArea.java index af76af8cbfa3e16f4e4bfa31cd55f79001c09d9d..8b16d9ec61d19cae064c298e6b17d1ce57c34afa 100644 --- a/src/share/classes/java/awt/TextArea.java +++ b/src/share/classes/java/awt/TextArea.java @@ -123,7 +123,7 @@ public class TextArea extends TextComponent { * Cache the Sets of forward and backward traversal keys so we need not * look them up each time. */ - private static Set forwardTraversalKeys, backwardTraversalKeys; + private static Set forwardTraversalKeys, backwardTraversalKeys; /* * JDK 1.1 serialVersionUID @@ -143,10 +143,10 @@ public class TextArea extends TextComponent { } forwardTraversalKeys = KeyboardFocusManager.initFocusTraversalKeysSet( "ctrl TAB", - new HashSet()); + new HashSet()); backwardTraversalKeys = KeyboardFocusManager.initFocusTraversalKeysSet( "ctrl shift TAB", - new HashSet()); + new HashSet()); } /** diff --git a/src/share/classes/java/awt/TextComponent.java b/src/share/classes/java/awt/TextComponent.java index c99cae403a4b00b4217ac951ded77e2b77583af3..ecc9b3fd47c507ef9d00a3f127ea748681054d01 100644 --- a/src/share/classes/java/awt/TextComponent.java +++ b/src/share/classes/java/awt/TextComponent.java @@ -606,7 +606,7 @@ public class TextComponent extends Component implements Accessible { * @since 1.4 */ public synchronized TextListener[] getTextListeners() { - return (TextListener[])(getListeners(TextListener.class)); + return getListeners(TextListener.class); } /** diff --git a/src/share/classes/java/awt/TextField.java b/src/share/classes/java/awt/TextField.java index 268661c15f367dd8269e94b9882116aa1654be87..7c0e528f5f775152695b0b4f16c06af84d16ab76 100644 --- a/src/share/classes/java/awt/TextField.java +++ b/src/share/classes/java/awt/TextField.java @@ -507,7 +507,7 @@ public class TextField extends TextComponent { * @since 1.4 */ public synchronized ActionListener[] getActionListeners() { - return (ActionListener[])(getListeners(ActionListener.class)); + return getListeners(ActionListener.class); } /** diff --git a/src/share/classes/java/awt/Toolkit.java b/src/share/classes/java/awt/Toolkit.java index 8509534734ce26b45217a3729689467d6277be4e..783706a72b46fc634727b8c523076c3e36957731 100644 --- a/src/share/classes/java/awt/Toolkit.java +++ b/src/share/classes/java/awt/Toolkit.java @@ -863,7 +863,7 @@ public abstract class Toolkit { new java.security.PrivilegedAction() { public Void run() { String nm = null; - Class cls = null; + Class cls = null; try { nm = System.getProperty("awt.toolkit"); try { diff --git a/src/share/classes/java/awt/Window.java b/src/share/classes/java/awt/Window.java index 984e287bd50d95f1eb7e1aa843f5d66dfc3f8439..4b9765443ebd1191b973845c859e3c4fd54ed6d2 100644 --- a/src/share/classes/java/awt/Window.java +++ b/src/share/classes/java/awt/Window.java @@ -441,7 +441,7 @@ public class Window extends Container implements Accessible { transient Object anchor = new Object(); static class WindowDisposerRecord implements sun.java2d.DisposerRecord { final WeakReference owner; - final WeakReference weakThis; + final WeakReference weakThis; final WeakReference context; WindowDisposerRecord(AppContext context, Window victim) { owner = new WeakReference(victim.getOwner()); @@ -1542,6 +1542,7 @@ public class Window extends Container implements Accessible { private static Window[] getWindows(AppContext appContext) { synchronized (Window.class) { Window realCopy[]; + @SuppressWarnings("unchecked") Vector> windowList = (Vector>)appContext.get(Window.class); if (windowList != null) { @@ -1866,7 +1867,7 @@ public class Window extends Container implements Accessible { * @since 1.4 */ public synchronized WindowListener[] getWindowListeners() { - return (WindowListener[])(getListeners(WindowListener.class)); + return getListeners(WindowListener.class); } /** @@ -1882,7 +1883,7 @@ public class Window extends Container implements Accessible { * @since 1.4 */ public synchronized WindowFocusListener[] getWindowFocusListeners() { - return (WindowFocusListener[])(getListeners(WindowFocusListener.class)); + return getListeners(WindowFocusListener.class); } /** @@ -1898,7 +1899,7 @@ public class Window extends Container implements Accessible { * @since 1.4 */ public synchronized WindowStateListener[] getWindowStateListeners() { - return (WindowStateListener[])(getListeners(WindowStateListener.class)); + return getListeners(WindowStateListener.class); } @@ -2014,7 +2015,6 @@ public class Window extends Container implements Accessible { break; case WindowEvent.WINDOW_STATE_CHANGED: processWindowStateEvent((WindowEvent)e); - default: break; } return; @@ -2382,12 +2382,14 @@ public class Window extends Container implements Accessible { * KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS * @since 1.4 */ + @SuppressWarnings("unchecked") public Set getFocusTraversalKeys(int id) { if (id < 0 || id >= KeyboardFocusManager.TRAVERSAL_KEY_LENGTH) { throw new IllegalArgumentException("invalid focus traversal key identifier"); } // Okay to return Set directly because it is an unmodifiable view + @SuppressWarnings("rawtypes") Set keystrokes = (focusTraversalKeys != null) ? focusTraversalKeys[id] : null; @@ -2765,7 +2767,7 @@ public class Window extends Container implements Accessible { /* * Support for tracking all windows owned by this window */ - void addOwnedWindow(WeakReference weakWindow) { + void addOwnedWindow(WeakReference weakWindow) { if (weakWindow != null) { synchronized(ownedWindowList) { // this if statement should really be an assert, but we don't @@ -2777,7 +2779,7 @@ public class Window extends Container implements Accessible { } } - void removeOwnedWindow(WeakReference weakWindow) { + void removeOwnedWindow(WeakReference weakWindow) { if (weakWindow != null) { // synchronized block not required since removeElement is // already synchronized @@ -2792,6 +2794,7 @@ public class Window extends Container implements Accessible { private void addToWindowList() { synchronized (Window.class) { + @SuppressWarnings("unchecked") Vector> windowList = (Vector>)appContext.get(Window.class); if (windowList == null) { windowList = new Vector>(); @@ -2801,8 +2804,9 @@ public class Window extends Container implements Accessible { } } - private static void removeFromWindowList(AppContext context, WeakReference weakThis) { + private static void removeFromWindowList(AppContext context, WeakReference weakThis) { synchronized (Window.class) { + @SuppressWarnings("unchecked") Vector> windowList = (Vector>)context.get(Window.class); if (windowList != null) { windowList.remove(weakThis); @@ -2945,7 +2949,7 @@ public class Window extends Container implements Accessible { // Deserialized Windows are not yet visible. visible = false; - weakThis = new WeakReference(this); + weakThis = new WeakReference<>(this); anchor = new Object(); sun.java2d.Disposer.addRecord(anchor, new WindowDisposerRecord(appContext, this)); @@ -2956,7 +2960,7 @@ public class Window extends Container implements Accessible { private void deserializeResources(ObjectInputStream s) throws ClassNotFoundException, IOException, HeadlessException { - ownedWindowList = new Vector(); + ownedWindowList = new Vector<>(); if (windowSerializedDataVersion < 2) { // Translate old-style focus tracking to new model. For 1.4 and diff --git a/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java b/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java index 437704ad4e76bf7e5fd9ce80748780cbd16ebf83..5a9135844bca6109b9f36feb22737cb8f3b80982 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java @@ -1153,7 +1153,9 @@ public abstract class BasicLookAndFeel extends LookAndFeel implements Serializab "Menu.menuPopupOffsetY", new Integer(0), "Menu.submenuPopupOffsetX", new Integer(0), "Menu.submenuPopupOffsetY", new Integer(0), - "Menu.shortcutKeys", new int[] {KeyEvent.ALT_MASK}, + "Menu.shortcutKeys", new int[]{ + SwingUtilities2.getSystemMnemonicKeyMask() + }, "Menu.crossMenuMnemonic", Boolean.TRUE, // Menu.cancelMode affects the cancel menu action behaviour; // currently supports: diff --git a/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java b/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java index 497c0d6cac0150145609d936d42d2d17ff1b7a0b..3d39cf6a876c6f834d1149c4492d3e886615a255 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java @@ -1879,6 +1879,20 @@ public class BasicTreeUI extends TreeUI visRect.x -= i.left; visRect.y -= i.top; } + // we should consider a non-visible area above + Component component = SwingUtilities.getUnwrappedParent(tree); + if (component instanceof JViewport) { + component = component.getParent(); + if (component instanceof JScrollPane) { + JScrollPane pane = (JScrollPane) component; + JScrollBar bar = pane.getHorizontalScrollBar(); + if ((bar != null) && bar.isVisible()) { + int height = bar.getHeight(); + visRect.y -= height; + visRect.height += height; + } + } + } preferredSize.width = treeState.getPreferredWidth(visRect); } else { @@ -4504,7 +4518,7 @@ public class BasicTreeUI extends TreeUI } } - private void home(JTree tree, BasicTreeUI ui, int direction, + private void home(JTree tree, final BasicTreeUI ui, int direction, boolean addToSelection, boolean changeSelection) { // disable moving of lead unless in discontiguous mode @@ -4514,7 +4528,7 @@ public class BasicTreeUI extends TreeUI changeSelection = true; } - int rowCount = ui.getRowCount(tree); + final int rowCount = ui.getRowCount(tree); if (rowCount > 0) { if(direction == -1) { @@ -4566,6 +4580,13 @@ public class BasicTreeUI extends TreeUI ui.setLeadSelectionPath(ui.getPathForRow(tree, rowCount - 1), true); } + if (ui.isLargeModel()){ + SwingUtilities.invokeLater(new Runnable() { + public void run() { + ui.ensureRowsAreVisible(rowCount - 1, rowCount - 1); + } + }); + } } } } diff --git a/src/share/classes/sun/awt/image/SurfaceManager.java b/src/share/classes/sun/awt/image/SurfaceManager.java index 9451f91e3238bc44e8240a3259034742ded8962b..f10673a9423e7b78b00006d654318ac993489368 100644 --- a/src/share/classes/sun/awt/image/SurfaceManager.java +++ b/src/share/classes/sun/awt/image/SurfaceManager.java @@ -88,7 +88,7 @@ public abstract class SurfaceManager { imgaccessor.setSurfaceManager(img, mgr); } - private ConcurrentHashMap cacheMap; + private ConcurrentHashMap cacheMap; /** * Return an arbitrary cached object for an arbitrary cache key. @@ -123,7 +123,7 @@ public abstract class SurfaceManager { if (cacheMap == null) { synchronized (this) { if (cacheMap == null) { - cacheMap = new ConcurrentHashMap(2); + cacheMap = new ConcurrentHashMap<>(2); } } } @@ -245,7 +245,7 @@ public abstract class SurfaceManager { synchronized void flush(boolean deaccelerate) { if (cacheMap != null) { - Iterator i = cacheMap.values().iterator(); + Iterator i = cacheMap.values().iterator(); while (i.hasNext()) { Object o = i.next(); if (o instanceof FlushableCacheData) { diff --git a/src/share/classes/sun/misc/Contended.java b/src/share/classes/sun/misc/Contended.java new file mode 100644 index 0000000000000000000000000000000000000000..6925b4242d698f98ce40b60891a9b9a0b5eea7fa --- /dev/null +++ b/src/share/classes/sun/misc/Contended.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. 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 sun.misc; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * This annotation marks classes and fields as considered to be contended. + * @since 1.8 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD, ElementType.TYPE}) +public @interface Contended { + + /** + Defines the contention group tag. + */ + String value() default ""; +} diff --git a/src/share/classes/sun/nio/cs/ISO_8859_1.java b/src/share/classes/sun/nio/cs/ISO_8859_1.java index 7da5c12e70c26ebb488e750509e23c3615dd4c4e..559f7e1cea81b3edb44bc16badde7d845241bc22 100644 --- a/src/share/classes/sun/nio/cs/ISO_8859_1.java +++ b/src/share/classes/sun/nio/cs/ISO_8859_1.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -147,37 +147,53 @@ class ISO_8859_1 private final Surrogate.Parser sgp = new Surrogate.Parser(); + // JVM may replace this method with intrinsic code. + private static int encodeISOArray(char[] sa, int sp, + byte[] da, int dp, int len) + { + int i = 0; + for (; i < len; i++) { + char c = sa[sp++]; + if (c > '\u00FF') + break; + da[dp++] = (byte)c; + } + return i; + } + private CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) { char[] sa = src.array(); - int sp = src.arrayOffset() + src.position(); - int sl = src.arrayOffset() + src.limit(); + int soff = src.arrayOffset(); + int sp = soff + src.position(); + int sl = soff + src.limit(); assert (sp <= sl); sp = (sp <= sl ? sp : sl); byte[] da = dst.array(); - int dp = dst.arrayOffset() + dst.position(); - int dl = dst.arrayOffset() + dst.limit(); + int doff = dst.arrayOffset(); + int dp = doff + dst.position(); + int dl = doff + dst.limit(); assert (dp <= dl); dp = (dp <= dl ? dp : dl); + int dlen = dl - dp; + int slen = sl - sp; + int len = (dlen < slen) ? dlen : slen; try { - while (sp < sl) { - char c = sa[sp]; - if (c <= '\u00FF') { - if (dp >= dl) - return CoderResult.OVERFLOW; - da[dp++] = (byte)c; - sp++; - continue; - } - if (sgp.parse(c, sa, sp, sl) < 0) + int ret = encodeISOArray(sa, sp, da, dp, len); + sp = sp + ret; + dp = dp + ret; + if (ret != len) { + if (sgp.parse(sa[sp], sa, sp, sl) < 0) return sgp.error(); return sgp.unmappableResult(); } + if (len < slen) + return CoderResult.OVERFLOW; return CoderResult.UNDERFLOW; } finally { - src.position(sp - src.arrayOffset()); - dst.position(dp - dst.arrayOffset()); + src.position(sp - soff); + dst.position(dp - doff); } } @@ -221,22 +237,25 @@ class ISO_8859_1 public int encode(char[] src, int sp, int len, byte[] dst) { int dp = 0; - int sl = sp + Math.min(len, dst.length); + int slen = Math.min(len, dst.length); + int sl = sp + slen; while (sp < sl) { - char c = src[sp++]; - if (c <= '\u00FF') { - dst[dp++] = (byte)c; - continue; - } - if (Character.isHighSurrogate(c) && sp < sl && - Character.isLowSurrogate(src[sp])) { - if (len > dst.length) { - sl++; - len--; + int ret = encodeISOArray(src, sp, dst, dp, slen); + sp = sp + ret; + dp = dp + ret; + if (ret != slen) { + char c = src[sp++]; + if (Character.isHighSurrogate(c) && sp < sl && + Character.isLowSurrogate(src[sp])) { + if (len > dst.length) { + sl++; + len--; + } + sp++; } - sp++; + dst[dp++] = repl; + slen = Math.min((sl - sp), (dst.length - dp)); } - dst[dp++] = repl; } return dp; } diff --git a/src/share/classes/sun/swing/SwingUtilities2.java b/src/share/classes/sun/swing/SwingUtilities2.java index 2094ec0c11dd6cb82b76dc30e1fee9ac38c13d3b..c6134885adf4423e67d8596676c757d13a94819f 100644 --- a/src/share/classes/sun/swing/SwingUtilities2.java +++ b/src/share/classes/sun/swing/SwingUtilities2.java @@ -1879,4 +1879,12 @@ public class SwingUtilities2 { } return -1; } + + public static int getSystemMnemonicKeyMask() { + Toolkit toolkit = Toolkit.getDefaultToolkit(); + if (toolkit instanceof SunToolkit) { + return ((SunToolkit) toolkit).getFocusAcceleratorKeyMask(); + } + return InputEvent.ALT_MASK; + } } diff --git a/src/share/classes/sun/swing/WindowsPlacesBar.java b/src/share/classes/sun/swing/WindowsPlacesBar.java index a05259e5978c1b92fde30fbd6e68f8fd2cdafc2e..8b033ca3e7f7774b46fe6e51745b4914fbcb4c72 100644 --- a/src/share/classes/sun/swing/WindowsPlacesBar.java +++ b/src/share/classes/sun/swing/WindowsPlacesBar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -116,9 +116,6 @@ public class WindowsPlacesBar extends JToolBar icon = fsv.getSystemIcon(files[i]); } buttons[i] = new JToggleButton(folderName, icon); - if (isXPPlatform) { - buttons[i].setText("
"+folderName+"
"); - } if (isXPStyle) { buttons[i].putClientProperty("XPStyle.subAppName", "placesbar"); } else { diff --git a/src/share/classes/sun/util/resources/sq/LocaleNames_sq.properties b/src/share/classes/sun/util/resources/sq/LocaleNames_sq.properties index e66c0e1d22b3d7ff4a4f26126121de3015ee3c94..903dcea53170d22c8143459181fe6c469722656c 100644 --- a/src/share/classes/sun/util/resources/sq/LocaleNames_sq.properties +++ b/src/share/classes/sun/util/resources/sq/LocaleNames_sq.properties @@ -1,4 +1,4 @@ -# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -38,7 +38,7 @@ # language names # key is ISO 639 language code -sq=shqipe +sq=shqip # country names # key is ISO 3166 country code diff --git a/src/solaris/classes/sun/awt/X11/generator/sizes.32 b/src/solaris/classes/sun/awt/X11/generator/sizes.32 new file mode 100644 index 0000000000000000000000000000000000000000..aa77c69f026e8f6d61005c2fdbc8ed7d11e232e9 --- /dev/null +++ b/src/solaris/classes/sun/awt/X11/generator/sizes.32 @@ -0,0 +1,1016 @@ +long 4 +int 4 +short 2 +ptr 4 +Bool 4 +Atom 4 +Window 4 +XExtData.number 0 +XExtData.next 4 +XExtData.free_private 8 +XExtData.private_data 12 +XExtData 16 +XIMStringConversionCallbackStruct.position 0 +XIMStringConversionCallbackStruct.direction 4 +XIMStringConversionCallbackStruct.operation 8 +XIMStringConversionCallbackStruct.factor 10 +XIMStringConversionCallbackStruct.text 12 +XIMStringConversionCallbackStruct 16 +XkbNewKeyboardNotifyEvent.type 0 +XkbNewKeyboardNotifyEvent.serial 4 +XkbNewKeyboardNotifyEvent.send_event 8 +XkbNewKeyboardNotifyEvent.display 12 +XkbNewKeyboardNotifyEvent.time 16 +XkbNewKeyboardNotifyEvent.xkb_type 20 +XkbNewKeyboardNotifyEvent.device 24 +XkbNewKeyboardNotifyEvent.old_device 28 +XkbNewKeyboardNotifyEvent.min_key_code 32 +XkbNewKeyboardNotifyEvent.max_key_code 36 +XkbNewKeyboardNotifyEvent.old_min_key_code 40 +XkbNewKeyboardNotifyEvent.old_max_key_code 44 +XkbNewKeyboardNotifyEvent.changed 48 +XkbNewKeyboardNotifyEvent.req_major 52 +XkbNewKeyboardNotifyEvent.req_minor 53 +XkbNewKeyboardNotifyEvent 56 +XTimeCoord.time 0 +XTimeCoord.x 4 +XTimeCoord.y 6 +XTimeCoord 8 +XkbCompatMapNotifyEvent.type 0 +XkbCompatMapNotifyEvent.serial 4 +XkbCompatMapNotifyEvent.send_event 8 +XkbCompatMapNotifyEvent.display 12 +XkbCompatMapNotifyEvent.time 16 +XkbCompatMapNotifyEvent.xkb_type 20 +XkbCompatMapNotifyEvent.device 24 +XkbCompatMapNotifyEvent.changed_groups 28 +XkbCompatMapNotifyEvent.first_si 32 +XkbCompatMapNotifyEvent.num_si 36 +XkbCompatMapNotifyEvent.num_total_si 40 +XkbCompatMapNotifyEvent 44 +XIMStatusDrawCallbackStruct.type 0 +XIMStatusDrawCallbackStruct.data 4 +XIMStatusDrawCallbackStruct 8 +XKeyboardControl.key_click_percent 0 +XKeyboardControl.bell_percent 4 +XKeyboardControl.bell_pitch 8 +XKeyboardControl.bell_duration 12 +XKeyboardControl.led 16 +XKeyboardControl.led_mode 20 +XKeyboardControl.key 24 +XKeyboardControl.auto_repeat_mode 28 +XKeyboardControl 32 +XSelectionClearEvent.type 0 +XSelectionClearEvent.serial 4 +XSelectionClearEvent.send_event 8 +XSelectionClearEvent.display 12 +XSelectionClearEvent.window 16 +XSelectionClearEvent.selection 20 +XSelectionClearEvent.time 24 +XSelectionClearEvent 28 +XWindowChanges.x 0 +XWindowChanges.y 4 +XWindowChanges.width 8 +XWindowChanges.height 12 +XWindowChanges.border_width 16 +XWindowChanges.sibling 20 +XWindowChanges.stack_mode 24 +XWindowChanges 28 +XIMPreeditCaretCallbackStruct.position 0 +XIMPreeditCaretCallbackStruct.direction 4 +XIMPreeditCaretCallbackStruct.style 8 +XIMPreeditCaretCallbackStruct 12 +XOMCharSetList.charset_count 0 +XOMCharSetList.charset_list 4 +XOMCharSetList 8 +XOMFontInfo.num_font 0 +XOMFontInfo.font_struct_list 4 +XOMFontInfo.font_name_list 8 +XOMFontInfo 12 +AwtScreenData.numConfigs 0 +AwtScreenData.root 4 +AwtScreenData.whitepixel 8 +AwtScreenData.blackpixel 12 +AwtScreenData.defaultConfig 16 +AwtScreenData.configs 20 +AwtScreenData 24 +XIMHotKeyTrigger.keysym 0 +XIMHotKeyTrigger.modifier 4 +XIMHotKeyTrigger.modifier_mask 8 +XIMHotKeyTrigger 12 +XCirculateEvent.type 0 +XCirculateEvent.serial 4 +XCirculateEvent.send_event 8 +XCirculateEvent.display 12 +XCirculateEvent.event 16 +XCirculateEvent.window 20 +XCirculateEvent.place 24 +XCirculateEvent 28 +Screen.ext_data 0 +Screen.display 4 +Screen.root 8 +Screen.width 12 +Screen.height 16 +Screen.mwidth 20 +Screen.mheight 24 +Screen.ndepths 28 +Screen.depths 32 +Screen.root_depth 36 +Screen.root_visual 40 +Screen.default_gc 44 +Screen.cmap 48 +Screen.white_pixel 52 +Screen.black_pixel 56 +Screen.max_maps 60 +Screen.min_maps 64 +Screen.backing_store 68 +Screen.save_unders 72 +Screen.root_input_mask 76 +Screen 80 +XMapRequestEvent.type 0 +XMapRequestEvent.serial 4 +XMapRequestEvent.send_event 8 +XMapRequestEvent.display 12 +XMapRequestEvent.parent 16 +XMapRequestEvent.window 20 +XMapRequestEvent 24 +XIMText.length 0 +XIMText.feedback 4 +XIMText.encoding_is_wchar 8 +XIMText.string 12 +XIMText 16 +XGraphicsExposeEvent.type 0 +XGraphicsExposeEvent.serial 4 +XGraphicsExposeEvent.send_event 8 +XGraphicsExposeEvent.display 12 +XGraphicsExposeEvent.drawable 16 +XGraphicsExposeEvent.x 20 +XGraphicsExposeEvent.y 24 +XGraphicsExposeEvent.width 28 +XGraphicsExposeEvent.height 32 +XGraphicsExposeEvent.count 36 +XGraphicsExposeEvent.major_code 40 +XGraphicsExposeEvent.minor_code 44 +XGraphicsExposeEvent 48 +XEvent.type 0 +XEvent.xany 0 +XEvent.xkey 0 +XEvent.xbutton 0 +XEvent.xmotion 0 +XEvent.xcrossing 0 +XEvent.xfocus 0 +XEvent.xexpose 0 +XEvent.xgraphicsexpose 0 +XEvent.xnoexpose 0 +XEvent.xvisibility 0 +XEvent.xcreatewindow 0 +XEvent.xdestroywindow 0 +XEvent.xunmap 0 +XEvent.xmap 0 +XEvent.xmaprequest 0 +XEvent.xreparent 0 +XEvent.xconfigure 0 +XEvent.xgravity 0 +XEvent.xresizerequest 0 +XEvent.xconfigurerequest 0 +XEvent.xcirculate 0 +XEvent.xcirculaterequest 0 +XEvent.xproperty 0 +XEvent.xselectionclear 0 +XEvent.xselectionrequest 0 +XEvent.xselection 0 +XEvent.xcolormap 0 +XEvent.xclient 0 +XEvent.xmapping 0 +XEvent.xerror 0 +XEvent.xkeymap 0 +XEvent.pad 0 +XEvent 96 +XRenderDirectFormat.red 0 +XRenderDirectFormat.redMask 2 +XRenderDirectFormat.green 4 +XRenderDirectFormat.greenMask 6 +XRenderDirectFormat.blue 8 +XRenderDirectFormat.blueMask 10 +XRenderDirectFormat.alpha 12 +XRenderDirectFormat.alphaMask 14 +XRenderDirectFormat 16 +ColorData.awt_Colors 0 +ColorData.awt_numICMcolors 4 +ColorData.awt_icmLUT 8 +ColorData.awt_icmLUT2Colors 12 +ColorData.img_grays 16 +ColorData.img_clr_tbl 20 +ColorData.img_oda_red 24 +ColorData.img_oda_green 28 +ColorData.img_oda_blue 32 +ColorData.pGrayInverseLutData 36 +ColorData.screendata 40 +ColorData 44 +XFontStruct.ext_data 0 +XFontStruct.fid 4 +XFontStruct.direction 8 +XFontStruct.min_char_or_byte2 12 +XFontStruct.max_char_or_byte2 16 +XFontStruct.min_byte1 20 +XFontStruct.max_byte1 24 +XFontStruct.all_chars_exist 28 +XFontStruct.n_properties 36 +XFontStruct.properties 40 +XFontStruct.min_bounds 44 +XFontStruct.max_bounds 56 +XFontStruct.per_char 68 +XFontStruct.ascent 72 +XFontStruct.descent 76 +XFontStruct 80 +XExtCodes.extension 0 +XExtCodes.major_opcode 4 +XExtCodes.first_event 8 +XExtCodes.first_error 12 +XExtCodes 16 +XFontSetExtents.max_ink_extent 0 +XFontSetExtents.max_logical_extent 8 +XFontSetExtents 16 +XSelectionEvent.type 0 +XSelectionEvent.serial 4 +XSelectionEvent.send_event 8 +XSelectionEvent.display 12 +XSelectionEvent.requestor 16 +XSelectionEvent.selection 20 +XSelectionEvent.target 24 +XSelectionEvent.property 28 +XSelectionEvent.time 32 +XSelectionEvent 36 +XArc.x 0 +XArc.y 2 +XArc.width 4 +XArc.height 6 +XArc.angle1 8 +XArc.angle2 10 +XArc 12 +XErrorEvent.type 0 +XErrorEvent.display 4 +XErrorEvent.resourceid 8 +XErrorEvent.serial 12 +XErrorEvent.error_code 16 +XErrorEvent.request_code 17 +XErrorEvent.minor_code 18 +XErrorEvent 20 +XConfigureRequestEvent.type 0 +XConfigureRequestEvent.serial 4 +XConfigureRequestEvent.send_event 8 +XConfigureRequestEvent.display 12 +XConfigureRequestEvent.parent 16 +XConfigureRequestEvent.window 20 +XConfigureRequestEvent.x 24 +XConfigureRequestEvent.y 28 +XConfigureRequestEvent.width 32 +XConfigureRequestEvent.height 36 +XConfigureRequestEvent.border_width 40 +XConfigureRequestEvent.above 44 +XConfigureRequestEvent.detail 48 +XConfigureRequestEvent.value_mask 52 +XConfigureRequestEvent 56 +ScreenFormat.ext_data 0 +ScreenFormat.depth 4 +ScreenFormat.bits_per_pixel 8 +ScreenFormat.scanline_pad 12 +ScreenFormat 16 +XButtonEvent.type 0 +XButtonEvent.serial 4 +XButtonEvent.send_event 8 +XButtonEvent.display 12 +XButtonEvent.window 16 +XButtonEvent.root 20 +XButtonEvent.subwindow 24 +XButtonEvent.time 28 +XButtonEvent.x 32 +XButtonEvent.y 36 +XButtonEvent.x_root 40 +XButtonEvent.y_root 44 +XButtonEvent.state 48 +XButtonEvent.button 52 +XButtonEvent.same_screen 56 +XButtonEvent 60 +XFontProp.name 0 +XFontProp.card32 4 +XFontProp 8 +XIMValuesList.count_values 0 +XIMValuesList.supported_values 4 +XIMValuesList 8 +XKeymapEvent.type 0 +XKeymapEvent.serial 4 +XKeymapEvent.send_event 8 +XKeymapEvent.display 12 +XKeymapEvent.window 16 +XKeymapEvent.key_vector 20 +XKeymapEvent 52 +XTextItem16.chars 0 +XTextItem16.nchars 4 +XTextItem16.delta 8 +XTextItem16.font 12 +XTextItem16 16 +XIMPreeditDrawCallbackStruct.caret 0 +XIMPreeditDrawCallbackStruct.chg_first 4 +XIMPreeditDrawCallbackStruct.chg_length 8 +XIMPreeditDrawCallbackStruct.text 12 +XIMPreeditDrawCallbackStruct 16 +XVisualInfo.visual 0 +XVisualInfo.visualid 4 +XVisualInfo.screen 8 +XVisualInfo.depth 12 +XVisualInfo.class 16 +XVisualInfo.red_mask 20 +XVisualInfo.green_mask 24 +XVisualInfo.blue_mask 28 +XVisualInfo.colormap_size 32 +XVisualInfo.bits_per_rgb 36 +XVisualInfo 40 +XkbControlsNotifyEvent.type 0 +XkbControlsNotifyEvent.serial 4 +XkbControlsNotifyEvent.send_event 8 +XkbControlsNotifyEvent.display 12 +XkbControlsNotifyEvent.time 16 +XkbControlsNotifyEvent.xkb_type 20 +XkbControlsNotifyEvent.device 24 +XkbControlsNotifyEvent.changed_ctrls 28 +XkbControlsNotifyEvent.enabled_ctrls 32 +XkbControlsNotifyEvent.enabled_ctrl_changes 36 +XkbControlsNotifyEvent.num_groups 40 +XkbControlsNotifyEvent.keycode 44 +XkbControlsNotifyEvent.event_type 45 +XkbControlsNotifyEvent.req_major 46 +XkbControlsNotifyEvent.req_minor 47 +XkbControlsNotifyEvent 48 +PropMwmHints.flags 0 +PropMwmHints.functions 4 +PropMwmHints.decorations 8 +PropMwmHints.inputMode 12 +PropMwmHints.status 16 +PropMwmHints 20 +XClientMessageEvent.type 0 +XClientMessageEvent.serial 4 +XClientMessageEvent.send_event 8 +XClientMessageEvent.display 12 +XClientMessageEvent.window 16 +XClientMessageEvent.message_type 20 +XClientMessageEvent.format 24 +XClientMessageEvent.data 28 +XClientMessageEvent 48 +XAnyEvent.type 0 +XAnyEvent.serial 4 +XAnyEvent.send_event 8 +XAnyEvent.display 12 +XAnyEvent.window 16 +XAnyEvent 20 +XkbIndicatorNotifyEvent.type 0 +XkbIndicatorNotifyEvent.serial 4 +XkbIndicatorNotifyEvent.send_event 8 +XkbIndicatorNotifyEvent.display 12 +XkbIndicatorNotifyEvent.time 16 +XkbIndicatorNotifyEvent.xkb_type 20 +XkbIndicatorNotifyEvent.device 24 +XkbIndicatorNotifyEvent.changed 28 +XkbIndicatorNotifyEvent.state 32 +XkbIndicatorNotifyEvent 36 +XIMPreeditStateNotifyCallbackStruct.state 0 +XIMPreeditStateNotifyCallbackStruct 4 +XkbAnyEvent.type 0 +XkbAnyEvent.serial 4 +XkbAnyEvent.send_event 8 +XkbAnyEvent.display 12 +XkbAnyEvent.time 16 +XkbAnyEvent.xkb_type 20 +XkbAnyEvent.device 24 +XkbAnyEvent 28 +XMotionEvent.type 0 +XMotionEvent.serial 4 +XMotionEvent.send_event 8 +XMotionEvent.display 12 +XMotionEvent.window 16 +XMotionEvent.root 20 +XMotionEvent.subwindow 24 +XMotionEvent.time 28 +XMotionEvent.x 32 +XMotionEvent.y 36 +XMotionEvent.x_root 40 +XMotionEvent.y_root 44 +XMotionEvent.state 48 +XMotionEvent.is_hint 52 +XMotionEvent.same_screen 56 +XMotionEvent 60 +XIMHotKeyTriggers.num_hot_key 0 +XIMHotKeyTriggers.key 4 +XIMHotKeyTriggers 8 +XIMStyles.count_styles 0 +XIMStyles.supported_styles 4 +XIMStyles 8 +XkbExtensionDeviceNotifyEvent.type 0 +XkbExtensionDeviceNotifyEvent.serial 4 +XkbExtensionDeviceNotifyEvent.send_event 8 +XkbExtensionDeviceNotifyEvent.display 12 +XkbExtensionDeviceNotifyEvent.time 16 +XkbExtensionDeviceNotifyEvent.xkb_type 20 +XkbExtensionDeviceNotifyEvent.device 24 +XkbExtensionDeviceNotifyEvent.reason 28 +XkbExtensionDeviceNotifyEvent.supported 32 +XkbExtensionDeviceNotifyEvent.unsupported 36 +XkbExtensionDeviceNotifyEvent.first_btn 40 +XkbExtensionDeviceNotifyEvent.num_btns 44 +XkbExtensionDeviceNotifyEvent.leds_defined 48 +XkbExtensionDeviceNotifyEvent.led_state 52 +XkbExtensionDeviceNotifyEvent.led_class 56 +XkbExtensionDeviceNotifyEvent.led_id 60 +XkbExtensionDeviceNotifyEvent 64 +XwcTextItem.chars 0 +XwcTextItem.nchars 4 +XwcTextItem.delta 8 +XwcTextItem.font_set 12 +XwcTextItem 16 +XClassHint.res_name 0 +XClassHint.res_class 4 +XClassHint 8 +XChar2b.byte1 0 +XChar2b.byte2 1 +XChar2b 2 +XSetWindowAttributes.background_pixmap 0 +XSetWindowAttributes.background_pixel 4 +XSetWindowAttributes.border_pixmap 8 +XSetWindowAttributes.border_pixel 12 +XSetWindowAttributes.bit_gravity 16 +XSetWindowAttributes.win_gravity 20 +XSetWindowAttributes.backing_store 24 +XSetWindowAttributes.backing_planes 28 +XSetWindowAttributes.backing_pixel 32 +XSetWindowAttributes.save_under 36 +XSetWindowAttributes.event_mask 40 +XSetWindowAttributes.do_not_propagate_mask 44 +XSetWindowAttributes.override_redirect 48 +XSetWindowAttributes.colormap 52 +XSetWindowAttributes.cursor 56 +XSetWindowAttributes 60 +XRenderPictFormat.id 0 +XRenderPictFormat.type 4 +XRenderPictFormat.depth 8 +XRenderPictFormat.direct 12 +XRenderPictFormat.colormap 28 +XRenderPictFormat 32 +XReparentEvent.type 0 +XReparentEvent.serial 4 +XReparentEvent.send_event 8 +XReparentEvent.display 12 +XReparentEvent.event 16 +XReparentEvent.window 20 +XReparentEvent.parent 24 +XReparentEvent.x 28 +XReparentEvent.y 32 +XReparentEvent.override_redirect 36 +XReparentEvent 40 +XCirculateRequestEvent.type 0 +XCirculateRequestEvent.serial 4 +XCirculateRequestEvent.send_event 8 +XCirculateRequestEvent.display 12 +XCirculateRequestEvent.parent 16 +XCirculateRequestEvent.window 20 +XCirculateRequestEvent.place 24 +XCirculateRequestEvent 28 +XImage.width 0 +XImage.height 4 +XImage.xoffset 8 +XImage.format 12 +XImage.data 16 +XImage.byte_order 20 +XImage.bitmap_unit 24 +XImage.bitmap_bit_order 28 +XImage.bitmap_pad 32 +XImage.depth 36 +XImage.bytes_per_line 40 +XImage.bits_per_pixel 44 +XImage.red_mask 48 +XImage.green_mask 52 +XImage.blue_mask 56 +XImage.obdata 60 +XImage.f.create_image 64 +XImage.f.destroy_image 68 +XImage.f.get_pixel 72 +XImage.f.put_pixel 76 +XImage.f.sub_image 80 +XImage.f.add_pixel 84 +XImage 88 +XKeyEvent.type 0 +XKeyEvent.serial 4 +XKeyEvent.send_event 8 +XKeyEvent.display 12 +XKeyEvent.window 16 +XKeyEvent.root 20 +XKeyEvent.subwindow 24 +XKeyEvent.time 28 +XKeyEvent.x 32 +XKeyEvent.y 36 +XKeyEvent.x_root 40 +XKeyEvent.y_root 44 +XKeyEvent.state 48 +XKeyEvent.keycode 52 +XKeyEvent.same_screen 56 +XKeyEvent 60 +XkbActionMessageEvent.type 0 +XkbActionMessageEvent.serial 4 +XkbActionMessageEvent.send_event 8 +XkbActionMessageEvent.display 12 +XkbActionMessageEvent.time 16 +XkbActionMessageEvent.xkb_type 20 +XkbActionMessageEvent.device 24 +XkbActionMessageEvent.keycode 28 +XkbActionMessageEvent.press 32 +XkbActionMessageEvent.key_event_follows 36 +XkbActionMessageEvent.group 40 +XkbActionMessageEvent.mods 44 +XkbActionMessageEvent.message 48 +XkbActionMessageEvent 56 +XdbeSwapInfo.swap_window 0 +XdbeSwapInfo.swap_action 4 +XdbeSwapInfo 8 +XTextItem.chars 0 +XTextItem.nchars 4 +XTextItem.delta 8 +XTextItem.font 12 +XTextItem 16 +XModifierKeymap.max_keypermod 0 +XModifierKeymap.modifiermap 4 +XModifierKeymap 8 +XCharStruct.lbearing 0 +XCharStruct.rbearing 2 +XCharStruct.width 4 +XCharStruct.ascent 6 +XCharStruct.descent 8 +XCharStruct.attributes 10 +XCharStruct 12 +XGravityEvent.type 0 +XGravityEvent.serial 4 +XGravityEvent.send_event 8 +XGravityEvent.display 12 +XGravityEvent.event 16 +XGravityEvent.window 20 +XGravityEvent.x 24 +XGravityEvent.y 28 +XGravityEvent 32 +Visual.ext_data 0 +Visual.visualid 4 +Visual.class 8 +Visual.red_mask 12 +Visual.green_mask 16 +Visual.blue_mask 20 +Visual.bits_per_rgb 24 +Visual.map_entries 28 +Visual 32 +XOMOrientation.num_orientation 0 +XOMOrientation.orientation 4 +XOMOrientation 8 +XkbAccessXNotifyEvent.type 0 +XkbAccessXNotifyEvent.serial 4 +XkbAccessXNotifyEvent.send_event 8 +XkbAccessXNotifyEvent.display 12 +XkbAccessXNotifyEvent.time 16 +XkbAccessXNotifyEvent.xkb_type 20 +XkbAccessXNotifyEvent.device 24 +XkbAccessXNotifyEvent.detail 28 +XkbAccessXNotifyEvent.keycode 32 +XkbAccessXNotifyEvent.sk_delay 36 +XkbAccessXNotifyEvent.debounce_delay 40 +XkbAccessXNotifyEvent 44 +XWindowAttributes.x 0 +XWindowAttributes.y 4 +XWindowAttributes.width 8 +XWindowAttributes.height 12 +XWindowAttributes.border_width 16 +XWindowAttributes.depth 20 +XWindowAttributes.visual 24 +XWindowAttributes.root 28 +XWindowAttributes.class 32 +XWindowAttributes.bit_gravity 36 +XWindowAttributes.win_gravity 40 +XWindowAttributes.backing_store 44 +XWindowAttributes.backing_planes 48 +XWindowAttributes.backing_pixel 52 +XWindowAttributes.save_under 56 +XWindowAttributes.colormap 60 +XWindowAttributes.map_installed 64 +XWindowAttributes.map_state 68 +XWindowAttributes.all_event_masks 72 +XWindowAttributes.your_event_mask 76 +XWindowAttributes.do_not_propagate_mask 80 +XWindowAttributes.override_redirect 84 +XWindowAttributes.screen 88 +XWindowAttributes 92 +XmbTextItem.chars 0 +XmbTextItem.nchars 4 +XmbTextItem.delta 8 +XmbTextItem.font_set 12 +XmbTextItem 16 +XMappingEvent.type 0 +XMappingEvent.serial 4 +XMappingEvent.send_event 8 +XMappingEvent.display 12 +XMappingEvent.window 16 +XMappingEvent.request 20 +XMappingEvent.first_keycode 24 +XMappingEvent.count 28 +XMappingEvent 32 +XSizeHints.flags 0 +XSizeHints.x 4 +XSizeHints.y 8 +XSizeHints.width 12 +XSizeHints.height 16 +XSizeHints.min_width 20 +XSizeHints.min_height 24 +XSizeHints.max_width 28 +XSizeHints.max_height 32 +XSizeHints.width_inc 36 +XSizeHints.height_inc 40 +XSizeHints.min_aspect.x 44 +XSizeHints.min_aspect.y 48 +XSizeHints.max_aspect.x 52 +XSizeHints.max_aspect.y 56 +XSizeHints.base_width 60 +XSizeHints.base_height 64 +XSizeHints.win_gravity 68 +XSizeHints 72 +XUnmapEvent.type 0 +XUnmapEvent.serial 4 +XUnmapEvent.send_event 8 +XUnmapEvent.display 12 +XUnmapEvent.event 16 +XUnmapEvent.window 20 +XUnmapEvent.from_configure 24 +XUnmapEvent 28 +awtImageData.Depth 0 +awtImageData.wsImageFormat 4 +awtImageData.clrdata 16 +awtImageData.convert 48 +awtImageData 304 +XkbStateNotifyEvent.type 0 +XkbStateNotifyEvent.serial 4 +XkbStateNotifyEvent.send_event 8 +XkbStateNotifyEvent.display 12 +XkbStateNotifyEvent.time 16 +XkbStateNotifyEvent.xkb_type 20 +XkbStateNotifyEvent.device 24 +XkbStateNotifyEvent.changed 28 +XkbStateNotifyEvent.group 32 +XkbStateNotifyEvent.base_group 36 +XkbStateNotifyEvent.latched_group 40 +XkbStateNotifyEvent.locked_group 44 +XkbStateNotifyEvent.mods 48 +XkbStateNotifyEvent.base_mods 52 +XkbStateNotifyEvent.latched_mods 56 +XkbStateNotifyEvent.locked_mods 60 +XkbStateNotifyEvent.compat_state 64 +XkbStateNotifyEvent.grab_mods 68 +XkbStateNotifyEvent.compat_grab_mods 69 +XkbStateNotifyEvent.lookup_mods 70 +XkbStateNotifyEvent.compat_lookup_mods 71 +XkbStateNotifyEvent.ptr_buttons 72 +XkbStateNotifyEvent.keycode 76 +XkbStateNotifyEvent.event_type 77 +XkbStateNotifyEvent.req_major 78 +XkbStateNotifyEvent.req_minor 79 +XkbStateNotifyEvent 80 +XExposeEvent.type 0 +XExposeEvent.serial 4 +XExposeEvent.send_event 8 +XExposeEvent.display 12 +XExposeEvent.window 16 +XExposeEvent.x 20 +XExposeEvent.y 24 +XExposeEvent.width 28 +XExposeEvent.height 32 +XExposeEvent.count 36 +XExposeEvent 40 +XkbMapNotifyEvent.type 0 +XkbMapNotifyEvent.serial 4 +XkbMapNotifyEvent.send_event 8 +XkbMapNotifyEvent.display 12 +XkbMapNotifyEvent.time 16 +XkbMapNotifyEvent.xkb_type 20 +XkbMapNotifyEvent.device 24 +XkbMapNotifyEvent.changed 28 +XkbMapNotifyEvent.flags 32 +XkbMapNotifyEvent.first_type 36 +XkbMapNotifyEvent.num_types 40 +XkbMapNotifyEvent.min_key_code 44 +XkbMapNotifyEvent.max_key_code 45 +XkbMapNotifyEvent.first_key_sym 46 +XkbMapNotifyEvent.first_key_act 47 +XkbMapNotifyEvent.first_key_behavior 48 +XkbMapNotifyEvent.first_key_explicit 49 +XkbMapNotifyEvent.first_modmap_key 50 +XkbMapNotifyEvent.first_vmodmap_key 51 +XkbMapNotifyEvent.num_key_syms 52 +XkbMapNotifyEvent.num_key_acts 56 +XkbMapNotifyEvent.num_key_behaviors 60 +XkbMapNotifyEvent.num_key_explicit 64 +XkbMapNotifyEvent.num_modmap_keys 68 +XkbMapNotifyEvent.num_vmodmap_keys 72 +XkbMapNotifyEvent.vmods 76 +XkbMapNotifyEvent 80 +XGCValues.function 0 +XGCValues.plane_mask 4 +XGCValues.foreground 8 +XGCValues.background 12 +XGCValues.line_width 16 +XGCValues.line_style 20 +XGCValues.cap_style 24 +XGCValues.join_style 28 +XGCValues.fill_style 32 +XGCValues.fill_rule 36 +XGCValues.arc_mode 40 +XGCValues.tile 44 +XGCValues.stipple 48 +XGCValues.ts_x_origin 52 +XGCValues.ts_y_origin 56 +XGCValues.font 60 +XGCValues.subwindow_mode 64 +XGCValues.graphics_exposures 68 +XGCValues.clip_x_origin 72 +XGCValues.clip_y_origin 76 +XGCValues.clip_mask 80 +XGCValues.dash_offset 84 +XGCValues.dashes 88 +XGCValues 92 +XFocusChangeEvent.type 0 +XFocusChangeEvent.serial 4 +XFocusChangeEvent.send_event 8 +XFocusChangeEvent.display 12 +XFocusChangeEvent.window 16 +XFocusChangeEvent.mode 20 +XFocusChangeEvent.detail 24 +XFocusChangeEvent 28 +XPixmapFormatValues.depth 0 +XPixmapFormatValues.bits_per_pixel 4 +XPixmapFormatValues.scanline_pad 8 +XPixmapFormatValues 12 +XMapEvent.type 0 +XMapEvent.serial 4 +XMapEvent.send_event 8 +XMapEvent.display 12 +XMapEvent.event 16 +XMapEvent.window 20 +XMapEvent.override_redirect 24 +XMapEvent 28 +XkbBellNotifyEvent.type 0 +XkbBellNotifyEvent.serial 4 +XkbBellNotifyEvent.send_event 8 +XkbBellNotifyEvent.display 12 +XkbBellNotifyEvent.time 16 +XkbBellNotifyEvent.xkb_type 20 +XkbBellNotifyEvent.device 24 +XkbBellNotifyEvent.percent 28 +XkbBellNotifyEvent.pitch 32 +XkbBellNotifyEvent.duration 36 +XkbBellNotifyEvent.bell_class 40 +XkbBellNotifyEvent.bell_id 44 +XkbBellNotifyEvent.name 48 +XkbBellNotifyEvent.window 52 +XkbBellNotifyEvent.event_only 56 +XkbBellNotifyEvent 60 +XIMStringConversionText.length 0 +XIMStringConversionText.feedback 4 +XIMStringConversionText.encoding_is_wchar 8 +XIMStringConversionText.string 12 +XIMStringConversionText 16 +XKeyboardState.key_click_percent 0 +XKeyboardState.bell_percent 4 +XKeyboardState.bell_pitch 8 +XKeyboardState.bell_duration 12 +XKeyboardState.led_mask 16 +XKeyboardState.global_auto_repeat 20 +XKeyboardState.auto_repeats 24 +XKeyboardState 56 +XkbEvent.type 0 +XkbEvent.any 0 +XkbEvent.new_kbd 0 +XkbEvent.map 0 +XkbEvent.state 0 +XkbEvent.ctrls 0 +XkbEvent.indicators 0 +XkbEvent.names 0 +XkbEvent.compat 0 +XkbEvent.bell 0 +XkbEvent.message 0 +XkbEvent.accessx 0 +XkbEvent.device 0 +XkbEvent.core 0 +XkbEvent 96 +XPoint.x 0 +XPoint.y 2 +XPoint 4 +XSegment.x1 0 +XSegment.y1 2 +XSegment.x2 4 +XSegment.y2 6 +XSegment 8 +XIconSize.min_width 0 +XIconSize.min_height 4 +XIconSize.max_width 8 +XIconSize.max_height 12 +XIconSize.width_inc 16 +XIconSize.height_inc 20 +XIconSize 24 +XIMCallback.client_data 0 +XIMCallback.callback 4 +XIMCallback 8 +XConfigureEvent.type 0 +XConfigureEvent.serial 4 +XConfigureEvent.send_event 8 +XConfigureEvent.display 12 +XConfigureEvent.event 16 +XConfigureEvent.window 20 +XConfigureEvent.x 24 +XConfigureEvent.y 28 +XConfigureEvent.width 32 +XConfigureEvent.height 36 +XConfigureEvent.border_width 40 +XConfigureEvent.above 44 +XConfigureEvent.override_redirect 48 +XConfigureEvent 52 +XRectangle.x 0 +XRectangle.y 2 +XRectangle.width 4 +XRectangle.height 6 +XRectangle 8 +XkbNamesNotifyEvent.type 0 +XkbNamesNotifyEvent.serial 4 +XkbNamesNotifyEvent.send_event 8 +XkbNamesNotifyEvent.display 12 +XkbNamesNotifyEvent.time 16 +XkbNamesNotifyEvent.xkb_type 20 +XkbNamesNotifyEvent.device 24 +XkbNamesNotifyEvent.changed 28 +XkbNamesNotifyEvent.first_type 32 +XkbNamesNotifyEvent.num_types 36 +XkbNamesNotifyEvent.first_lvl 40 +XkbNamesNotifyEvent.num_lvls 44 +XkbNamesNotifyEvent.num_aliases 48 +XkbNamesNotifyEvent.num_radio_groups 52 +XkbNamesNotifyEvent.changed_vmods 56 +XkbNamesNotifyEvent.changed_groups 60 +XkbNamesNotifyEvent.changed_indicators 64 +XkbNamesNotifyEvent.first_key 68 +XkbNamesNotifyEvent.num_keys 72 +XkbNamesNotifyEvent 76 +XCreateWindowEvent.type 0 +XCreateWindowEvent.serial 4 +XCreateWindowEvent.send_event 8 +XCreateWindowEvent.display 12 +XCreateWindowEvent.parent 16 +XCreateWindowEvent.window 20 +XCreateWindowEvent.x 24 +XCreateWindowEvent.y 28 +XCreateWindowEvent.width 32 +XCreateWindowEvent.height 36 +XCreateWindowEvent.border_width 40 +XCreateWindowEvent.override_redirect 44 +XCreateWindowEvent 48 +XVisibilityEvent.type 0 +XVisibilityEvent.serial 4 +XVisibilityEvent.send_event 8 +XVisibilityEvent.display 12 +XVisibilityEvent.window 16 +XVisibilityEvent.state 20 +XVisibilityEvent 24 +XWMHints.flags 0 +XWMHints.initial_state 8 +XWMHints.icon_pixmap 12 +XWMHints.icon_window 16 +XWMHints.icon_x 20 +XWMHints.icon_y 24 +XWMHints.icon_mask 28 +XWMHints.input 4 +XWMHints.window_group 32 +XWMHints 36 +XCrossingEvent.type 0 +XCrossingEvent.serial 4 +XCrossingEvent.send_event 8 +XCrossingEvent.display 12 +XCrossingEvent.window 16 +XCrossingEvent.root 20 +XCrossingEvent.subwindow 24 +XCrossingEvent.time 28 +XCrossingEvent.x 32 +XCrossingEvent.y 36 +XCrossingEvent.x_root 40 +XCrossingEvent.y_root 44 +XCrossingEvent.mode 48 +XCrossingEvent.detail 52 +XCrossingEvent.same_screen 56 +XCrossingEvent.focus 60 +XCrossingEvent.state 64 +XCrossingEvent 68 +XSelectionRequestEvent.type 0 +XSelectionRequestEvent.serial 4 +XSelectionRequestEvent.send_event 8 +XSelectionRequestEvent.display 12 +XSelectionRequestEvent.owner 16 +XSelectionRequestEvent.requestor 20 +XSelectionRequestEvent.selection 24 +XSelectionRequestEvent.target 28 +XSelectionRequestEvent.property 32 +XSelectionRequestEvent.time 36 +XSelectionRequestEvent 40 +XNoExposeEvent.type 0 +XNoExposeEvent.serial 4 +XNoExposeEvent.send_event 8 +XNoExposeEvent.display 12 +XNoExposeEvent.drawable 16 +XNoExposeEvent.major_code 20 +XNoExposeEvent.minor_code 24 +XNoExposeEvent 28 +XHostAddress.family 0 +XHostAddress.length 4 +XHostAddress.address 8 +XHostAddress 12 +XColormapEvent.type 0 +XColormapEvent.serial 4 +XColormapEvent.send_event 8 +XColormapEvent.display 12 +XColormapEvent.window 16 +XColormapEvent.colormap 20 +XColormapEvent.new 24 +XColormapEvent.state 28 +XColormapEvent 32 +ColorEntry.r 0 +ColorEntry.g 1 +ColorEntry.b 2 +ColorEntry.flags 3 +ColorEntry 4 +XResizeRequestEvent.type 0 +XResizeRequestEvent.serial 4 +XResizeRequestEvent.send_event 8 +XResizeRequestEvent.display 12 +XResizeRequestEvent.window 16 +XResizeRequestEvent.width 20 +XResizeRequestEvent.height 24 +XResizeRequestEvent 28 +Depth.depth 0 +Depth.nvisuals 4 +Depth.visuals 8 +Depth 12 +XPropertyEvent.type 0 +XPropertyEvent.serial 4 +XPropertyEvent.send_event 8 +XPropertyEvent.display 12 +XPropertyEvent.window 16 +XPropertyEvent.atom 20 +XPropertyEvent.time 24 +XPropertyEvent.state 28 +XPropertyEvent 32 +XDestroyWindowEvent.type 0 +XDestroyWindowEvent.serial 4 +XDestroyWindowEvent.send_event 8 +XDestroyWindowEvent.display 12 +XDestroyWindowEvent.event 16 +XDestroyWindowEvent.window 20 +XDestroyWindowEvent 24 +XStandardColormap.colormap 0 +XStandardColormap.red_max 4 +XStandardColormap.red_mult 8 +XStandardColormap.green_max 12 +XStandardColormap.green_mult 16 +XStandardColormap.blue_max 20 +XStandardColormap.blue_mult 24 +XStandardColormap.base_pixel 28 +XStandardColormap.visualid 32 +XStandardColormap.killid 36 +XStandardColormap 40 +XComposeStatus.compose_ptr 0 +XComposeStatus.chars_matched 4 +XComposeStatus 8 +AwtGraphicsConfigData.awt_depth 0 +AwtGraphicsConfigData.awt_cmap 4 +AwtGraphicsConfigData.awt_visInfo 8 +AwtGraphicsConfigData.awt_num_colors 48 +AwtGraphicsConfigData.awtImage 52 +AwtGraphicsConfigData.AwtColorMatch 56 +AwtGraphicsConfigData.monoImage 60 +AwtGraphicsConfigData.monoPixmap 64 +AwtGraphicsConfigData.monoPixmapWidth 68 +AwtGraphicsConfigData.monoPixmapHeight 72 +AwtGraphicsConfigData.monoPixmapGC 76 +AwtGraphicsConfigData.pixelStride 80 +AwtGraphicsConfigData.color_data 84 +AwtGraphicsConfigData.glxInfo 88 +AwtGraphicsConfigData.isTranslucencySupported 92 +AwtGraphicsConfigData.renderPictFormat 96 +AwtGraphicsConfigData 128 +XColor.pixel 0 +XColor.red 4 +XColor.green 6 +XColor.blue 8 +XColor.flags 10 +XColor.pad 11 +XColor 12 +XTextProperty.value 0 +XTextProperty.encoding 4 +XTextProperty.format 8 +XTextProperty.nitems 12 +XTextProperty 16 diff --git a/src/solaris/classes/sun/awt/X11/generator/sizes.64 b/src/solaris/classes/sun/awt/X11/generator/sizes.64 new file mode 100644 index 0000000000000000000000000000000000000000..f771daf8c6a71cd939031385397beff1cad75ed8 --- /dev/null +++ b/src/solaris/classes/sun/awt/X11/generator/sizes.64 @@ -0,0 +1,1016 @@ +long 8 +int 4 +short 2 +ptr 8 +Bool 4 +Atom 8 +Window 8 +XExtData.number 0 +XExtData.next 8 +XExtData.free_private 16 +XExtData.private_data 24 +XExtData 32 +XIMStringConversionCallbackStruct.position 0 +XIMStringConversionCallbackStruct.direction 4 +XIMStringConversionCallbackStruct.operation 8 +XIMStringConversionCallbackStruct.factor 10 +XIMStringConversionCallbackStruct.text 16 +XIMStringConversionCallbackStruct 24 +XkbNewKeyboardNotifyEvent.type 0 +XkbNewKeyboardNotifyEvent.serial 8 +XkbNewKeyboardNotifyEvent.send_event 16 +XkbNewKeyboardNotifyEvent.display 24 +XkbNewKeyboardNotifyEvent.time 32 +XkbNewKeyboardNotifyEvent.xkb_type 40 +XkbNewKeyboardNotifyEvent.device 44 +XkbNewKeyboardNotifyEvent.old_device 48 +XkbNewKeyboardNotifyEvent.min_key_code 52 +XkbNewKeyboardNotifyEvent.max_key_code 56 +XkbNewKeyboardNotifyEvent.old_min_key_code 60 +XkbNewKeyboardNotifyEvent.old_max_key_code 64 +XkbNewKeyboardNotifyEvent.changed 68 +XkbNewKeyboardNotifyEvent.req_major 72 +XkbNewKeyboardNotifyEvent.req_minor 73 +XkbNewKeyboardNotifyEvent 80 +XTimeCoord.time 0 +XTimeCoord.x 8 +XTimeCoord.y 10 +XTimeCoord 16 +XkbCompatMapNotifyEvent.type 0 +XkbCompatMapNotifyEvent.serial 8 +XkbCompatMapNotifyEvent.send_event 16 +XkbCompatMapNotifyEvent.display 24 +XkbCompatMapNotifyEvent.time 32 +XkbCompatMapNotifyEvent.xkb_type 40 +XkbCompatMapNotifyEvent.device 44 +XkbCompatMapNotifyEvent.changed_groups 48 +XkbCompatMapNotifyEvent.first_si 52 +XkbCompatMapNotifyEvent.num_si 56 +XkbCompatMapNotifyEvent.num_total_si 60 +XkbCompatMapNotifyEvent 64 +XIMStatusDrawCallbackStruct.type 0 +XIMStatusDrawCallbackStruct.data 8 +XIMStatusDrawCallbackStruct 16 +XKeyboardControl.key_click_percent 0 +XKeyboardControl.bell_percent 4 +XKeyboardControl.bell_pitch 8 +XKeyboardControl.bell_duration 12 +XKeyboardControl.led 16 +XKeyboardControl.led_mode 20 +XKeyboardControl.key 24 +XKeyboardControl.auto_repeat_mode 28 +XKeyboardControl 32 +XSelectionClearEvent.type 0 +XSelectionClearEvent.serial 8 +XSelectionClearEvent.send_event 16 +XSelectionClearEvent.display 24 +XSelectionClearEvent.window 32 +XSelectionClearEvent.selection 40 +XSelectionClearEvent.time 48 +XSelectionClearEvent 56 +XWindowChanges.x 0 +XWindowChanges.y 4 +XWindowChanges.width 8 +XWindowChanges.height 12 +XWindowChanges.border_width 16 +XWindowChanges.sibling 24 +XWindowChanges.stack_mode 32 +XWindowChanges 40 +XIMPreeditCaretCallbackStruct.position 0 +XIMPreeditCaretCallbackStruct.direction 4 +XIMPreeditCaretCallbackStruct.style 8 +XIMPreeditCaretCallbackStruct 12 +XOMCharSetList.charset_count 0 +XOMCharSetList.charset_list 8 +XOMCharSetList 16 +XOMFontInfo.num_font 0 +XOMFontInfo.font_struct_list 8 +XOMFontInfo.font_name_list 16 +XOMFontInfo 24 +AwtScreenData.numConfigs 0 +AwtScreenData.root 8 +AwtScreenData.whitepixel 16 +AwtScreenData.blackpixel 24 +AwtScreenData.defaultConfig 32 +AwtScreenData.configs 40 +AwtScreenData 48 +XIMHotKeyTrigger.keysym 0 +XIMHotKeyTrigger.modifier 8 +XIMHotKeyTrigger.modifier_mask 12 +XIMHotKeyTrigger 16 +XCirculateEvent.type 0 +XCirculateEvent.serial 8 +XCirculateEvent.send_event 16 +XCirculateEvent.display 24 +XCirculateEvent.event 32 +XCirculateEvent.window 40 +XCirculateEvent.place 48 +XCirculateEvent 56 +Screen.ext_data 0 +Screen.display 8 +Screen.root 16 +Screen.width 24 +Screen.height 28 +Screen.mwidth 32 +Screen.mheight 36 +Screen.ndepths 40 +Screen.depths 48 +Screen.root_depth 56 +Screen.root_visual 64 +Screen.default_gc 72 +Screen.cmap 80 +Screen.white_pixel 88 +Screen.black_pixel 96 +Screen.max_maps 104 +Screen.min_maps 108 +Screen.backing_store 112 +Screen.save_unders 116 +Screen.root_input_mask 120 +Screen 128 +XMapRequestEvent.type 0 +XMapRequestEvent.serial 8 +XMapRequestEvent.send_event 16 +XMapRequestEvent.display 24 +XMapRequestEvent.parent 32 +XMapRequestEvent.window 40 +XMapRequestEvent 48 +XIMText.length 0 +XIMText.feedback 8 +XIMText.encoding_is_wchar 16 +XIMText.string 24 +XIMText 32 +XGraphicsExposeEvent.type 0 +XGraphicsExposeEvent.serial 8 +XGraphicsExposeEvent.send_event 16 +XGraphicsExposeEvent.display 24 +XGraphicsExposeEvent.drawable 32 +XGraphicsExposeEvent.x 40 +XGraphicsExposeEvent.y 44 +XGraphicsExposeEvent.width 48 +XGraphicsExposeEvent.height 52 +XGraphicsExposeEvent.count 56 +XGraphicsExposeEvent.major_code 60 +XGraphicsExposeEvent.minor_code 64 +XGraphicsExposeEvent 72 +XEvent.type 0 +XEvent.xany 0 +XEvent.xkey 0 +XEvent.xbutton 0 +XEvent.xmotion 0 +XEvent.xcrossing 0 +XEvent.xfocus 0 +XEvent.xexpose 0 +XEvent.xgraphicsexpose 0 +XEvent.xnoexpose 0 +XEvent.xvisibility 0 +XEvent.xcreatewindow 0 +XEvent.xdestroywindow 0 +XEvent.xunmap 0 +XEvent.xmap 0 +XEvent.xmaprequest 0 +XEvent.xreparent 0 +XEvent.xconfigure 0 +XEvent.xgravity 0 +XEvent.xresizerequest 0 +XEvent.xconfigurerequest 0 +XEvent.xcirculate 0 +XEvent.xcirculaterequest 0 +XEvent.xproperty 0 +XEvent.xselectionclear 0 +XEvent.xselectionrequest 0 +XEvent.xselection 0 +XEvent.xcolormap 0 +XEvent.xclient 0 +XEvent.xmapping 0 +XEvent.xerror 0 +XEvent.xkeymap 0 +XEvent.pad 0 +XEvent 192 +XRenderDirectFormat.red 0 +XRenderDirectFormat.redMask 2 +XRenderDirectFormat.green 4 +XRenderDirectFormat.greenMask 6 +XRenderDirectFormat.blue 8 +XRenderDirectFormat.blueMask 10 +XRenderDirectFormat.alpha 12 +XRenderDirectFormat.alphaMask 14 +XRenderDirectFormat 16 +ColorData.awt_Colors 0 +ColorData.awt_numICMcolors 8 +ColorData.awt_icmLUT 16 +ColorData.awt_icmLUT2Colors 24 +ColorData.img_grays 32 +ColorData.img_clr_tbl 40 +ColorData.img_oda_red 48 +ColorData.img_oda_green 56 +ColorData.img_oda_blue 64 +ColorData.pGrayInverseLutData 72 +ColorData.screendata 80 +ColorData 88 +XFontStruct.ext_data 0 +XFontStruct.fid 8 +XFontStruct.direction 16 +XFontStruct.min_char_or_byte2 20 +XFontStruct.max_char_or_byte2 24 +XFontStruct.min_byte1 28 +XFontStruct.max_byte1 32 +XFontStruct.all_chars_exist 36 +XFontStruct.n_properties 44 +XFontStruct.properties 48 +XFontStruct.min_bounds 56 +XFontStruct.max_bounds 68 +XFontStruct.per_char 80 +XFontStruct.ascent 88 +XFontStruct.descent 92 +XFontStruct 96 +XExtCodes.extension 0 +XExtCodes.major_opcode 4 +XExtCodes.first_event 8 +XExtCodes.first_error 12 +XExtCodes 16 +XFontSetExtents.max_ink_extent 0 +XFontSetExtents.max_logical_extent 8 +XFontSetExtents 16 +XSelectionEvent.type 0 +XSelectionEvent.serial 8 +XSelectionEvent.send_event 16 +XSelectionEvent.display 24 +XSelectionEvent.requestor 32 +XSelectionEvent.selection 40 +XSelectionEvent.target 48 +XSelectionEvent.property 56 +XSelectionEvent.time 64 +XSelectionEvent 72 +XArc.x 0 +XArc.y 2 +XArc.width 4 +XArc.height 6 +XArc.angle1 8 +XArc.angle2 10 +XArc 12 +XErrorEvent.type 0 +XErrorEvent.display 8 +XErrorEvent.resourceid 16 +XErrorEvent.serial 24 +XErrorEvent.error_code 32 +XErrorEvent.request_code 33 +XErrorEvent.minor_code 34 +XErrorEvent 40 +XConfigureRequestEvent.type 0 +XConfigureRequestEvent.serial 8 +XConfigureRequestEvent.send_event 16 +XConfigureRequestEvent.display 24 +XConfigureRequestEvent.parent 32 +XConfigureRequestEvent.window 40 +XConfigureRequestEvent.x 48 +XConfigureRequestEvent.y 52 +XConfigureRequestEvent.width 56 +XConfigureRequestEvent.height 60 +XConfigureRequestEvent.border_width 64 +XConfigureRequestEvent.above 72 +XConfigureRequestEvent.detail 80 +XConfigureRequestEvent.value_mask 88 +XConfigureRequestEvent 96 +ScreenFormat.ext_data 0 +ScreenFormat.depth 8 +ScreenFormat.bits_per_pixel 12 +ScreenFormat.scanline_pad 16 +ScreenFormat 24 +XButtonEvent.type 0 +XButtonEvent.serial 8 +XButtonEvent.send_event 16 +XButtonEvent.display 24 +XButtonEvent.window 32 +XButtonEvent.root 40 +XButtonEvent.subwindow 48 +XButtonEvent.time 56 +XButtonEvent.x 64 +XButtonEvent.y 68 +XButtonEvent.x_root 72 +XButtonEvent.y_root 76 +XButtonEvent.state 80 +XButtonEvent.button 84 +XButtonEvent.same_screen 88 +XButtonEvent 96 +XFontProp.name 0 +XFontProp.card32 8 +XFontProp 16 +XIMValuesList.count_values 0 +XIMValuesList.supported_values 8 +XIMValuesList 16 +XKeymapEvent.type 0 +XKeymapEvent.serial 8 +XKeymapEvent.send_event 16 +XKeymapEvent.display 24 +XKeymapEvent.window 32 +XKeymapEvent.key_vector 40 +XKeymapEvent 72 +XTextItem16.chars 0 +XTextItem16.nchars 8 +XTextItem16.delta 12 +XTextItem16.font 16 +XTextItem16 24 +XIMPreeditDrawCallbackStruct.caret 0 +XIMPreeditDrawCallbackStruct.chg_first 4 +XIMPreeditDrawCallbackStruct.chg_length 8 +XIMPreeditDrawCallbackStruct.text 16 +XIMPreeditDrawCallbackStruct 24 +XVisualInfo.visual 0 +XVisualInfo.visualid 8 +XVisualInfo.screen 16 +XVisualInfo.depth 20 +XVisualInfo.class 24 +XVisualInfo.red_mask 32 +XVisualInfo.green_mask 40 +XVisualInfo.blue_mask 48 +XVisualInfo.colormap_size 56 +XVisualInfo.bits_per_rgb 60 +XVisualInfo 64 +XkbControlsNotifyEvent.type 0 +XkbControlsNotifyEvent.serial 8 +XkbControlsNotifyEvent.send_event 16 +XkbControlsNotifyEvent.display 24 +XkbControlsNotifyEvent.time 32 +XkbControlsNotifyEvent.xkb_type 40 +XkbControlsNotifyEvent.device 44 +XkbControlsNotifyEvent.changed_ctrls 48 +XkbControlsNotifyEvent.enabled_ctrls 52 +XkbControlsNotifyEvent.enabled_ctrl_changes 56 +XkbControlsNotifyEvent.num_groups 60 +XkbControlsNotifyEvent.keycode 64 +XkbControlsNotifyEvent.event_type 65 +XkbControlsNotifyEvent.req_major 66 +XkbControlsNotifyEvent.req_minor 67 +XkbControlsNotifyEvent 72 +PropMwmHints.flags 0 +PropMwmHints.functions 8 +PropMwmHints.decorations 16 +PropMwmHints.inputMode 24 +PropMwmHints.status 32 +PropMwmHints 40 +XClientMessageEvent.type 0 +XClientMessageEvent.serial 8 +XClientMessageEvent.send_event 16 +XClientMessageEvent.display 24 +XClientMessageEvent.window 32 +XClientMessageEvent.message_type 40 +XClientMessageEvent.format 48 +XClientMessageEvent.data 56 +XClientMessageEvent 96 +XAnyEvent.type 0 +XAnyEvent.serial 8 +XAnyEvent.send_event 16 +XAnyEvent.display 24 +XAnyEvent.window 32 +XAnyEvent 40 +XkbIndicatorNotifyEvent.type 0 +XkbIndicatorNotifyEvent.serial 8 +XkbIndicatorNotifyEvent.send_event 16 +XkbIndicatorNotifyEvent.display 24 +XkbIndicatorNotifyEvent.time 32 +XkbIndicatorNotifyEvent.xkb_type 40 +XkbIndicatorNotifyEvent.device 44 +XkbIndicatorNotifyEvent.changed 48 +XkbIndicatorNotifyEvent.state 52 +XkbIndicatorNotifyEvent 56 +XIMPreeditStateNotifyCallbackStruct.state 0 +XIMPreeditStateNotifyCallbackStruct 8 +XkbAnyEvent.type 0 +XkbAnyEvent.serial 8 +XkbAnyEvent.send_event 16 +XkbAnyEvent.display 24 +XkbAnyEvent.time 32 +XkbAnyEvent.xkb_type 40 +XkbAnyEvent.device 44 +XkbAnyEvent 48 +XMotionEvent.type 0 +XMotionEvent.serial 8 +XMotionEvent.send_event 16 +XMotionEvent.display 24 +XMotionEvent.window 32 +XMotionEvent.root 40 +XMotionEvent.subwindow 48 +XMotionEvent.time 56 +XMotionEvent.x 64 +XMotionEvent.y 68 +XMotionEvent.x_root 72 +XMotionEvent.y_root 76 +XMotionEvent.state 80 +XMotionEvent.is_hint 84 +XMotionEvent.same_screen 88 +XMotionEvent 96 +XIMHotKeyTriggers.num_hot_key 0 +XIMHotKeyTriggers.key 8 +XIMHotKeyTriggers 16 +XIMStyles.count_styles 0 +XIMStyles.supported_styles 8 +XIMStyles 16 +XkbExtensionDeviceNotifyEvent.type 0 +XkbExtensionDeviceNotifyEvent.serial 8 +XkbExtensionDeviceNotifyEvent.send_event 16 +XkbExtensionDeviceNotifyEvent.display 24 +XkbExtensionDeviceNotifyEvent.time 32 +XkbExtensionDeviceNotifyEvent.xkb_type 40 +XkbExtensionDeviceNotifyEvent.device 44 +XkbExtensionDeviceNotifyEvent.reason 48 +XkbExtensionDeviceNotifyEvent.supported 52 +XkbExtensionDeviceNotifyEvent.unsupported 56 +XkbExtensionDeviceNotifyEvent.first_btn 60 +XkbExtensionDeviceNotifyEvent.num_btns 64 +XkbExtensionDeviceNotifyEvent.leds_defined 68 +XkbExtensionDeviceNotifyEvent.led_state 72 +XkbExtensionDeviceNotifyEvent.led_class 76 +XkbExtensionDeviceNotifyEvent.led_id 80 +XkbExtensionDeviceNotifyEvent 88 +XwcTextItem.chars 0 +XwcTextItem.nchars 8 +XwcTextItem.delta 12 +XwcTextItem.font_set 16 +XwcTextItem 24 +XClassHint.res_name 0 +XClassHint.res_class 8 +XClassHint 16 +XChar2b.byte1 0 +XChar2b.byte2 1 +XChar2b 2 +XSetWindowAttributes.background_pixmap 0 +XSetWindowAttributes.background_pixel 8 +XSetWindowAttributes.border_pixmap 16 +XSetWindowAttributes.border_pixel 24 +XSetWindowAttributes.bit_gravity 32 +XSetWindowAttributes.win_gravity 36 +XSetWindowAttributes.backing_store 40 +XSetWindowAttributes.backing_planes 48 +XSetWindowAttributes.backing_pixel 56 +XSetWindowAttributes.save_under 64 +XSetWindowAttributes.event_mask 72 +XSetWindowAttributes.do_not_propagate_mask 80 +XSetWindowAttributes.override_redirect 88 +XSetWindowAttributes.colormap 96 +XSetWindowAttributes.cursor 104 +XSetWindowAttributes 112 +XRenderPictFormat.id 0 +XRenderPictFormat.type 8 +XRenderPictFormat.depth 12 +XRenderPictFormat.direct 16 +XRenderPictFormat.colormap 32 +XRenderPictFormat 40 +XReparentEvent.type 0 +XReparentEvent.serial 8 +XReparentEvent.send_event 16 +XReparentEvent.display 24 +XReparentEvent.event 32 +XReparentEvent.window 40 +XReparentEvent.parent 48 +XReparentEvent.x 56 +XReparentEvent.y 60 +XReparentEvent.override_redirect 64 +XReparentEvent 72 +XCirculateRequestEvent.type 0 +XCirculateRequestEvent.serial 8 +XCirculateRequestEvent.send_event 16 +XCirculateRequestEvent.display 24 +XCirculateRequestEvent.parent 32 +XCirculateRequestEvent.window 40 +XCirculateRequestEvent.place 48 +XCirculateRequestEvent 56 +XImage.width 0 +XImage.height 4 +XImage.xoffset 8 +XImage.format 12 +XImage.data 16 +XImage.byte_order 24 +XImage.bitmap_unit 28 +XImage.bitmap_bit_order 32 +XImage.bitmap_pad 36 +XImage.depth 40 +XImage.bytes_per_line 44 +XImage.bits_per_pixel 48 +XImage.red_mask 56 +XImage.green_mask 64 +XImage.blue_mask 72 +XImage.obdata 80 +XImage.f.create_image 88 +XImage.f.destroy_image 96 +XImage.f.get_pixel 104 +XImage.f.put_pixel 112 +XImage.f.sub_image 120 +XImage.f.add_pixel 128 +XImage 136 +XKeyEvent.type 0 +XKeyEvent.serial 8 +XKeyEvent.send_event 16 +XKeyEvent.display 24 +XKeyEvent.window 32 +XKeyEvent.root 40 +XKeyEvent.subwindow 48 +XKeyEvent.time 56 +XKeyEvent.x 64 +XKeyEvent.y 68 +XKeyEvent.x_root 72 +XKeyEvent.y_root 76 +XKeyEvent.state 80 +XKeyEvent.keycode 84 +XKeyEvent.same_screen 88 +XKeyEvent 96 +XkbActionMessageEvent.type 0 +XkbActionMessageEvent.serial 8 +XkbActionMessageEvent.send_event 16 +XkbActionMessageEvent.display 24 +XkbActionMessageEvent.time 32 +XkbActionMessageEvent.xkb_type 40 +XkbActionMessageEvent.device 44 +XkbActionMessageEvent.keycode 48 +XkbActionMessageEvent.press 52 +XkbActionMessageEvent.key_event_follows 56 +XkbActionMessageEvent.group 60 +XkbActionMessageEvent.mods 64 +XkbActionMessageEvent.message 68 +XkbActionMessageEvent 80 +XdbeSwapInfo.swap_window 0 +XdbeSwapInfo.swap_action 8 +XdbeSwapInfo 16 +XTextItem.chars 0 +XTextItem.nchars 8 +XTextItem.delta 12 +XTextItem.font 16 +XTextItem 24 +XModifierKeymap.max_keypermod 0 +XModifierKeymap.modifiermap 8 +XModifierKeymap 16 +XCharStruct.lbearing 0 +XCharStruct.rbearing 2 +XCharStruct.width 4 +XCharStruct.ascent 6 +XCharStruct.descent 8 +XCharStruct.attributes 10 +XCharStruct 12 +XGravityEvent.type 0 +XGravityEvent.serial 8 +XGravityEvent.send_event 16 +XGravityEvent.display 24 +XGravityEvent.event 32 +XGravityEvent.window 40 +XGravityEvent.x 48 +XGravityEvent.y 52 +XGravityEvent 56 +Visual.ext_data 0 +Visual.visualid 8 +Visual.class 16 +Visual.red_mask 24 +Visual.green_mask 32 +Visual.blue_mask 40 +Visual.bits_per_rgb 48 +Visual.map_entries 52 +Visual 56 +XOMOrientation.num_orientation 0 +XOMOrientation.orientation 8 +XOMOrientation 16 +XkbAccessXNotifyEvent.type 0 +XkbAccessXNotifyEvent.serial 8 +XkbAccessXNotifyEvent.send_event 16 +XkbAccessXNotifyEvent.display 24 +XkbAccessXNotifyEvent.time 32 +XkbAccessXNotifyEvent.xkb_type 40 +XkbAccessXNotifyEvent.device 44 +XkbAccessXNotifyEvent.detail 48 +XkbAccessXNotifyEvent.keycode 52 +XkbAccessXNotifyEvent.sk_delay 56 +XkbAccessXNotifyEvent.debounce_delay 60 +XkbAccessXNotifyEvent 64 +XWindowAttributes.x 0 +XWindowAttributes.y 4 +XWindowAttributes.width 8 +XWindowAttributes.height 12 +XWindowAttributes.border_width 16 +XWindowAttributes.depth 20 +XWindowAttributes.visual 24 +XWindowAttributes.root 32 +XWindowAttributes.class 40 +XWindowAttributes.bit_gravity 44 +XWindowAttributes.win_gravity 48 +XWindowAttributes.backing_store 52 +XWindowAttributes.backing_planes 56 +XWindowAttributes.backing_pixel 64 +XWindowAttributes.save_under 72 +XWindowAttributes.colormap 80 +XWindowAttributes.map_installed 88 +XWindowAttributes.map_state 92 +XWindowAttributes.all_event_masks 96 +XWindowAttributes.your_event_mask 104 +XWindowAttributes.do_not_propagate_mask 112 +XWindowAttributes.override_redirect 120 +XWindowAttributes.screen 128 +XWindowAttributes 136 +XmbTextItem.chars 0 +XmbTextItem.nchars 8 +XmbTextItem.delta 12 +XmbTextItem.font_set 16 +XmbTextItem 24 +XMappingEvent.type 0 +XMappingEvent.serial 8 +XMappingEvent.send_event 16 +XMappingEvent.display 24 +XMappingEvent.window 32 +XMappingEvent.request 40 +XMappingEvent.first_keycode 44 +XMappingEvent.count 48 +XMappingEvent 56 +XSizeHints.flags 0 +XSizeHints.x 8 +XSizeHints.y 12 +XSizeHints.width 16 +XSizeHints.height 20 +XSizeHints.min_width 24 +XSizeHints.min_height 28 +XSizeHints.max_width 32 +XSizeHints.max_height 36 +XSizeHints.width_inc 40 +XSizeHints.height_inc 44 +XSizeHints.min_aspect.x 48 +XSizeHints.min_aspect.y 52 +XSizeHints.max_aspect.x 56 +XSizeHints.max_aspect.y 60 +XSizeHints.base_width 64 +XSizeHints.base_height 68 +XSizeHints.win_gravity 72 +XSizeHints 80 +XUnmapEvent.type 0 +XUnmapEvent.serial 8 +XUnmapEvent.send_event 16 +XUnmapEvent.display 24 +XUnmapEvent.event 32 +XUnmapEvent.window 40 +XUnmapEvent.from_configure 48 +XUnmapEvent 56 +awtImageData.Depth 0 +awtImageData.wsImageFormat 4 +awtImageData.clrdata 16 +awtImageData.convert 48 +awtImageData 560 +XkbStateNotifyEvent.type 0 +XkbStateNotifyEvent.serial 8 +XkbStateNotifyEvent.send_event 16 +XkbStateNotifyEvent.display 24 +XkbStateNotifyEvent.time 32 +XkbStateNotifyEvent.xkb_type 40 +XkbStateNotifyEvent.device 44 +XkbStateNotifyEvent.changed 48 +XkbStateNotifyEvent.group 52 +XkbStateNotifyEvent.base_group 56 +XkbStateNotifyEvent.latched_group 60 +XkbStateNotifyEvent.locked_group 64 +XkbStateNotifyEvent.mods 68 +XkbStateNotifyEvent.base_mods 72 +XkbStateNotifyEvent.latched_mods 76 +XkbStateNotifyEvent.locked_mods 80 +XkbStateNotifyEvent.compat_state 84 +XkbStateNotifyEvent.grab_mods 88 +XkbStateNotifyEvent.compat_grab_mods 89 +XkbStateNotifyEvent.lookup_mods 90 +XkbStateNotifyEvent.compat_lookup_mods 91 +XkbStateNotifyEvent.ptr_buttons 92 +XkbStateNotifyEvent.keycode 96 +XkbStateNotifyEvent.event_type 97 +XkbStateNotifyEvent.req_major 98 +XkbStateNotifyEvent.req_minor 99 +XkbStateNotifyEvent 104 +XExposeEvent.type 0 +XExposeEvent.serial 8 +XExposeEvent.send_event 16 +XExposeEvent.display 24 +XExposeEvent.window 32 +XExposeEvent.x 40 +XExposeEvent.y 44 +XExposeEvent.width 48 +XExposeEvent.height 52 +XExposeEvent.count 56 +XExposeEvent 64 +XkbMapNotifyEvent.type 0 +XkbMapNotifyEvent.serial 8 +XkbMapNotifyEvent.send_event 16 +XkbMapNotifyEvent.display 24 +XkbMapNotifyEvent.time 32 +XkbMapNotifyEvent.xkb_type 40 +XkbMapNotifyEvent.device 44 +XkbMapNotifyEvent.changed 48 +XkbMapNotifyEvent.flags 52 +XkbMapNotifyEvent.first_type 56 +XkbMapNotifyEvent.num_types 60 +XkbMapNotifyEvent.min_key_code 64 +XkbMapNotifyEvent.max_key_code 65 +XkbMapNotifyEvent.first_key_sym 66 +XkbMapNotifyEvent.first_key_act 67 +XkbMapNotifyEvent.first_key_behavior 68 +XkbMapNotifyEvent.first_key_explicit 69 +XkbMapNotifyEvent.first_modmap_key 70 +XkbMapNotifyEvent.first_vmodmap_key 71 +XkbMapNotifyEvent.num_key_syms 72 +XkbMapNotifyEvent.num_key_acts 76 +XkbMapNotifyEvent.num_key_behaviors 80 +XkbMapNotifyEvent.num_key_explicit 84 +XkbMapNotifyEvent.num_modmap_keys 88 +XkbMapNotifyEvent.num_vmodmap_keys 92 +XkbMapNotifyEvent.vmods 96 +XkbMapNotifyEvent 104 +XGCValues.function 0 +XGCValues.plane_mask 8 +XGCValues.foreground 16 +XGCValues.background 24 +XGCValues.line_width 32 +XGCValues.line_style 36 +XGCValues.cap_style 40 +XGCValues.join_style 44 +XGCValues.fill_style 48 +XGCValues.fill_rule 52 +XGCValues.arc_mode 56 +XGCValues.tile 64 +XGCValues.stipple 72 +XGCValues.ts_x_origin 80 +XGCValues.ts_y_origin 84 +XGCValues.font 88 +XGCValues.subwindow_mode 96 +XGCValues.graphics_exposures 100 +XGCValues.clip_x_origin 104 +XGCValues.clip_y_origin 108 +XGCValues.clip_mask 112 +XGCValues.dash_offset 120 +XGCValues.dashes 124 +XGCValues 128 +XFocusChangeEvent.type 0 +XFocusChangeEvent.serial 8 +XFocusChangeEvent.send_event 16 +XFocusChangeEvent.display 24 +XFocusChangeEvent.window 32 +XFocusChangeEvent.mode 40 +XFocusChangeEvent.detail 44 +XFocusChangeEvent 48 +XPixmapFormatValues.depth 0 +XPixmapFormatValues.bits_per_pixel 4 +XPixmapFormatValues.scanline_pad 8 +XPixmapFormatValues 12 +XMapEvent.type 0 +XMapEvent.serial 8 +XMapEvent.send_event 16 +XMapEvent.display 24 +XMapEvent.event 32 +XMapEvent.window 40 +XMapEvent.override_redirect 48 +XMapEvent 56 +XkbBellNotifyEvent.type 0 +XkbBellNotifyEvent.serial 8 +XkbBellNotifyEvent.send_event 16 +XkbBellNotifyEvent.display 24 +XkbBellNotifyEvent.time 32 +XkbBellNotifyEvent.xkb_type 40 +XkbBellNotifyEvent.device 44 +XkbBellNotifyEvent.percent 48 +XkbBellNotifyEvent.pitch 52 +XkbBellNotifyEvent.duration 56 +XkbBellNotifyEvent.bell_class 60 +XkbBellNotifyEvent.bell_id 64 +XkbBellNotifyEvent.name 72 +XkbBellNotifyEvent.window 80 +XkbBellNotifyEvent.event_only 88 +XkbBellNotifyEvent 96 +XIMStringConversionText.length 0 +XIMStringConversionText.feedback 8 +XIMStringConversionText.encoding_is_wchar 16 +XIMStringConversionText.string 24 +XIMStringConversionText 32 +XKeyboardState.key_click_percent 0 +XKeyboardState.bell_percent 4 +XKeyboardState.bell_pitch 8 +XKeyboardState.bell_duration 12 +XKeyboardState.led_mask 16 +XKeyboardState.global_auto_repeat 24 +XKeyboardState.auto_repeats 28 +XKeyboardState 64 +XkbEvent.type 0 +XkbEvent.any 0 +XkbEvent.new_kbd 0 +XkbEvent.map 0 +XkbEvent.state 0 +XkbEvent.ctrls 0 +XkbEvent.indicators 0 +XkbEvent.names 0 +XkbEvent.compat 0 +XkbEvent.bell 0 +XkbEvent.message 0 +XkbEvent.accessx 0 +XkbEvent.device 0 +XkbEvent.core 0 +XkbEvent 192 +XPoint.x 0 +XPoint.y 2 +XPoint 4 +XSegment.x1 0 +XSegment.y1 2 +XSegment.x2 4 +XSegment.y2 6 +XSegment 8 +XIconSize.min_width 0 +XIconSize.min_height 4 +XIconSize.max_width 8 +XIconSize.max_height 12 +XIconSize.width_inc 16 +XIconSize.height_inc 20 +XIconSize 24 +XIMCallback.client_data 0 +XIMCallback.callback 8 +XIMCallback 16 +XConfigureEvent.type 0 +XConfigureEvent.serial 8 +XConfigureEvent.send_event 16 +XConfigureEvent.display 24 +XConfigureEvent.event 32 +XConfigureEvent.window 40 +XConfigureEvent.x 48 +XConfigureEvent.y 52 +XConfigureEvent.width 56 +XConfigureEvent.height 60 +XConfigureEvent.border_width 64 +XConfigureEvent.above 72 +XConfigureEvent.override_redirect 80 +XConfigureEvent 88 +XRectangle.x 0 +XRectangle.y 2 +XRectangle.width 4 +XRectangle.height 6 +XRectangle 8 +XkbNamesNotifyEvent.type 0 +XkbNamesNotifyEvent.serial 8 +XkbNamesNotifyEvent.send_event 16 +XkbNamesNotifyEvent.display 24 +XkbNamesNotifyEvent.time 32 +XkbNamesNotifyEvent.xkb_type 40 +XkbNamesNotifyEvent.device 44 +XkbNamesNotifyEvent.changed 48 +XkbNamesNotifyEvent.first_type 52 +XkbNamesNotifyEvent.num_types 56 +XkbNamesNotifyEvent.first_lvl 60 +XkbNamesNotifyEvent.num_lvls 64 +XkbNamesNotifyEvent.num_aliases 68 +XkbNamesNotifyEvent.num_radio_groups 72 +XkbNamesNotifyEvent.changed_vmods 76 +XkbNamesNotifyEvent.changed_groups 80 +XkbNamesNotifyEvent.changed_indicators 84 +XkbNamesNotifyEvent.first_key 88 +XkbNamesNotifyEvent.num_keys 92 +XkbNamesNotifyEvent 96 +XCreateWindowEvent.type 0 +XCreateWindowEvent.serial 8 +XCreateWindowEvent.send_event 16 +XCreateWindowEvent.display 24 +XCreateWindowEvent.parent 32 +XCreateWindowEvent.window 40 +XCreateWindowEvent.x 48 +XCreateWindowEvent.y 52 +XCreateWindowEvent.width 56 +XCreateWindowEvent.height 60 +XCreateWindowEvent.border_width 64 +XCreateWindowEvent.override_redirect 68 +XCreateWindowEvent 72 +XVisibilityEvent.type 0 +XVisibilityEvent.serial 8 +XVisibilityEvent.send_event 16 +XVisibilityEvent.display 24 +XVisibilityEvent.window 32 +XVisibilityEvent.state 40 +XVisibilityEvent 48 +XWMHints.flags 0 +XWMHints.initial_state 12 +XWMHints.icon_pixmap 16 +XWMHints.icon_window 24 +XWMHints.icon_x 32 +XWMHints.icon_y 36 +XWMHints.icon_mask 40 +XWMHints.input 8 +XWMHints.window_group 48 +XWMHints 56 +XCrossingEvent.type 0 +XCrossingEvent.serial 8 +XCrossingEvent.send_event 16 +XCrossingEvent.display 24 +XCrossingEvent.window 32 +XCrossingEvent.root 40 +XCrossingEvent.subwindow 48 +XCrossingEvent.time 56 +XCrossingEvent.x 64 +XCrossingEvent.y 68 +XCrossingEvent.x_root 72 +XCrossingEvent.y_root 76 +XCrossingEvent.mode 80 +XCrossingEvent.detail 84 +XCrossingEvent.same_screen 88 +XCrossingEvent.focus 92 +XCrossingEvent.state 96 +XCrossingEvent 104 +XSelectionRequestEvent.type 0 +XSelectionRequestEvent.serial 8 +XSelectionRequestEvent.send_event 16 +XSelectionRequestEvent.display 24 +XSelectionRequestEvent.owner 32 +XSelectionRequestEvent.requestor 40 +XSelectionRequestEvent.selection 48 +XSelectionRequestEvent.target 56 +XSelectionRequestEvent.property 64 +XSelectionRequestEvent.time 72 +XSelectionRequestEvent 80 +XNoExposeEvent.type 0 +XNoExposeEvent.serial 8 +XNoExposeEvent.send_event 16 +XNoExposeEvent.display 24 +XNoExposeEvent.drawable 32 +XNoExposeEvent.major_code 40 +XNoExposeEvent.minor_code 44 +XNoExposeEvent 48 +XHostAddress.family 0 +XHostAddress.length 4 +XHostAddress.address 8 +XHostAddress 16 +XColormapEvent.type 0 +XColormapEvent.serial 8 +XColormapEvent.send_event 16 +XColormapEvent.display 24 +XColormapEvent.window 32 +XColormapEvent.colormap 40 +XColormapEvent.new 48 +XColormapEvent.state 52 +XColormapEvent 56 +ColorEntry.r 0 +ColorEntry.g 1 +ColorEntry.b 2 +ColorEntry.flags 3 +ColorEntry 4 +XResizeRequestEvent.type 0 +XResizeRequestEvent.serial 8 +XResizeRequestEvent.send_event 16 +XResizeRequestEvent.display 24 +XResizeRequestEvent.window 32 +XResizeRequestEvent.width 40 +XResizeRequestEvent.height 44 +XResizeRequestEvent 48 +Depth.depth 0 +Depth.nvisuals 4 +Depth.visuals 8 +Depth 16 +XPropertyEvent.type 0 +XPropertyEvent.serial 8 +XPropertyEvent.send_event 16 +XPropertyEvent.display 24 +XPropertyEvent.window 32 +XPropertyEvent.atom 40 +XPropertyEvent.time 48 +XPropertyEvent.state 56 +XPropertyEvent 64 +XDestroyWindowEvent.type 0 +XDestroyWindowEvent.serial 8 +XDestroyWindowEvent.send_event 16 +XDestroyWindowEvent.display 24 +XDestroyWindowEvent.event 32 +XDestroyWindowEvent.window 40 +XDestroyWindowEvent 48 +XStandardColormap.colormap 0 +XStandardColormap.red_max 8 +XStandardColormap.red_mult 16 +XStandardColormap.green_max 24 +XStandardColormap.green_mult 32 +XStandardColormap.blue_max 40 +XStandardColormap.blue_mult 48 +XStandardColormap.base_pixel 56 +XStandardColormap.visualid 64 +XStandardColormap.killid 72 +XStandardColormap 80 +XComposeStatus.compose_ptr 0 +XComposeStatus.chars_matched 8 +XComposeStatus 16 +AwtGraphicsConfigData.awt_depth 0 +AwtGraphicsConfigData.awt_cmap 8 +AwtGraphicsConfigData.awt_visInfo 16 +AwtGraphicsConfigData.awt_num_colors 80 +AwtGraphicsConfigData.awtImage 88 +AwtGraphicsConfigData.AwtColorMatch 96 +AwtGraphicsConfigData.monoImage 104 +AwtGraphicsConfigData.monoPixmap 112 +AwtGraphicsConfigData.monoPixmapWidth 120 +AwtGraphicsConfigData.monoPixmapHeight 124 +AwtGraphicsConfigData.monoPixmapGC 128 +AwtGraphicsConfigData.pixelStride 136 +AwtGraphicsConfigData.color_data 144 +AwtGraphicsConfigData.glxInfo 152 +AwtGraphicsConfigData.isTranslucencySupported 160 +AwtGraphicsConfigData.renderPictFormat 168 +AwtGraphicsConfigData 208 +XColor.pixel 0 +XColor.red 8 +XColor.green 10 +XColor.blue 12 +XColor.flags 14 +XColor.pad 15 +XColor 16 +XTextProperty.value 0 +XTextProperty.encoding 8 +XTextProperty.format 16 +XTextProperty.nitems 24 +XTextProperty 32 diff --git a/test/java/awt/FullScreen/FullScreenInsets/FullScreenInsets.java b/test/java/awt/FullScreen/FullScreenInsets/FullScreenInsets.java new file mode 100644 index 0000000000000000000000000000000000000000..d42137af303c7eaf17f671446720e299a894f1da --- /dev/null +++ b/test/java/awt/FullScreen/FullScreenInsets/FullScreenInsets.java @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.AWTException; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.DisplayMode; +import java.awt.Frame; +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; +import java.awt.Insets; +import java.awt.Robot; +import java.awt.Toolkit; +import java.awt.Window; +import java.awt.image.BufferedImage; + +import sun.awt.SunToolkit; + +/** + * @test + * @bug 8003173 7019055 + * @summary Full-screen windows should have the proper insets. + * @author Sergey Bylokhov + */ +public final class FullScreenInsets { + + private static boolean passed = true; + + public static void main(final String[] args) { + final GraphicsEnvironment ge = GraphicsEnvironment + .getLocalGraphicsEnvironment(); + final GraphicsDevice[] devices = ge.getScreenDevices(); + + final Window wGreen = new Frame(); + wGreen.setBackground(Color.GREEN); + wGreen.setSize(300, 300); + wGreen.setVisible(true); + sleep(); + final Insets iGreen = wGreen.getInsets(); + final Dimension sGreen = wGreen.getSize(); + + final Window wRed = new Frame(); + wRed.setBackground(Color.RED); + wRed.setSize(300, 300); + wRed.setVisible(true); + sleep(); + final Insets iRed = wGreen.getInsets(); + final Dimension sRed = wGreen.getSize(); + + for (final GraphicsDevice device : devices) { + if (!device.isFullScreenSupported()) { + continue; + } + device.setFullScreenWindow(wGreen); + sleep(); + testWindowBounds(device.getDisplayMode(), wGreen); + testColor(wGreen, Color.GREEN); + + device.setFullScreenWindow(wRed); + sleep(); + testWindowBounds(device.getDisplayMode(), wRed); + testColor(wRed, Color.RED); + + device.setFullScreenWindow(null); + sleep(); + testInsets(wGreen.getInsets(), iGreen); + testInsets(wRed.getInsets(), iRed); + testSize(wGreen.getSize(), sGreen); + testSize(wRed.getSize(), sRed); + } + wGreen.dispose(); + wRed.dispose(); + if (!passed) { + throw new RuntimeException("Test failed"); + } + } + + private static void testSize(final Dimension actual, final Dimension exp) { + if (!exp.equals(actual)) { + System.err.println(" Wrong window size:" + + " Expected: " + exp + " Actual: " + actual); + passed = false; + } + } + + private static void testInsets(final Insets actual, final Insets exp) { + if (!actual.equals(exp)) { + System.err.println(" Wrong window insets:" + + " Expected: " + exp + " Actual: " + actual); + passed = false; + } + } + + private static void testWindowBounds(final DisplayMode dm, final Window w) { + if (w.getWidth() != dm.getWidth() || w.getHeight() != dm.getHeight()) { + System.err.println(" Wrong window bounds:" + + " Expected: width = " + dm.getWidth() + + ", height = " + dm.getHeight() + " Actual: " + + w.getSize()); + passed = false; + } + } + + private static void testColor(final Window w, final Color color) { + final Robot r; + try { + r = new Robot(w.getGraphicsConfiguration().getDevice()); + } catch (AWTException e) { + e.printStackTrace(); + passed = false; + return; + } + final BufferedImage bi = r.createScreenCapture(w.getBounds()); + for (int y = 0; y < bi.getHeight(); y++) { + for (int x = 0; x < bi.getWidth(); x++) { + if (bi.getRGB(x, y) != color.getRGB()) { + System.err.println( + "Incorrect pixel at " + x + "x" + y + " : " + + Integer.toHexString(bi.getRGB(x, y)) + + " ,expected : " + Integer.toHexString( + color.getRGB())); + passed = false; + return; + } + } + } + } + + private static void sleep() { + ((SunToolkit) Toolkit.getDefaultToolkit()).realSync(); + try { + Thread.sleep(2000); + } catch (InterruptedException ignored) { + } + } +} diff --git a/test/java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.java b/test/java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.java index f01b8856f0fb971670a1642fd0f9a5ff5c217fee..d95441ba1bcf09407bf23d5d20735bc7ba9afd10 100644 --- a/test/java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.java +++ b/test/java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.java @@ -36,6 +36,7 @@ import java.applet.Applet; import java.util.concurrent.atomic.AtomicBoolean; import java.lang.reflect.InvocationTargetException; import test.java.awt.regtesthelpers.Util; +import sun.awt.OSInfo; public class SubMenuShowTest extends Applet { Robot robot; @@ -86,6 +87,11 @@ public class SubMenuShowTest extends Applet { frame.setVisible(true); Util.waitForIdle(robot); + boolean isMacOSX = (OSInfo.getOSType() == OSInfo.OSType.MACOSX); + if (isMacOSX) { + robot.keyPress(KeyEvent.VK_CONTROL); + robot.delay(20); + } robot.keyPress(KeyEvent.VK_ALT); robot.delay(20); robot.keyPress(KeyEvent.VK_F); @@ -93,6 +99,10 @@ public class SubMenuShowTest extends Applet { robot.keyRelease(KeyEvent.VK_F); robot.delay(20); robot.keyRelease(KeyEvent.VK_ALT); + if (isMacOSX) { + robot.keyRelease(KeyEvent.VK_CONTROL); + robot.delay(20); + } Util.waitForIdle(robot); robot.keyPress(KeyEvent.VK_M); diff --git a/test/java/beans/Introspector/TestTypeResolver.java b/test/java/beans/Introspector/TestTypeResolver.java index 6704d8f7e168aa2762f7f167ac4a4819fca06b95..e69151927761a48f24fef159accbad6bb7b6dfa2 100644 --- a/test/java/beans/Introspector/TestTypeResolver.java +++ b/test/java/beans/Introspector/TestTypeResolver.java @@ -180,10 +180,22 @@ public class TestTypeResolver { return null; // not used } + public T[] getAnnotations(Class annotationClass) { + return null; // not used + } + public Annotation[] getAnnotations() { return null; // not used } + public T getDeclaredAnnotation(Class annotationClass) { + return null; // not used + } + + public T[] getDeclaredAnnotations(Class annotationClass) { + return null; // not used + } + public Annotation[] getDeclaredAnnotations() { return null; // not used } diff --git a/test/javax/swing/JComboBox/ShowPopupAfterHidePopupTest/ShowPopupAfterHidePopupTest.java b/test/javax/swing/JComboBox/ShowPopupAfterHidePopupTest/ShowPopupAfterHidePopupTest.java new file mode 100644 index 0000000000000000000000000000000000000000..e015f5ed587fa645a3e653cfdc701ed148a35776 --- /dev/null +++ b/test/javax/swing/JComboBox/ShowPopupAfterHidePopupTest/ShowPopupAfterHidePopupTest.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + @bug 8006417 + @summary JComboBox.showPopup(), hidePopup() fails in JRE 1.7 on OS X + @author Anton Litvinov +*/ + +import java.awt.*; + +import javax.swing.*; +import javax.swing.plaf.metal.*; + +import sun.awt.SunToolkit; + +public class ShowPopupAfterHidePopupTest { + private static JFrame frame = null; + private static JComboBox comboBox = null; + private static boolean popupIsVisible = false; + + public static void main(String[] args) throws Exception { + UIManager.setLookAndFeel(new MetalLookAndFeel()); + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + frame = new JFrame("Popup Menu of JComboBox"); + comboBox = new JComboBox(new String[]{"Item1", "Item2", "Item3"}); + frame.getContentPane().add(comboBox); + frame.pack(); + frame.setVisible(true); + } + }); + final SunToolkit toolkit = (SunToolkit)Toolkit.getDefaultToolkit(); + toolkit.realSync(); + + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + comboBox.showPopup(); + comboBox.hidePopup(); + comboBox.showPopup(); + } + }); + toolkit.realSync(); + + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + popupIsVisible = comboBox.isPopupVisible(); + frame.dispose(); + } + }); + if (!popupIsVisible) { + throw new RuntimeException("Calling hidePopup() affected the next call to showPopup()."); + } + } +} diff --git a/test/javax/swing/JFileChooser/6817933/Test6817933.java b/test/javax/swing/JFileChooser/6817933/Test6817933.java new file mode 100644 index 0000000000000000000000000000000000000000..2b65f173a1800ac883b0242fba1a0be3cdfe4544 --- /dev/null +++ b/test/javax/swing/JFileChooser/6817933/Test6817933.java @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6817933 + * @summary Tests that HTMLEditorKit does not affect JFileChooser + * @author Sergey Malenkov + */ + +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Point; +import java.awt.Robot; +import java.awt.Toolkit; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JToggleButton; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.text.html.HTMLEditorKit; +import javax.swing.text.html.StyleSheet; + +import sun.awt.SunToolkit; +import sun.swing.WindowsPlacesBar; + +public class Test6817933 { + + private static final String STYLE = "BODY {background:red}"; + private static final Color COLOR = Color.RED; + private static JFileChooser chooser; + + public static void main(String[] args) throws Exception { + try { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); + } + catch (Exception exception) { + exception.printStackTrace(); + return; // ignore test on non-Windows machines + } + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + StyleSheet css = new StyleSheet(); + css.addRule(STYLE); + + HTMLEditorKit kit = new HTMLEditorKit(); + kit.setStyleSheet(css); + + JFrame frame = new JFrame(STYLE); + frame.add(chooser = new JFileChooser()); + frame.setSize(640, 480); + frame.setVisible(true); + } + }); + + SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); + toolkit.realSync(500); + + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + try { + JToggleButton button = get(JToggleButton.class, + get(WindowsPlacesBar.class, chooser)); + + int width = button.getWidth(); + int height = button.getHeight() / 3; + Point point = new Point(0, height * 2); + SwingUtilities.convertPointToScreen(point, button); + width += point.x; + height += point.y; + + int count = 0; + Robot robot = new Robot(); + for (int x = point.x; x < width; x++) { + for (int y = point.y; y < height; y++) { + count += COLOR.equals(robot.getPixelColor(x, y)) ? -2 : 1; + } + } + if (count < 0) { + throw new Exception("TEST ERROR: a lot of red pixels"); + } + } + catch (Exception exception) { + throw new Error(exception); + } + finally { + SwingUtilities.getWindowAncestor(chooser).dispose(); + } + } + }); + } + + private static T get(Class type, Container container) { + Component component = container.getComponent(0); + if (!type.isAssignableFrom(component.getClass())) { + throw new IllegalStateException("expected " + type + "; expected " + component.getClass()); + } + return (T) component; + } +} diff --git a/test/javax/swing/JTree/8003400/Test8003400.java b/test/javax/swing/JTree/8003400/Test8003400.java new file mode 100644 index 0000000000000000000000000000000000000000..f2102f8b1e419dd22654630d220b89865f7a379e --- /dev/null +++ b/test/javax/swing/JTree/8003400/Test8003400.java @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8003400 + * @summary Tests that JTree shows the last row + * @author Sergey Malenkov + * @run main/othervm Test8003400 + * @run main/othervm Test8003400 reverse + * @run main/othervm Test8003400 system + * @run main/othervm Test8003400 system reverse + */ + +import sun.awt.SunToolkit; + +import java.awt.Rectangle; +import java.awt.Robot; +import java.awt.Toolkit; +import java.awt.event.KeyEvent; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTree; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.tree.DefaultMutableTreeNode; + +public class Test8003400 { + + private static final String TITLE = "Test JTree with a large model"; + private static List OBJECTS = Arrays.asList(TITLE, "x", "y", "z"); + private static JScrollPane pane; + + public static void main(String[] args) throws Exception { + for (String arg : args) { + if (arg.equals("reverse")) { + Collections.reverse(OBJECTS); + } + if (arg.equals("system")) { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } + } + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + DefaultMutableTreeNode root = new DefaultMutableTreeNode(); + + JTree tree = new JTree(root); + tree.setLargeModel(true); + tree.setRowHeight(16); + + JFrame frame = new JFrame(TITLE); + frame.add(pane = new JScrollPane(tree)); + frame.setSize(200, 100); + frame.setLocationRelativeTo(null); + frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + frame.setVisible(true); + + for (String object : OBJECTS) { + root.add(new DefaultMutableTreeNode(object)); + } + tree.expandRow(0); + } + }); + + SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); + toolkit.realSync(500); + new Robot().keyPress(KeyEvent.VK_END); + toolkit.realSync(500); + + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + JTree tree = (JTree) pane.getViewport().getView(); + Rectangle inner = tree.getRowBounds(tree.getRowCount() - 1); + Rectangle outer = SwingUtilities.convertRectangle(tree, inner, pane); + outer.y += tree.getRowHeight() - 1 - pane.getVerticalScrollBar().getHeight(); + // error reporting only for automatic testing + if (null != System.getProperty("test.src", null)) { + SwingUtilities.getWindowAncestor(pane).dispose(); + if (outer.y != 0) { + throw new Error("TEST FAILED: " + outer.y); + } + } + } + }); + } +} diff --git a/test/javax/swing/JTree/8004298/bug8004298.java b/test/javax/swing/JTree/8004298/bug8004298.java new file mode 100644 index 0000000000000000000000000000000000000000..3d0ca5c00bc8e94af600d706484868f71cbd8607 --- /dev/null +++ b/test/javax/swing/JTree/8004298/bug8004298.java @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8004298 + * @summary NPE in WindowsTreeUI.ensureRowsAreVisible + * @author Alexander Scherbatiy + * @library ../../regtesthelpers + * @build Util + * @run main bug8004298 + */ + +import java.awt.*; +import java.awt.event.InputEvent; +import javax.swing.*; +import javax.swing.tree.*; +import java.util.concurrent.Callable; +import sun.awt.SunToolkit; +import com.sun.java.swing.plaf.windows.WindowsLookAndFeel; +import com.sun.java.swing.plaf.windows.WindowsTreeUI; + +public class bug8004298 { + + private static JTree tree; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + robot.setAutoDelay(50); + SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); + UIManager.setLookAndFeel(new WindowsLookAndFeel()); + + SwingUtilities.invokeAndWait(new Runnable() { + + @Override + public void run() { + createAndShowGUI(); + } + }); + + toolkit.realSync(); + + Point point = Util.invokeOnEDT(new Callable() { + + @Override + public Point call() throws Exception { + Rectangle rect = tree.getRowBounds(2); + Point p = new Point(rect.x + rect.width / 2, rect.y + rect.height / 2); + SwingUtilities.convertPointToScreen(p, tree); + return p; + } + }); + + robot.mouseMove(point.x, point.y); + robot.mousePress(InputEvent.BUTTON1_MASK); + robot.mouseRelease(InputEvent.BUTTON1_MASK); + robot.mousePress(InputEvent.BUTTON1_MASK); + robot.mouseRelease(InputEvent.BUTTON1_MASK); + toolkit.realSync(); + + } + + private static void createAndShowGUI() { + JFrame frame = new JFrame(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + DefaultMutableTreeNode root = new DefaultMutableTreeNode("root"); + root.add(new DefaultMutableTreeNode("colors")); + DefaultMutableTreeNode sports = new DefaultMutableTreeNode("sports"); + sports.add(new DefaultMutableTreeNode("basketball")); + sports.add(new DefaultMutableTreeNode("football")); + root.add(sports); + + tree = new JTree(root); + tree.setUI(new NullReturningTreeUI()); + + frame.getContentPane().add(tree); + frame.pack(); + frame.setVisible(true); + + } + + private static final class NullReturningTreeUI extends WindowsTreeUI { + + @Override + public Rectangle getPathBounds(JTree tree, TreePath path) { + // the method can return null and callers have to be ready for + // that. Simulate the case by returning null for unknown reason. + if (path != null && path.toString().contains("football")) { + return null; + } + + return super.getPathBounds(tree, path); + } + } +} \ No newline at end of file diff --git a/test/javax/swing/SpringLayout/4726194/bug4726194.java b/test/javax/swing/SpringLayout/4726194/bug4726194.java new file mode 100644 index 0000000000000000000000000000000000000000..2516910e07c0db0f301e10f8b1eb6629dacd3db4 --- /dev/null +++ b/test/javax/swing/SpringLayout/4726194/bug4726194.java @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4726194 7124209 + * @summary Tests for 4726194 + * @author Phil Milne + */ +import java.awt.*; +import java.lang.reflect.InvocationTargetException; +import java.util.*; +import java.util.List; +import javax.swing.*; + +public class bug4726194 { + + private static String[] hConstraints = {SpringLayout.WEST, "Width", SpringLayout.EAST, SpringLayout.HORIZONTAL_CENTER}; + private static String[] vConstraints = {SpringLayout.NORTH, "Height", SpringLayout.SOUTH, SpringLayout.VERTICAL_CENTER, SpringLayout.BASELINE}; + private static int[] FAIL = new int[3]; + private static boolean TEST_DUPLICATES = false; + + public static void main(String[] args) { + try { + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + int minLevel = 2; + int maxLevel = 2; + for (int i = minLevel; i <= maxLevel; i++) { + test(i, true); + test(i, false); + } + } + }); + } catch (InterruptedException | InvocationTargetException ex) { + ex.printStackTrace(); + throw new RuntimeException("FAILED: SwingUtilities.invokeAndWait method failed!"); + } + } + + public static void test(int level, boolean horizontal) { + List result = new ArrayList(); + String[] constraints = horizontal ? hConstraints : vConstraints; + test(level, constraints, result, Arrays.asList(new Object[level])); + JTextField tf = new JTextField(""); + tf.setFont(new Font("Dialog", Font.PLAIN, 6)); + System.out.print("\t\t"); + for (int j = 0; j < constraints.length; j++) { + String constraint = constraints[j]; + System.out.print(constraint + " ".substring(constraint.length())); + } + System.out.println(""); + for (int i = 0; i < result.size(); i++) { + SpringLayout.Constraints c = new SpringLayout.Constraints(tf); + List cc = (List) result.get(i); + for (int j = 0; j < cc.size(); j++) { + String constraint = (String) cc.get(j); + c.setConstraint(constraint, Spring.constant((j + 1) * 10)); + } + System.out.print(" Input:\t\t"); + for (int j = 0; j < constraints.length; j++) { + String constraint = constraints[j]; + int jj = cc.indexOf(constraint); + String val = cc.contains(constraint) ? Integer.toString((jj + 1) * 10) : "?"; + System.out.print(val + "\t\t"); + } + System.out.println(""); + System.out.print("Output:\t\t"); + for (int j = 0; j < constraints.length; j++) { + String constraint = constraints[j]; + Spring spring = c.getConstraint(constraint); + String springVal = (spring == null) ? "?" : Integer.toString(spring.getValue()); + System.out.print(springVal); + System.out.print("\t\t"); + } + for (int j = 0; j < cc.size(); j++) { + String constraint = (String) cc.get(j); + Spring con = c.getConstraint(constraint); + if (con == null || con.getValue() != (j + 1) * 10) { + throw new RuntimeException("Values are wrong!!! "); + } + } + if (horizontal) { + int[] a1 = getValues(c, new String[]{SpringLayout.WEST, SpringLayout.WIDTH, SpringLayout.EAST}); + if (a1[0] + a1[1] != a1[2]) { + throw new RuntimeException("WEST + WIDTH != EAST!!! "); + } + int[] a2 = getValues(c, new String[]{SpringLayout.WEST, SpringLayout.WIDTH, SpringLayout.HORIZONTAL_CENTER}); + if (a2[0] + a2[1] / 2 != a2[2]) { + throw new RuntimeException("WEST + WIDTH/2 != HORIZONTAL_CENTER!!! "); + } + } else { + int[] a3 = getValues(c, new String[]{SpringLayout.NORTH, SpringLayout.HEIGHT, SpringLayout.SOUTH}); + if (a3[0] + a3[1] != a3[2]) { + throw new RuntimeException("NORTH + HEIGHT != SOUTH!!! "); + } + int[] a4 = getValues(c, new String[]{SpringLayout.NORTH, SpringLayout.HEIGHT, SpringLayout.VERTICAL_CENTER}); + int vcDiff = Math.abs(a4[0] + a4[1] / 2 - a4[2]); + if (vcDiff > 1) { + throw new RuntimeException("NORTH + HEIGHT/2 != VERTICAL_CENTER!!! "); + } + int[] a5 = getValues(c, new String[]{SpringLayout.NORTH, SpringLayout.BASELINE, SpringLayout.SOUTH}); + if (a5[0] > a5[1] != a5[1] > a5[2]) { + throw new RuntimeException("BASELINE is not in the range: [NORTH, SOUTH]!!!"); + } + } + System.out.println(""); + } + System.out.println(""); + } + + private static int[] getValues(SpringLayout.Constraints con, String[] cNames) { + int[] result = new int[cNames.length]; + for (int i = 0; i < cNames.length; i++) { + String name = cNames[i]; + Spring s = con.getConstraint(name); + if (s == null) { + System.out.print("Warning: " + name + " is undefined. "); + return FAIL; + } + result[i] = s.getValue(); + } + return result; + } + + public static void test(int level, String[] constraints, List result, List soFar) { + if (level == 0) { + result.add(soFar); + return; + } + for (int i = 0; i < constraints.length; i++) { + if (soFar.contains(constraints[i]) && !TEST_DUPLICATES) { + continue; + } + List child = new ArrayList(soFar); + child.set(level - 1, constraints[i]); + test(level - 1, constraints, result, child); + } + } +} diff --git a/test/sun/text/resources/LocaleData b/test/sun/text/resources/LocaleData index 69f09244403a33e4aac6c5d46f85f3d3c833cbac..51145049ec969616d5d4424c4dba7b605d7b90b9 100644 --- a/test/sun/text/resources/LocaleData +++ b/test/sun/text/resources/LocaleData @@ -8794,3 +8794,6 @@ FormatData/zh_TW/islamic.DatePatterns/0=GGGGy\u5e74M\u6708d\u65e5EEEE FormatData/zh_TW/islamic.DatePatterns/1=GGGGy\u5e74M\u6708d\u65e5 FormatData/zh_TW/islamic.DatePatterns/2=GGGGy/M/d FormatData/zh_TW/islamic.DatePatterns/3=GGGGy/M/d + +# bug 7114053 +LocaleNames/sq/sq=shqip diff --git a/test/sun/text/resources/LocaleDataTest.java b/test/sun/text/resources/LocaleDataTest.java index 97e107d36ee7ae0436722e37cea52d1ca7ff22fc..3fce3f6c36de46cbaaee3a4227595da56c0532a6 100644 --- a/test/sun/text/resources/LocaleDataTest.java +++ b/test/sun/text/resources/LocaleDataTest.java @@ -35,6 +35,7 @@ * 6645405 6650730 6910489 6573250 6870908 6585666 6716626 6914413 6916787 * 6919624 6998391 7019267 7020960 7025837 7020583 7036905 7066203 7101495 * 7003124 7085757 7028073 7171028 7189611 8000983 7195759 8004489 8006509 + * 7114053 * @summary Verify locale data * */