2000-09-13 Mirko Viviani <mirko.viviani@rccr.cremona.it>

* Source/NSBrowser.m ([NSBrowser -_performLoadOfColumn:]): fixed
	intercell space values.

	* Source/NSText.m ([NSText -keyDown:]): removed forward for illegal
	text field events.

	* Source/NSSavePanel.m ([NSSavePanel -controlTextDidEndEditing:]):
	implemented for text field movement.
	([NSSavePanel -_performReturn:]): new private method.
	([NSSavePanel -_initWithoutGModel]): set form cell action to
	_performReturn:

	* Source/NSOpenPanel.m ([NSOpenPanel -controlTextDidEndEditing:]): call
	super.
	([NSOpenPanel -_selectCellName:]):,
	([NSOpenPanel -controlTextDidChange:]): enable okButton if there is
	text in the text field.
	([NSOpenPanel -ok:]): returns if nothing selected.

	* Tools/gpbs.m ([PasteboardEntry -lostOwnership]): removed workaround.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@7506 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Mirko Viviani 2000-09-13 20:18:01 +00:00
parent 1c3f0d5515
commit 05a9cab8f7
6 changed files with 121 additions and 63 deletions

View file

@ -1,3 +1,26 @@
2000-09-13 Mirko Viviani <mirko.viviani@rccr.cremona.it>
* Source/NSBrowser.m ([NSBrowser -_performLoadOfColumn:]): fixed
intercell space values.
* Source/NSText.m ([NSText -keyDown:]): removed forward for illegal
text field events.
* Source/NSSavePanel.m ([NSSavePanel -controlTextDidEndEditing:]):
implemented for text field movement.
([NSSavePanel -_performReturn:]): new private method.
([NSSavePanel -_initWithoutGModel]): set form cell action to
_performReturn:
* Source/NSOpenPanel.m ([NSOpenPanel -controlTextDidEndEditing:]): call
super.
([NSOpenPanel -_selectCellName:]):,
([NSOpenPanel -controlTextDidChange:]): enable okButton if there is
text in the text field.
([NSOpenPanel -ok:]): returns if nothing selected.
* Tools/gpbs.m ([PasteboardEntry -lostOwnership]): removed workaround.
2000-09-13 Fred Kiefer <FredKiefer@gmx.de>
* Source/GSFontInfo.m:

View file

@ -2815,7 +2815,7 @@ static float scrollerWidth; // == [NSScroller scrollerWidth]
{
id bc, sc, matrix = nil;
NSRect matrixRect = {{0, 0}, {100, 100}};
NSSize matrixIntercellSpace = {{0, 0}};
NSSize matrixIntercellSpace = {0, 0};
#if defined NSBTRACE__performLoadOfColumn || defined NSBTRACE_all
fprintf(stderr, "NSBrowser - (void)_performLoadOfColumn: %d\n", column);

View file

@ -156,7 +156,10 @@ static NSOpenPanel *_gs_gui_open_panel = nil;
titleLength = [title length];
if(!titleLength)
return;
{
[_okButton setEnabled:NO];
return;
}
range.location = 0;
range.length = titleLength;
@ -184,9 +187,6 @@ static NSOpenPanel *_gs_gui_open_panel = nil;
else if(result == NSOrderedDescending)
break;
}
if(_canChooseDirectories == NO)
[_okButton setEnabled:NO];
}
@end
@ -369,43 +369,51 @@ static NSOpenPanel *_gs_gui_open_panel = nil;
NSMatrix *matrix;
NSBrowserCell *selectedCell = nil;
NSArray *selectedCells;
int selectedColumn;
int selectedColumn, lastColumn;
selectedColumn = [_browser selectedColumn];
if(selectedColumn == -1)
return;
matrix = [_browser matrixInColumn:selectedColumn];
if([_browser allowsMultipleSelection] == YES)
if (selectedColumn >= 0)
{
selectedCells = [matrix selectedCells];
matrix = [_browser matrixInColumn: selectedColumn];
lastColumn = [_browser lastColumn];
if(selectedColumn == [_browser lastColumn] &&
[selectedCells count] == 1)
selectedCell = [selectedCells objectAtIndex:0];
}
else
{
if(_canChooseDirectories == NO || selectedColumn == [_browser lastColumn])
selectedCell = [matrix selectedCell];
}
if(selectedCell)
{
if ([selectedCell isLeaf] == NO)
if ([_browser allowsMultipleSelection] == YES)
{
[_browser doClick:matrix];
return;
selectedCells = [matrix selectedCells];
if (selectedColumn == lastColumn &&
[selectedCells count] == 1)
selectedCell = [selectedCells objectAtIndex: 0];
}
else
{
if (_canChooseDirectories == NO)
{
if (selectedColumn == lastColumn
|| [[[_form cellAtIndex: 0] stringValue] length] == 0)
selectedCell = [matrix selectedCell];
}
else if (selectedColumn == lastColumn)
selectedCell = [matrix selectedCell];
}
if (selectedCell)
{
if ([selectedCell isLeaf] == NO)
{
[_browser doClick: matrix];
return;
}
}
}
ASSIGN (_directory, [_browser pathToColumn:[_browser lastColumn]]);
if(selectedCell)
if (selectedCell)
ASSIGN (_fullFileName, [_directory stringByAppendingPathComponent:
[selectedCell stringValue]]);
else
ASSIGN (_fullFileName, nil);
ASSIGN (_fullFileName, [_directory stringByAppendingPathComponent:
[[_form cellAtIndex: 0] stringValue]]);
if (_delegateHasValidNameFilter)
{
@ -414,9 +422,9 @@ static NSOpenPanel *_gs_gui_open_panel = nil;
NSString *filename;
enumerator = [filenames objectEnumerator];
while((filename = [enumerator nextObject]))
while ((filename = [enumerator nextObject]))
{
if (![_delegate panel:self isValidFilename: filename])
if ([_delegate panel: self isValidFilename: filename] == NO)
return;
}
}
@ -516,6 +524,8 @@ selectCellWithString: (NSString *)title
if (!selectedCell)
[_form selectTextAtIndex:0];
[super controlTextDidEndEditing:aNotification];
}
- (void) controlTextDidChange: (NSNotification *)aNotification;
@ -621,8 +631,7 @@ selectCellWithString: (NSString *)title
}
[matrix deselectAllCells];
if(_canChooseDirectories == NO)
[_okButton setEnabled:NO];
[_okButton setEnabled:YES];
}
@end /* NSOpenPanel */

View file

@ -82,6 +82,7 @@ static BOOL _gs_display_reading_progress = NO;
- (void) _unmountMedia;
- (void) _selectTextInColumn: (int)column;
- (void) _selectCellName: (NSString *)title;
- (void) _performReturn: (id)sender;
@end /* NSSavePanel (PrivateMethods) */
@ -148,6 +149,9 @@ static BOOL _gs_display_reading_progress = NO;
[_bottomView addSubview: _form];
[_form release];
[[_form cellAtIndex:0] setAction: @selector(_performReturn:)];
[[_form cellAtIndex:0] setTarget: self];
r = NSMakeRect (43, 6, 27, 27);
button = [[NSButton alloc] initWithFrame: r];
[button setBordered: YES];
@ -220,8 +224,8 @@ static BOOL _gs_display_reading_progress = NO;
[self setDefaultButtonCell:[_okButton cell]];
[_okButton release];
[_browser setDoubleAction:@selector(performClick:)];
[_browser setTarget:_okButton];
[_browser setDoubleAction: @selector(performClick:)];
[_browser setTarget: _okButton];
r = NSMakeRect (8, 261, 48, 48);
button = [[NSButton alloc] initWithFrame: r];
@ -383,6 +387,30 @@ static BOOL _gs_display_reading_progress = NO;
}
}
- (void) _performReturn: (id)sender
{
if ([_okButton isEnabled] == YES)
{
NSMatrix *matrix;
int selectedColumn;
selectedColumn = [_browser selectedColumn];
if (selectedColumn != -1 && selectedColumn == [_browser lastColumn])
{
matrix = [_browser matrixInColumn: selectedColumn];
if ([[matrix selectedCell] isLeaf] == NO)
{
[_form abortEditing];
[[_form cellAtIndex: 0] setStringValue: nil];
}
}
[_okButton performClick: self];
}
}
@end /* NSSavePanel (PrivateMethods) */
//
@ -1147,10 +1175,34 @@ selectCellWithString: (NSString*)title
// NSForm delegate methods
//
@interface NSSavePanel (FormDelegate)
- (void) controlTextDidEndEditing: (NSNotification*)aNotification;
- (void) controlTextDidChange: (NSNotification *)aNotification;
@end
@implementation NSSavePanel (FormDelegate)
- (void) controlTextDidEndEditing: (NSNotification*)aNotification
{
id textMovement = [[aNotification userInfo] objectForKey: @"NSTextMovement"];
if (textMovement)
{
switch ([(NSNumber *)textMovement intValue])
{
case NSTabTextMovement:
case NSBacktabTextMovement:
case NSUpTextMovement:
case NSDownTextMovement:
case NSLeftTextMovement:
case NSRightTextMovement:
[self selectText:self];
return;
case NSReturnTextMovement:
break;
}
}
}
- (void) controlTextDidChange: (NSNotification *)aNotification;
{
NSString *s, *selectedString;

View file

@ -2389,29 +2389,6 @@ static NSNotificationCenter *nc;
else
{
[self interpretKeyEvents: [NSArray arrayWithObject: theEvent]];
if (_tf.is_field_editor)
{
NSString *characters = [theEvent characters];
unichar character = 0;
if ([characters length] > 0)
{
character = [characters characterAtIndex: 0];
}
switch (character)
{
case NSUpArrowFunctionKey:
case NSDownArrowFunctionKey:
case NSTabCharacter:
case NSEnterCharacter:
case NSFormFeedCharacter:
case NSCarriageReturnCharacter:
[super keyDown:theEvent];
break;
}
}
}
}

View file

@ -436,10 +436,7 @@ NSMutableDictionary *pasteboards = nil;
if (wantsChangedOwner)
{
/* workaround for NSConnection/NSDistantObject bug with methods
* like (SEL)methodForSelector:
* [a removeObject: owner]; */
[a removeObjectAtIndex:0];
[a removeObject: owner];
[owner pasteboardChangedOwner: pboard];
}