Changeset 329

Show
Ignore:
Timestamp:
11/27/07 19:08:25 (1 year ago)
Author:
gbooker
Message:

Nice and wide centered menu

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/SapphireCenteredMenuController.m

    r320 r329  
    1010#import "SapphireFrontRowCompat.h" 
    1111 
     12@interface SapphireWideCenteredLayout : NSObject 
     13{ 
     14        id              realLayout; 
     15} 
     16@end 
     17 
     18@interface SapphireCenteredMenuController (compat) 
     19- (id)firstSublayerNamed:(NSString *)name; 
     20- (void)setLayoutManager:(id)newLayout; 
     21- (id)layoutManager; 
     22@end 
     23 
     24@implementation SapphireWideCenteredLayout 
     25- (id)initWithReal:(id)real 
     26{ 
     27        self = [super init]; 
     28        if(self == nil) 
     29                return self; 
     30        realLayout = [real retain]; 
     31        return self; 
     32} 
     33 
     34- (void) dealloc 
     35{ 
     36        [realLayout release]; 
     37        [super dealloc]; 
     38} 
     39 
     40- (void)layoutSublayersOfLayer:(id)layer 
     41{ 
     42        [realLayout layoutSublayersOfLayer:layer]; 
     43        NSRect master = [layer frame]; 
     44        id listLayer = [layer firstSublayerNamed:@"list"]; 
     45        NSRect listFrame = [listLayer frame]; 
     46        listFrame.size.height -= 2.5f*listFrame.origin.y; 
     47        listFrame.size.width*=2.0f; 
     48        listFrame.origin.x = (master.size.width - listFrame.size.width) * 0.5f; 
     49        listFrame.origin.y *= 2.0f; 
     50        [listLayer setFrame:listFrame]; 
     51} 
     52- (NSSize)preferredSizeOfLayer:(id)layer 
     53{ 
     54        return [realLayout preferredSizeOfLayer:layer]; 
     55} 
     56 
     57@end 
     58 
    1259@implementation SapphireCenteredMenuController 
    1360 
     
    1764                return [super initWithScene:scene]; 
    1865         
    19         return [super init]; 
     66        self = [super init]; 
     67        SapphireWideCenteredLayout *newLayout = [[SapphireWideCenteredLayout alloc] initWithReal:[self layoutManager]]; 
     68        [self setLayoutManager:newLayout]; 
     69        [newLayout release]; 
     70        return self; 
    2071} 
    2172