diff --git a/ChangeLog b/ChangeLog index 987f48f31..12318f6f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-12-09 Wolfgang Lux + + * Source/NSSavePanel.m (-setAllowedFileTypes:): Change extension + of the file name if the current extension is no longer allowed. + 2008-12-08 Fred Kiefer * Headers/AppKit/NSTextFieldCell.h: Declare new private method diff --git a/Source/NSSavePanel.m b/Source/NSSavePanel.m index 461247662..edf931dd0 100644 --- a/Source/NSSavePanel.m +++ b/Source/NSSavePanel.m @@ -965,11 +965,30 @@ selectCellWithString: (NSString*)title { if (types != _allowedFileTypes) { + BOOL hasAllowedExtension = NO; + NSString *filename, *extension; + + filename = [[_form cellAtIndex: 0] stringValue]; + extension = [filename pathExtension]; + if ([extension length] && [_allowedFileTypes count] && + [_allowedFileTypes indexOfObject: extension] != NSNotFound) + hasAllowedExtension = YES; + if ([types count] == 0) DESTROY(_allowedFileTypes); else ASSIGN(_allowedFileTypes, types); [self _reloadBrowser]; + + if (hasAllowedExtension && [types count] && + [types indexOfObject: extension] == NSNotFound && + [types indexOfObject: @""] == NSNotFound) + { + extension = [types objectAtIndex: 0]; + filename = [filename stringByDeletingPathExtension]; + filename = [filename stringByAppendingPathExtension: extension]; + [[_form cellAtIndex: 0] setStringValue: filename]; + } } }