changeset 5087:5a50422d53d8

7147066: [macosx] FileDialog.getDirectory() returns incorrect directory Reviewed-by: anthony, swingler
author dcherepanov
date Tue, 06 Mar 2012 15:14:33 +0400
parents 4bf554db8ed9
children d87f0d9134a9
files src/macosx/native/sun/awt/CFileDialog.m
diffstat 1 files changed, 12 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/macosx/native/sun/awt/CFileDialog.m	Mon Mar 05 23:59:58 2012 +0400
+++ b/src/macosx/native/sun/awt/CFileDialog.m	Tue Mar 06 15:14:33 2012 +0400
@@ -117,13 +117,15 @@
         fPanelResult = [thePanel runModalForDirectory:fDirectory file:fFile];
         [thePanel setDelegate:nil];
 
-        if (fMode == java_awt_FileDialog_LOAD) {
-            NSOpenPanel *openPanel = (NSOpenPanel *)thePanel;
-            fURLs = [openPanel URLs];
-        } else {
-            fURLs = [NSArray arrayWithObject:[thePanel URL]];
+        if ([self userClickedOK]) {
+            if (fMode == java_awt_FileDialog_LOAD) {
+                NSOpenPanel *openPanel = (NSOpenPanel *)thePanel;
+                fURLs = [openPanel URLs];
+            } else {
+                fURLs = [NSArray arrayWithObject:[thePanel URL]];
+            }
+            [fURLs retain];
         }
-        [fURLs retain];
     }
 
     [self disposer];
@@ -213,12 +215,11 @@
         returnValue = (*env)->NewObjectArray(env, count, stringClass, NULL);
         (*env)->DeleteLocalRef(env, stringClass);
 
-        NSUInteger i;
-        for (i = 0; i < count; i++) {
-            jstring filename = JNFNSToJavaString(env, [[urls objectAtIndex:i] absoluteString]);
-            (*env)->SetObjectArrayElement(env, returnValue, i, filename);
+        [urls enumerateObjectsUsingBlock:^(id url, NSUInteger index, BOOL *stop) {
+            jstring filename = JNFNormalizedJavaStringForPath(env, [url path]);
+            (*env)->SetObjectArrayElement(env, returnValue, index, filename);
             (*env)->DeleteLocalRef(env, filename);
-        }
+        }];
     }
 
     [dialogDelegate release];