From 9a2f82232f14fa03cfec0cdce66f87d514ff53b8 Mon Sep 17 00:00:00 2001 From: wlux Date: Mon, 21 Dec 2009 22:55:01 +0000 Subject: [PATCH] Reset the current selection of an NSOpenPanel when directory selection is disabled. This prevents bogus directories being returned from the next modal session of the panel. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@29155 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Source/NSOpenPanel.m | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) 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