diff options
author | Silenio Quarti | 2009-10-30 21:03:03 +0000 |
---|---|---|
committer | Silenio Quarti | 2009-10-30 21:03:03 +0000 |
commit | a386b34974ff95c2fe14c65dc0c14c2a8bf66acc (patch) | |
tree | d5eb8413fa39aae9ab4d3082ea1f6531f4d42a2a | |
parent | 85a1eb94257512c6e5d3679bd238a8ab7221ad5a (diff) | |
download | eclipse.platform.swt-a386b34974ff95c2fe14c65dc0c14c2a8bf66acc.tar.gz eclipse.platform.swt-a386b34974ff95c2fe14c65dc0c14c2a8bf66acc.tar.xz eclipse.platform.swt-a386b34974ff95c2fe14c65dc0c14c2a8bf66acc.zip |
BugÊ277323 - Save dialog does not show filter extensions (back port to 3.5.2)
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/FileDialog.java | 45 |
1 files changed, 23 insertions, 22 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/FileDialog.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/FileDialog.java index 532f14a233..7b4b4d2931 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/FileDialog.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/FileDialog.java @@ -237,7 +237,6 @@ int filterProc (int theItem, int infoPtr, int callBackUD, int filterMode) { } } } - return 0; } } } @@ -295,31 +294,33 @@ public String open () { int extensions = 0; Callback filterCallback = null, eventCallback = null; int [] outDialog = new int [1]; - if ((style & SWT.SAVE) != 0) { - if (!overwrite) options.optionFlags |= OS.kNavDontConfirmReplacement; - OS.NavCreatePutFileDialog (options, 0, 0, 0, 0, outDialog); - } else { - if ((style & SWT.MULTI) != 0) options.optionFlags |= OS.kNavAllowMultipleFiles; - int filterProc = 0, eventProc = 0; - if (filterExtensions != null && filterExtensions.length != 0) { - extensions = options.popupExtension = OS.CFArrayCreateMutable (OS.kCFAllocatorDefault, filterExtensions.length, 0); - for (int i = 0; i < filterExtensions.length; i++) { - String str = filterExtensions [i]; - if (filterNames != null && filterNames.length > i) { - str = filterNames [i]; - } - char [] chars = new char [str.length ()]; - str.getChars (0, chars.length, chars, 0); - int ptr = OS.CFStringCreateWithCharacters (OS.kCFAllocatorDefault, chars, chars.length); - if (ptr != 0) OS.CFArrayAppendValue (extensions, ptr); - } + int filterProc = 0, eventProc = 0; + if (filterExtensions != null && filterExtensions.length != 0) { + extensions = options.popupExtension = OS.CFArrayCreateMutable (OS.kCFAllocatorDefault, filterExtensions.length, 0); + for (int i = 0; i < filterExtensions.length; i++) { + String str = filterExtensions [i]; + if (filterNames != null && filterNames.length > i) { + str = filterNames [i]; + } + char [] chars = new char [str.length ()]; + str.getChars (0, chars.length, chars, 0); + int ptr = OS.CFStringCreateWithCharacters (OS.kCFAllocatorDefault, chars, chars.length); + if (ptr != 0) OS.CFArrayAppendValue (extensions, ptr); + } + if ((style & SWT.SAVE) == 0) { filterCallback = new Callback (this, "filterProc", 4); filterProc = filterCallback.getAddress(); if (filterProc == 0) SWT.error (SWT.ERROR_NO_MORE_CALLBACKS); - eventCallback = new Callback (this, "eventProc", 3); - eventProc = eventCallback.getAddress(); - if (eventProc == 0) SWT.error (SWT.ERROR_NO_MORE_CALLBACKS); } + eventCallback = new Callback (this, "eventProc", 3); + eventProc = eventCallback.getAddress(); + if (eventProc == 0) SWT.error (SWT.ERROR_NO_MORE_CALLBACKS); + } + if ((style & SWT.SAVE) != 0) { + if (!overwrite) options.optionFlags |= OS.kNavDontConfirmReplacement; + OS.NavCreatePutFileDialog (options, 0, 0, eventProc, 0, outDialog); + } else { + if ((style & SWT.MULTI) != 0) options.optionFlags |= OS.kNavAllowMultipleFiles; OS.NavCreateGetFileDialog(options, 0, eventProc, 0, filterProc, 0, outDialog); } if (outDialog [0] != 0) { |