Compare commits

...

5 Commits

7 changed files with 70 additions and 29 deletions

View File

@@ -89,6 +89,10 @@ public class CGLLayer extends CFRetainedResource {
// the layer redirects all painting to the buffer's graphics
// and blits the buffer to the layer surface (in drawInCGLContext callback)
CGraphicsConfig gc = (CGraphicsConfig)getGraphicsConfiguration();
if (gc == null) {
surfaceData = NullSurfaceData.theInstance;
return surfaceData;
}
surfaceData = gc.createSurfaceData(this);
setScale(gc.getDevice().getScaleFactor());
// the layer holds a reference to the buffer, which in

View File

@@ -151,11 +151,11 @@ class CFileDialog implements FileDialogPeer {
* If the dialog doesn't have a file filter return true.
*/
private boolean queryFilenameFilter(final String inFilename) {
if (!Boolean.getBoolean("awt.file.dialog.enable.filter")) {
return true;
}
// Temporary workaround for JRE-199
/*
AtomicBoolean ret = new AtomicBoolean(false);
boolean ret = false;
final FilenameFilter ff = target.getFilenameFilter();
File fileObj = new File(inFilename);
@@ -164,26 +164,9 @@ class CFileDialog implements FileDialogPeer {
if (!fileObj.isDirectory()) {
File directoryObj = new File(fileObj.getParent());
String nameOnly = fileObj.getName();
final Semaphore filesFilterSemaphore = new Semaphore(0);
try {
SwingUtilities.invokeAndWait(() -> {
ret.set(ff.accept(directoryObj, nameOnly));
filesFilterSemaphore.release();
});
filesFilterSemaphore.acquire();
} catch (InvocationTargetException | InterruptedException e) {
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("Concurrency issues during files filtering: ", e);
}
}
ret = ff.accept(directoryObj, nameOnly);
}
return ret.get(); */
return true;
return ret;
}
private native String[] nativeRunFileDialog(long ownerPtr, String title, int mode,

View File

@@ -257,7 +257,8 @@ final class CPlatformResponder {
if(isDeadChar){
testChar = (char) out[2];
if(testChar == 0){
jkeyCode = out[0];
if(testChar == 0 && jkeyCode == KeyEvent.VK_UNDEFINED){
return;
}
}

View File

@@ -749,7 +749,7 @@ extern bool isSystemShortcut_NextWindowInApplication(NSUInteger modifiersMask, N
NSLog(@"Apple AWT : Error AWTView:awtComponent given bad parameters.");
if (env != NULL)
{
JNFDumpJavaStack(env);
JNF_EXECUTE_AND_HANDLE(JNFDumpJavaStack(env));
}
return NULL;
}
@@ -764,7 +764,7 @@ extern bool isSystemShortcut_NextWindowInApplication(NSUInteger modifiersMask, N
static JNF_MEMBER_CACHE(jf_Target, jc_LWWindowPeer, "target", "Ljava/awt/Component;");
if (peer == NULL) {
NSLog(@"Apple AWT : Error AWTView:awtComponent got null peer from CPlatformView");
JNFDumpJavaStack(env);
JNF_EXECUTE_AND_HANDLE(JNFDumpJavaStack(env));
return NULL;
}
jobject comp = JNFGetObjectField(env, peer, jf_Target);

View File

@@ -845,11 +845,9 @@ AWT_ASSERT_APPKIT_THREAD;
JNIEnv *env = [ThreadUtilities getJNIEnv];
jobject platformWindow = [self.javaPlatformWindow jObjectWithEnv:env];
if (platformWindow != NULL) {
JNF_COCOA_DURING(env)
static JNF_MEMBER_CACHE(jm_windowDidBecomeMain, jc_CPlatformWindow, "windowDidBecomeMain", "()V");
JNFCallVoidMethod(env, platformWindow, jm_windowDidBecomeMain);
JNF_EXECUTE_AND_HANDLE(JNFCallVoidMethod(env, platformWindow, jm_windowDidBecomeMain));
(*env)->DeleteLocalRef(env, platformWindow);
JNF_COCOA_HANDLE(env)
}
[self orderChildWindows:YES];
}

View File

@@ -133,6 +133,25 @@ canChooseDirectories:(BOOL)inChooseDirectories
[thePanel setDelegate:self];
NSMenuItem *editMenuItem = nil;
NSMenu *menu = [NSApp mainMenu];
if (menu != nil) {
if (menu.numberOfItems > 0) {
NSMenu *submenu = [[menu itemAtIndex:0] submenu];
if (submenu != nil) {
menu = submenu;
}
}
editMenuItem = [self createEditMenu];
if (menu.numberOfItems > 0) {
[menu insertItem:editMenuItem atIndex:0];
} else {
[menu addItem:editMenuItem];
}
[editMenuItem release];
}
if (fOwner != nil) {
if (fDirectory != nil) {
[thePanel setDirectoryURL:[NSURL fileURLWithPath:[fDirectory stringByExpandingTildeInPath]]];
@@ -180,6 +199,10 @@ canChooseDirectories:(BOOL)inChooseDirectories
fPanelResult = [thePanel runModalForDirectory:fDirectory file:fFile];
}
if (editMenuItem != nil) {
[menu removeItem:editMenuItem];
}
if ([self userClickedOK]) {
if (fMode == java_awt_FileDialog_LOAD) {
NSOpenPanel *openPanel = (NSOpenPanel *)thePanel;
@@ -197,6 +220,33 @@ canChooseDirectories:(BOOL)inChooseDirectories
[self disposer];
}
- (NSMenuItem *) createEditMenu {
NSMenu *editMenu = [[NSMenu alloc] initWithTitle:@"Edit"];
NSMenuItem *cutItem = [[NSMenuItem alloc] initWithTitle:@"Cut" action:@selector(cut:) keyEquivalent:@"x"];
[editMenu addItem:cutItem];
[cutItem release];
NSMenuItem *copyItem = [[NSMenuItem alloc] initWithTitle:@"Copy" action:@selector(copy:) keyEquivalent:@"c"];
[editMenu addItem:copyItem];
[copyItem release];
NSMenuItem *pasteItem = [[NSMenuItem alloc] initWithTitle:@"Paste" action:@selector(paste:) keyEquivalent:@"v"];
[editMenu addItem:pasteItem];
[pasteItem release];
NSMenuItem *selectAllItem = [[NSMenuItem alloc] initWithTitle:@"Select All" action:@selector(selectAll:) keyEquivalent:@"a"];
[editMenu addItem:selectAllItem];
[selectAllItem release];
NSMenuItem *editMenuItem = [NSMenuItem new];
[editMenuItem setTitle:@"Edit"];
[editMenuItem setSubmenu:editMenu];
[editMenu release];
return editMenuItem;
}
- (BOOL) askFilenameFilter:(NSString *)filename {
JNIEnv *env = [ThreadUtilities getJNIEnv];
jstring jString = JNFNormalizedJavaStringForPath(env, filename);

View File

@@ -53,6 +53,11 @@ extern int useFontSmoothing;
+ (void) setLatestPerformKeyEquivalentEvent:(NSEvent *)val;
@end
#define JNF_EXECUTE_AND_HANDLE(jnf_method_call) \
JNF_COCOA_DURING(env) \
jnf_method_call; \
JNF_COCOA_HANDLE(env)
/*
* Utility Macros
*/