mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-31 19:00:47 +00:00
Add code to return the item properly from layoutAttributesForElementsInRect:, add missing NSCopying declaration to NSCollectionViewItem.h, minor cleanup in NSCollectionViewCompositionalLayout
This commit is contained in:
parent
f3672c31e9
commit
5108348ca6
7 changed files with 28 additions and 28 deletions
|
@ -49,11 +49,6 @@
|
||||||
@class NSMutableDictionary;
|
@class NSMutableDictionary;
|
||||||
@class NSMutableSet;
|
@class NSMutableSet;
|
||||||
|
|
||||||
@class NSMapTable;
|
|
||||||
@class NSMutableArray;
|
|
||||||
@class NSMutableDictionary;
|
|
||||||
@class NSMutableSet;
|
|
||||||
|
|
||||||
@protocol NSPasteboardWriting;
|
@protocol NSPasteboardWriting;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
@ -439,9 +434,10 @@ APPKIT_EXPORT_CLASS
|
||||||
// Managing items
|
// Managing items
|
||||||
NSMutableArray *_visibleItems;
|
NSMutableArray *_visibleItems;
|
||||||
NSMutableSet *_indexPathsForVisibleItems;
|
NSMutableSet *_indexPathsForVisibleItems;
|
||||||
NSDictionary *_visibleSupplementaryViews;
|
NSMutableDictionary *_visibleSupplementaryViews;
|
||||||
NSMutableSet *_indexPathsForSupplementaryElementsOfKind;
|
NSMutableSet *_indexPathsForSupplementaryElementsOfKind;
|
||||||
|
NSMutableDictionary *_itemsToAttributes;
|
||||||
|
|
||||||
// Registered class/nib for item identifier
|
// Registered class/nib for item identifier
|
||||||
NSMapTable *_registeredNibs;
|
NSMapTable *_registeredNibs;
|
||||||
NSMapTable *_registeredClasses;
|
NSMapTable *_registeredClasses;
|
||||||
|
|
|
@ -44,4 +44,3 @@ extern "C" {
|
||||||
#endif /* GS_API_MACOSX */
|
#endif /* GS_API_MACOSX */
|
||||||
|
|
||||||
#endif /* _NSCollectionViewCompositionalLayout_h_GNUSTEP_GUI_INCLUDE */
|
#endif /* _NSCollectionViewCompositionalLayout_h_GNUSTEP_GUI_INCLUDE */
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
|
|
||||||
APPKIT_EXPORT_CLASS
|
APPKIT_EXPORT_CLASS
|
||||||
@interface NSCollectionViewItem : NSViewController
|
@interface NSCollectionViewItem : NSViewController <NSCopying>
|
||||||
{
|
{
|
||||||
IBOutlet NSTextField *textField;
|
IBOutlet NSTextField *textField;
|
||||||
IBOutlet NSImageView *imageView;
|
IBOutlet NSImageView *imageView;
|
||||||
|
|
|
@ -53,6 +53,7 @@ NSCollectionViewSupplementaryElementKind NSCollectionElementKindInterItemGapIndi
|
||||||
@class NSCollectionView;
|
@class NSCollectionView;
|
||||||
@class NSDictionary;
|
@class NSDictionary;
|
||||||
@class NSIndexPath;
|
@class NSIndexPath;
|
||||||
|
@class NSMutableDictionary;
|
||||||
@class NSNib;
|
@class NSNib;
|
||||||
@class NSSet;
|
@class NSSet;
|
||||||
|
|
||||||
|
@ -161,6 +162,7 @@ typedef NSInteger NSCollectionUpdateAction;
|
||||||
{
|
{
|
||||||
NSCollectionView *_collectionView; // weak
|
NSCollectionView *_collectionView; // weak
|
||||||
BOOL _valid;
|
BOOL _valid;
|
||||||
|
NSMutableDictionary *_itemsToAttributes;
|
||||||
|
|
||||||
Class _layoutAttributesClass;
|
Class _layoutAttributesClass;
|
||||||
Class _invalidationContextClass;
|
Class _invalidationContextClass;
|
||||||
|
|
|
@ -130,8 +130,11 @@ static NSString *placeholderItem = nil;
|
||||||
|
|
||||||
-(void) _initDefaults
|
-(void) _initDefaults
|
||||||
{
|
{
|
||||||
|
_itemSize = NSMakeSize(0, 0);
|
||||||
|
_tileWidth = -1.0;
|
||||||
_draggingSourceOperationMaskForLocal = NSDragOperationGeneric | NSDragOperationMove | NSDragOperationCopy;
|
_draggingSourceOperationMaskForLocal = NSDragOperationGeneric | NSDragOperationMove | NSDragOperationCopy;
|
||||||
_draggingSourceOperationMaskForRemote = NSDragOperationGeneric | NSDragOperationMove | NSDragOperationCopy;
|
_draggingSourceOperationMaskForRemote = NSDragOperationGeneric | NSDragOperationMove | NSDragOperationCopy;
|
||||||
|
|
||||||
[self _resetItemSize];
|
[self _resetItemSize];
|
||||||
_content = [[NSArray alloc] init];
|
_content = [[NSArray alloc] init];
|
||||||
_items = [[NSMutableArray alloc] init];
|
_items = [[NSMutableArray alloc] init];
|
||||||
|
@ -145,6 +148,7 @@ static NSString *placeholderItem = nil;
|
||||||
_indexPathsForVisibleItems = [[NSMutableSet alloc] init];
|
_indexPathsForVisibleItems = [[NSMutableSet alloc] init];
|
||||||
_visibleSupplementaryViews = [[NSMutableDictionary alloc] init];
|
_visibleSupplementaryViews = [[NSMutableDictionary alloc] init];
|
||||||
_indexPathsForSupplementaryElementsOfKind = [[NSMutableSet alloc] init];
|
_indexPathsForSupplementaryElementsOfKind = [[NSMutableSet alloc] init];
|
||||||
|
_itemsToAttributes = [[NSMutableDictionary alloc] init];
|
||||||
|
|
||||||
// Registered nib/class
|
// Registered nib/class
|
||||||
_registeredNibs = RETAIN([NSMapTable weakToStrongObjectsMapTable]);
|
_registeredNibs = RETAIN([NSMapTable weakToStrongObjectsMapTable]);
|
||||||
|
@ -441,7 +445,6 @@ static NSString *placeholderItem = nil;
|
||||||
{
|
{
|
||||||
ASSIGN(_collectionViewLayout, layout);
|
ASSIGN(_collectionViewLayout, layout);
|
||||||
|
|
||||||
NSLog(@"layout = %@", layout);
|
|
||||||
[_collectionViewLayout setCollectionView: self]; // weak reference
|
[_collectionViewLayout setCollectionView: self]; // weak reference
|
||||||
[self reloadData];
|
[self reloadData];
|
||||||
}
|
}
|
||||||
|
@ -662,9 +665,7 @@ static NSString *placeholderItem = nil;
|
||||||
|
|
||||||
if (self)
|
if (self)
|
||||||
{
|
{
|
||||||
_itemSize = NSMakeSize(0, 0);
|
[self _initDefaults];
|
||||||
_tileWidth = -1.0;
|
|
||||||
|
|
||||||
if ([aCoder allowsKeyedCoding])
|
if ([aCoder allowsKeyedCoding])
|
||||||
{
|
{
|
||||||
if ([aCoder containsValueForKey: NSCollectionViewMinItemSizeKey])
|
if ([aCoder containsValueForKey: NSCollectionViewMinItemSizeKey])
|
||||||
|
@ -720,7 +721,6 @@ static NSString *placeholderItem = nil;
|
||||||
[self setCollectionViewLayout: [aCoder decodeObject]];
|
[self setCollectionViewLayout: [aCoder decodeObject]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[self _initDefaults];
|
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
@ -1405,6 +1405,9 @@ static NSString *placeholderItem = nil;
|
||||||
[v setFrame: frame];
|
[v setFrame: frame];
|
||||||
[v setHidden: hidden];
|
[v setHidden: hidden];
|
||||||
[v setAlphaValue: alpha];
|
[v setAlphaValue: alpha];
|
||||||
|
|
||||||
|
[_itemsToAttributes setObject: attrs
|
||||||
|
forKey: item];
|
||||||
|
|
||||||
// NSLog(@"v = %@, a = %@, l = %@", v, attrs, _collectionViewLayout);
|
// NSLog(@"v = %@, a = %@, l = %@", v, attrs, _collectionViewLayout);
|
||||||
[self addSubview: v];
|
[self addSubview: v];
|
||||||
|
|
|
@ -464,7 +464,7 @@
|
||||||
[attrs setSize: sz];
|
[attrs setSize: sz];
|
||||||
[attrs setHidden: NO];
|
[attrs setHidden: NO];
|
||||||
[attrs setAlpha: 1.0];
|
[attrs setAlpha: 1.0];
|
||||||
|
|
||||||
return attrs;
|
return attrs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,21 +27,14 @@
|
||||||
|
|
||||||
#import "GSFastEnumeration.h"
|
#import "GSFastEnumeration.h"
|
||||||
|
|
||||||
@interface NSCollectionViewItem (__NSCollectionViewLayout__)
|
@interface NSCollectionView (__NSCollectionViewLayout__)
|
||||||
- (NSCollectionViewLayoutAttributes *) attrs;
|
- (NSDictionary *) itemsToAttributes;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation NSCollectionViewItem (__NSCollectionViewLayout__)
|
@implementation NSCollectionView (__NSCollectionViewLayout__)
|
||||||
- (NSCollectionViewLayoutAttributes *) attrs
|
- (NSDictionary *) itemsToAttributes
|
||||||
{
|
{
|
||||||
NSCollectionViewLayoutAttributes *attrs = AUTORELEASE([[NSCollectionViewLayoutAttributes alloc] init]);
|
return _itemsToAttributes;
|
||||||
|
|
||||||
[attrs setFrame: [[self view] frame]];
|
|
||||||
[attrs setSize: [[self view] frame].size];
|
|
||||||
[attrs setAlpha: [[self view] alphaValue]];
|
|
||||||
[attrs setHidden: [[self view] isHidden]];
|
|
||||||
|
|
||||||
return attrs;
|
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -252,6 +245,11 @@
|
||||||
@implementation NSCollectionViewLayout
|
@implementation NSCollectionViewLayout
|
||||||
|
|
||||||
// Initializers
|
// Initializers
|
||||||
|
- (void) _initDefaults
|
||||||
|
{
|
||||||
|
_itemsToAttributes = [[NSMutableDictionary alloc] init];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)invalidateLayout
|
- (void)invalidateLayout
|
||||||
{
|
{
|
||||||
_valid = NO;
|
_valid = NO;
|
||||||
|
@ -292,6 +290,7 @@
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if (self != nil)
|
if (self != nil)
|
||||||
{
|
{
|
||||||
|
[self _initDefaults];
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
@ -310,6 +309,7 @@
|
||||||
{
|
{
|
||||||
NSMutableArray *result = [NSMutableArray array];
|
NSMutableArray *result = [NSMutableArray array];
|
||||||
NSArray *items = [_collectionView visibleItems];
|
NSArray *items = [_collectionView visibleItems];
|
||||||
|
NSDictionary *itemsToAttributes = [_collectionView itemsToAttributes];
|
||||||
|
|
||||||
FOR_IN(NSCollectionViewItem*, i, items)
|
FOR_IN(NSCollectionViewItem*, i, items)
|
||||||
{
|
{
|
||||||
|
@ -319,7 +319,7 @@
|
||||||
|
|
||||||
if (intersects)
|
if (intersects)
|
||||||
{
|
{
|
||||||
NSCollectionViewLayoutAttributes *a = [i attrs];
|
NSCollectionViewLayoutAttributes *a = [itemsToAttributes objectForKey: i];
|
||||||
[result addObject: a]; // add item since it intersects
|
[result addObject: a]; // add item since it intersects
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue