Corrected a problem with switching top level editors during drag and drop.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/gorm/trunk@21144 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Gregory John Casamento 2005-04-22 21:27:14 +00:00
parent 2d0b6fc07e
commit 577c17a847
5 changed files with 46 additions and 14 deletions

View file

@ -1,3 +1,14 @@
2005-04-22 17:15 Gregory John Casamento <greg_casamento@yahoo.com>
* GormCore/GormDocument.h: Changed signature.
* GormCore/GormDocument.m: Add another parameter on the new
method added previously.
* GormCore/GormObjectEditor.m: Get the ext to pass and call
changeToTopLevelEditorAcceptingTypes:andFileTypes: if the
type is NSFilenamePboardType.
* GormCore/GormResourceEditor.m: Get the ext to pass and call
changeToTopLevelEditorAcceptingTypes:andFileTypes:
2005-04-22 15:57 Gregory John Casamento <greg_casamento@yahoo.com> 2005-04-22 15:57 Gregory John Casamento <greg_casamento@yahoo.com>
* GormCore/GormDocument.h: Added new method. * GormCore/GormDocument.h: Added new method.

View file

@ -105,7 +105,8 @@
- (void) createResourceManagers; - (void) createResourceManagers;
- (NSArray *) resourceManagers; - (NSArray *) resourceManagers;
- (IBResourceManager *) resourceManagerForPasteboard: (NSPasteboard *)pboard; - (IBResourceManager *) resourceManagerForPasteboard: (NSPasteboard *)pboard;
- (void) changeToTopLevelEditorAcceptingTypes: (NSArray *)types; - (void) changeToTopLevelEditorAcceptingTypes: (NSArray *)types
andFileType: (NSString *)fileType;
/* Managing classes */ /* Managing classes */
- (GormClassManager*) classManager; - (GormClassManager*) classManager;

View file

@ -813,23 +813,29 @@ static NSImage *fileImage = nil;
} }
- (void) changeToTopLevelEditorAcceptingTypes: (NSArray *)types - (void) changeToTopLevelEditorAcceptingTypes: (NSArray *)types
andFileType: (NSString *)fileType
{ {
if([objectsView acceptsTypeFromArray: types]) if([objectsView acceptsTypeFromArray: types])
{ {
[self changeToViewWithTag: 0]; [self changeToViewWithTag: 0];
} }
else if([imagesView acceptsTypeFromArray: types]) else if([imagesView acceptsTypeFromArray: types] &&
[[imagesView fileTypes] containsObject: fileType])
{ {
[self changeToViewWithTag: 1]; [self changeToViewWithTag: 1];
} }
else if([soundsView acceptsTypeFromArray: types]) else if([soundsView acceptsTypeFromArray: types] &&
[[soundsView fileTypes] containsObject: fileType])
{ {
[self changeToViewWithTag: 2]; [self changeToViewWithTag: 2];
} }
else if([classesView acceptsTypeFromArray: types]) /*
else if([classesView acceptsTypeFromArray: types] &&
[[classesView fileTypes] containsObject: fileType])
{ {
[self changeToViewWithTag: 3]; [self changeToViewWithTag: 3];
} }
*/
} }
/** /**

View file

@ -232,9 +232,18 @@ static NSMapTable *docMap = 0;
{ {
dragType = GormLinkPboardType; dragType = GormLinkPboardType;
} }
else if ([pbTypes containsObject: NSFilenamesPboardType] == YES)
{
NSArray *data = [dragPb propertyListForType: NSFilenamesPboardType];
NSString *fileName = [data objectAtIndex: 0];
NSString *ext = [fileName pathExtension];
[(GormDocument *)document changeToTopLevelEditorAcceptingTypes: pbTypes
andFileType: ext];
dragType = nil;
}
else else
{ {
[(GormDocument *)document changeToTopLevelEditorAcceptingTypes: pbTypes];
dragType = nil; dragType = nil;
} }
@ -289,7 +298,8 @@ static NSMapTable *docMap = 0;
- (void) _registerForAllResourceManagers - (void) _registerForAllResourceManagers
{ {
NSMutableArray *allTypes = [[NSMutableArray alloc] initWithObjects: GormLinkPboardType, nil]; NSMutableArray *allTypes = [[NSMutableArray alloc] initWithObjects: NSFilenamesPboardType,
GormLinkPboardType, nil];
NSArray *mgrs = [(GormDocument *)document resourceManagers]; NSArray *mgrs = [(GormDocument *)document resourceManagers];
NSEnumerator *en = [mgrs objectEnumerator]; NSEnumerator *en = [mgrs objectEnumerator];
IBResourceManager *mgr = nil; IBResourceManager *mgr = nil;

View file

@ -60,6 +60,8 @@ static int handled_mask= NSDragOperationCopy | NSDragOperationGeneric | NSDragOp
NSPasteboard *pb = [sender draggingPasteboard]; NSPasteboard *pb = [sender draggingPasteboard];
NSArray *pbTypes = [pb types]; NSArray *pbTypes = [pb types];
unsigned int mask = [sender draggingSourceOperationMask]; unsigned int mask = [sender draggingSourceOperationMask];
unsigned int oper = NSDragOperationNone;
NSString *ext = nil;
if ((mask & handled_mask) && [pbTypes containsObject: NSFilenamesPboardType]) if ((mask & handled_mask) && [pbTypes containsObject: NSFilenamesPboardType])
{ {
@ -77,25 +79,27 @@ static int handled_mask= NSDragOperationCopy | NSDragOperationGeneric | NSDragOp
en = [data objectEnumerator]; en = [data objectEnumerator];
while((fileName = (NSString *)[en nextObject]) != nil) while((fileName = (NSString *)[en nextObject]) != nil)
{ {
NSString *ext = [fileName pathExtension]; ext = [fileName pathExtension];
if([types containsObject: ext] == YES) if([types containsObject: ext] == YES)
{ {
return NSDragOperationCopy; oper = NSDragOperationCopy;
break;
} }
else else
{ {
return NSDragOperationNone; oper = NSDragOperationNone;
break;
}
} }
} }
return NSDragOperationCopy; if(oper == NSDragOperationNone)
}
else
{ {
[(GormDocument *)document changeToTopLevelEditorAcceptingTypes: pbTypes]; [(GormDocument *)document changeToTopLevelEditorAcceptingTypes: pbTypes
andFileType: ext];
} }
return NSDragOperationNone; return oper;
} }
- (unsigned int) draggingUpdated: (id<NSDraggingInfo>)sender - (unsigned int) draggingUpdated: (id<NSDraggingInfo>)sender