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