X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fmacosx%2Fintf.m;h=2c30f12786a1e589c6a9f6ea7cf4cc09f78b0418;hb=1c8685fb7d890424ec06ff9a2e3cbc1da984e617;hp=a1b38da6dad28dfc9f1dc0248072c34edfb5e249;hpb=676a627a1ff186119ec05f690e34645a3e003431;p=vlc diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index a1b38da6da..2c30f12786 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -455,7 +455,11 @@ static VLCMain *_o_sharedMainInstance = nil; [o_window setDelegate: self]; b_restore_size = false; - if( [o_window frame].size.height <= 200 ) + + // Set that here as IB seems to be buggy + [o_window setContentMinSize:NSMakeSize(338., 30.)]; + + if( [o_window contentRectForFrameRect:[o_window frame]].size.height <= 169. ) { b_small_window = YES; [o_window setFrame: NSMakeRect( [o_window frame].origin.x, @@ -466,14 +470,16 @@ static VLCMain *_o_sharedMainInstance = nil; else { b_small_window = NO; - [o_playlist_view setFrame: NSMakeRect( 0, 0, [o_window frame].size.width, [o_window frame].size.height - 95 )]; + NSRect contentRect = [o_window contentRectForFrameRect:[o_window frame]]; + [o_playlist_view setFrame: NSMakeRect( 0, 0, contentRect.size.width, contentRect.size.height - [o_window contentMinSize].height )]; [o_playlist_view setNeedsDisplay:YES]; [o_playlist_view setAutoresizesSubviews: YES]; [[o_window contentView] addSubview: o_playlist_view]; } + [self updateTogglePlaylistState]; - o_size_with_playlist = [o_window frame].size; + o_size_with_playlist = [o_window contentRectForFrameRect:[o_window frame]].size; p_playlist = pl_Yield( p_intf ); @@ -516,8 +522,6 @@ static NSString * VLCToolbarMediaControl = @"VLCToolbarMediaControl"; - (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar { - NSLog(@"toolbarAllowedItemIdentifiers %s", __func__); - return [NSArray arrayWithObjects: // NSToolbarCustomizeToolbarItemIdentifier, // NSToolbarFlexibleSpaceItemIdentifier, @@ -529,8 +533,6 @@ static NSString * VLCToolbarMediaControl = @"VLCToolbarMediaControl"; - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar { - NSLog(@"toolbarAllowedItemIdentifiers %s", __func__); - return [NSArray arrayWithObjects: VLCToolbarMediaControl, nil ]; @@ -538,7 +540,6 @@ static NSString * VLCToolbarMediaControl = @"VLCToolbarMediaControl"; - (NSToolbarItem *) toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag { - NSLog(@"toolbarAllowedItemIdentifiers %s", __func__); NSToolbarItem *toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier] autorelease]; @@ -1341,7 +1342,6 @@ static NSString * VLCToolbarMediaControl = @"VLCToolbarMediaControl"; [o_btn_prev setEnabled: (b_plmul || b_chapters)]; [o_btn_next setEnabled: (b_plmul || b_chapters)]; - NSLog(@"seekable %d", b_seekable); [o_timeslider setFloatValue: 0.0]; [o_timeslider setEnabled: b_seekable]; [o_timefield setStringValue: @"00:00"]; @@ -2098,8 +2098,8 @@ end: "\n"; NSString * mailPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"vlc_crash_mail.eml"]; NSString * mailContent = [NSString stringWithFormat:[NSString stringWithUTF8String:mail], - _NS("Crash Report (Type Ctrl-shift-D and hit send)"), - _NS("(Type Command-shift-D (Menu 'Message'>'Send Again' and hit send)"), + _NS("Crash Report (Type Command-shift-D and hit send)"), + _NS("Type Command-shift-D (or in Menu \"Message\">\"Send Again\") and hit the \"Send Mail\" button."), userComment, crashLog]; BOOL ret = [mailContent writeToFile:mailPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; if( !ret ) @@ -2117,7 +2117,6 @@ end: NSString * crashReporter = [@"~/Library/Logs/CrashReporter" stringByExpandingTildeInPath]; NSDirectoryEnumerator *direnum = [[NSFileManager defaultManager] enumeratorAtPath:crashReporter]; NSString *fname; - BOOL found = NO; NSString * latestLog = nil; NSInteger year = !previouslySeen ? [[NSUserDefaults standardUserDefaults] integerForKey:@"LatestCrashReportYear"] : 0; NSInteger month = !previouslySeen ? [[NSUserDefaults standardUserDefaults] integerForKey:@"LatestCrashReportMonth"]: 0; @@ -2130,25 +2129,29 @@ end: if([fname hasPrefix:@"VLC"] && [fname hasSuffix:@"crash"]) { NSArray * compo = [fname componentsSeparatedByString:@"_"]; - if( [compo count] < 3 ) { found = NO; break; } + if( [compo count] < 3 ) continue; compo = [[compo objectAtIndex:1] componentsSeparatedByString:@"-"]; - if( [compo count] < 4 ) { found = NO; break; } - if( year < [[compo objectAtIndex:0] intValue] && - month < [[compo objectAtIndex:1] intValue] && - day < [[compo objectAtIndex:2] intValue] && - hours < [[compo objectAtIndex:3] intValue] ) + if( [compo count] < 4 ) continue; + + // Dooh. ugly. + if( year < [[compo objectAtIndex:0] intValue] || + (year ==[[compo objectAtIndex:0] intValue] && + (month < [[compo objectAtIndex:1] intValue] || + (month ==[[compo objectAtIndex:1] intValue] && + (day < [[compo objectAtIndex:2] intValue] || + (day ==[[compo objectAtIndex:2] intValue] && + hours < [[compo objectAtIndex:3] intValue] )))))) { year = [[compo objectAtIndex:0] intValue]; month = [[compo objectAtIndex:1] intValue]; day = [[compo objectAtIndex:2] intValue]; hours = [[compo objectAtIndex:3] intValue]; latestLog = [crashReporter stringByAppendingPathComponent:fname]; - found = YES; } } } - if(!(found && [[NSFileManager defaultManager] fileExistsAtPath: latestLog])) + if(!(latestLog && [[NSFileManager defaultManager] fileExistsAtPath:latestLog])) return nil; if( !previouslySeen ) @@ -2179,14 +2182,14 @@ end: [pool release]; } -- (void)notifyCrashLogToUser:(NSString *)crashLog +- (void)notifyCrashLogToUser:(NSString *)crashLogPath { int ret = NSRunInformationalAlertPanel(_NS("VLC has previously crashed"), _NS("VLC has previously crashed, do you want to send an email with the crash to VLC's team?"), _NS("Send"), _NS("Don't Send"), nil, nil); if( ret == NSAlertDefaultReturn ) { - [self mailCrashLog:crashLog withUserComment:_NS("")]; + [self mailCrashLog:[NSString stringWithContentsOfFile:crashLogPath] withUserComment:_NS("")]; } } @@ -2245,35 +2248,35 @@ end: } } +#pragma mark Playlist toggling + - (IBAction)togglePlaylist:(id)sender { - NSRect o_rect = [o_window frame]; + NSRect contentRect = [o_window contentRectForFrameRect:[o_window frame]]; + NSRect o_rect = [o_window contentRectForFrameRect:[o_window frame]]; /*First, check if the playlist is visible*/ - if( o_rect.size.height <= 200 ) + if( contentRect.size.height <= 169. ) { - o_restore_rect = o_rect; + o_restore_rect = contentRect; b_restore_size = true; b_small_window = YES; /* we know we are small, make sure this is actually set (see case below) */ + /* make large */ - if( o_size_with_playlist.height > 200 ) - { + if( o_size_with_playlist.height > 169. ) o_rect.size.height = o_size_with_playlist.height; - } else { - o_rect.size.height = 500; - } + else + o_rect.size.height = 500.; - if( o_size_with_playlist.width > [o_window minSize].width ) - { + if( o_size_with_playlist.width >= [o_window contentMinSize].width ) o_rect.size.width = o_size_with_playlist.width; - } else { - o_rect.size.width = 500; - } - - o_rect.size.height = (o_size_with_playlist.height > 200) ? - o_size_with_playlist.height : 500; - o_rect.origin.x = [o_window frame].origin.x; - o_rect.origin.y = [o_window frame].origin.y - o_rect.size.height + - [o_window minSize].height; + else + o_rect.size.width = [o_window contentMinSize].width; + + o_rect.origin.x = contentRect.origin.x; + o_rect.origin.y = contentRect.origin.y - o_rect.size.height + + [o_window contentMinSize].height; + + o_rect = [o_window frameRectForContentRect:o_rect]; NSRect screenRect = [[o_window screen] visibleFrame]; if( !NSContainsRect( screenRect, o_rect ) ) { @@ -2288,21 +2291,31 @@ end: else { NSSize curSize = o_rect.size; - /* make small */ - o_rect.size.height = [o_window minSize].height; - o_rect.size.width = [o_window minSize].width; - o_rect.origin.x = [o_window frame].origin.x; - /* Calculate the position of the lower right corner after resize */ - o_rect.origin.y = [o_window frame].origin.y + - [o_window frame].size.height - [o_window minSize].height; - if( b_restore_size ) + { o_rect = o_restore_rect; + if( o_rect.size.height < [o_window contentMinSize].height ) + o_rect.size.height = [o_window contentMinSize].height; + if( o_rect.size.width < [o_window contentMinSize].width ) + o_rect.size.width = [o_window contentMinSize].width; + } + else + { + NSRect contentRect = [o_window contentRectForFrameRect:[o_window frame]]; + /* make small */ + o_rect.size.height = [o_window contentMinSize].height; + o_rect.size.width = [o_window contentMinSize].width; + o_rect.origin.x = contentRect.origin.x; + /* Calculate the position of the lower right corner after resize */ + o_rect.origin.y = contentRect.origin.y + + contentRect.size.height - [o_window contentMinSize].height; + } [o_playlist_view setAutoresizesSubviews: NO]; [o_playlist_view removeFromSuperview]; [o_btn_playlist setState: NO]; b_small_window = NO; /* we aren't small here just yet. we are doing an animated resize after this */ + o_rect = [o_window frameRectForContentRect:o_rect]; } [o_window setFrame: o_rect display:YES animate: YES]; @@ -2310,7 +2323,7 @@ end: - (void)updateTogglePlaylistState { - if( [o_window frame].size.height <= 200 ) + if( [o_window contentRectForFrameRect:[o_window frame]].size.height <= 169. ) { [o_btn_playlist setState: NO]; } @@ -2322,13 +2335,16 @@ end: - (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)proposedFrameSize { + /* Not triggered on a window resize or maxification of the window. only by window mouse dragging resize */ /*Stores the size the controller one resize, to be able to restore it when toggling the playlist*/ o_size_with_playlist = proposedFrameSize; - if( proposedFrameSize.height <= 200 ) + NSRect rect; + rect.size = proposedFrameSize; + if( [o_window contentRectForFrameRect:rect].size.height <= 169. ) { if( b_small_window == NO ) { @@ -2353,7 +2369,8 @@ end: { /* If large and coming from small then show */ [o_playlist_view setAutoresizesSubviews: YES]; - [o_playlist_view setFrame: NSMakeRect( 0, 0, [o_window frame].size.width, [o_window frame].size.height - [o_window minSize].height )]; + NSRect contentRect = [o_window contentRectForFrameRect:[o_window frame]]; + [o_playlist_view setFrame: NSMakeRect( 0, 0, contentRect.size.width, contentRect.size.height - [o_window contentMinSize].height )]; [o_playlist_view setNeedsDisplay:YES]; [[o_window contentView] addSubview: o_playlist_view]; b_small_window = NO; @@ -2361,6 +2378,8 @@ end: [self updateTogglePlaylistState]; } +#pragma mark - + @end @implementation VLCMain (NSMenuValidation)