Minor pasteboard fix

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@8831 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
richard 2001-01-27 06:57:21 +00:00
parent eb6b10fafb
commit 9ee1db1efc
2 changed files with 18 additions and 10 deletions

View file

@ -1,3 +1,7 @@
2001-01-27 Richard Frith-Macdonald <rfm@gnu.org>
* Tools/gpbs.m: Cope better with nil pasteboard owners.
Fri Jan 26 22:36:21 2001 Nicola Pero <n.pero@mi.flashnet.it> Fri Jan 26 22:36:21 2001 Nicola Pero <n.pero@mi.flashnet.it>
* Source/NSBrowser.m (NSBR_VOFFSET): Changed from 3 to 2. * Source/NSBrowser.m (NSBR_VOFFSET): Changed from 3 to 2.

View file

@ -414,38 +414,42 @@ NSMutableDictionary *pasteboards = nil;
- (void) lostOwnership - (void) lostOwnership
{ {
NSMutableArray* a = [NSMutableArray arrayWithCapacity:4]; NSMutableArray *a = [NSMutableArray arrayWithCapacity: 4];
unsigned i; unsigned i;
NS_DURING NS_DURING
{ {
if (wantsChangedOwner) if (wantsChangedOwner == YES && owner != nil)
{ {
[a addObject: owner]; [a addObject: owner];
} }
for (i = 0; i < [items count]; i++) for (i = 0; i < [items count]; i++)
{ {
PasteboardData* d = [items objectAtIndex:i]; PasteboardData *d = [items objectAtIndex: i];
if ([d wantsChangedOwner] && [a containsObject: [d owner]] == NO) if ([d wantsChangedOwner] == YES && [d owner] != nil
&& [a containsObject: [d owner]] == NO)
{ {
[a addObject: [d owner]]; [a addObject: [d owner]];
} }
} }
if (wantsChangedOwner) if (wantsChangedOwner == YES)
{ {
[a removeObject: owner];
[owner pasteboardChangedOwner: pboard]; [owner pasteboardChangedOwner: pboard];
if (owner != nil)
{
[a removeObject: owner];
}
} }
for (i = 0; i < [items count] && [a count] > 0; i++) for (i = 0; i < [items count] && [a count] > 0; i++)
{ {
PasteboardData* d = [items objectAtIndex:i]; PasteboardData *d = [items objectAtIndex:i];
id o = [d owner]; id o = [d owner];
if ([a containsObject: o]) if (o != nil && [a containsObject: o])
{ {
[o pasteboardChangedOwner: [d pboard]]; [o pasteboardChangedOwner: [d pboard]];
[a removeObject: o]; [a removeObject: o];