diff --git a/ChangeLog b/ChangeLog index 188e3c8ee..096ce1a1e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2009-12-21 Wolfgang Lux + * Source/NSOpenPanel.m (-setCanChooseDirectories): Reset the + current selection of an open panel when directory selection is + disabled. This prevents bogus directories being returned from the + next modal session of the panel. + * Source/NSSavePanel.m (-resetDefaults): Also reset the allowsOtherFileTypes attribute to its default when a fresh save panel is requested. diff --git a/Source/NSOpenPanel.m b/Source/NSOpenPanel.m index 67a7fafa6..7feb0f9ff 100644 --- a/Source/NSOpenPanel.m +++ b/Source/NSOpenPanel.m @@ -312,8 +312,20 @@ static NSOpenPanel *_gs_gui_open_panel = nil; */ - (void) setCanChooseDirectories: (BOOL)flag { - _canChooseDirectories = flag; - [_browser setAllowsBranchSelection: flag]; + if (flag != _canChooseDirectories) + { + _canChooseDirectories = flag; + [_browser setAllowsBranchSelection: flag]; + if (!flag) + { + /* FIXME If the user disables directory selection we should deselect + any directories that are currently selected. This is achieved by + calling _reloadBrowser, but this may be considered overkill, since + the displayed files are the same whether canChooseDirectories is + enabled or not. */ + [self _reloadBrowser]; + } + } } /**

Returns YES if the user is allowed to choose directories The