Skip to content
Snippets Groups Projects
Commit baf2ee00 authored by George Nachman's avatar George Nachman
Browse files

Add lion fullscreens support. Remember window collection behavior for fullscreen windows.

parent 0a714f50
No related branches found
No related tags found
No related merge requests found
Showing with 406 additions and 2384 deletions
Loading
Loading
@@ -148,8 +148,6 @@
- (void)onDoubleClick:(id)sender;
- (void)eraseQuery;
- (void)resizeSubviewsWithOldSize:(NSSize)oldBoundsSize;
- (id)retain;
- (oneway void)release;
- (void)turnOnDebug;
- (NSTableView*)tableView;
- (id)delegate;
Loading
Loading
Loading
Loading
@@ -910,19 +910,6 @@ typedef enum { IsDefault = 1, IsNotDefault = 2 } BookmarkRowIsDefault;
[tableView_ setFrame:tableViewFrame];
}
 
- (id)retain
{
if (debug)
NSLog(@"Object at %x retain. Count is now %d", (void*)self, [self retainCount]+1);
return [super retain];
}
- (oneway void)release
{
if (debug)
NSLog(@"Object at %x release. Count is now %d", (void*)self, [self retainCount]-1);
[super release];
}
- (void)turnOnDebug
{
NSLog(@"Debugging object at %x. Current count is %d", (void*)self, [self retainCount]);
Loading
Loading
This diff is collapsed.
Loading
Loading
@@ -599,6 +599,28 @@
<int key="NSPeriodicInterval">25</int>
</object>
</object>
<object class="NSButton" id="745399334">
<reference key="NSNextResponder" ref="505411774"/>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{64, 60}, {268, 18}}</string>
<reference key="NSSuperview" ref="505411774"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="313793810">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Use Lion-style Fullscreen windows</string>
<reference key="NSSupport" ref="966507434"/>
<reference key="NSControlView" ref="745399334"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="93419583"/>
<reference key="NSAlternateImage" ref="573748959"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
</object>
<object class="NSButton" id="107520417">
<reference key="NSNextResponder" ref="505411774"/>
<int key="NSvFlags">256</int>
Loading
Loading
@@ -5548,7 +5570,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSHScroller" ref="812569577"/>
<reference key="NSContentView" ref="97511335"/>
<reference key="NSHeaderClipView" ref="93498484"/>
<reference key="NSCornerView" ref="905967772"/>
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
</object>
<object class="NSButton" id="981472994">
Loading
Loading
@@ -12038,6 +12059,30 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<int key="connectionID">5316</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">nextKeyView</string>
<reference key="source" ref="745399334"/>
<reference key="destination" ref="107520417"/>
</object>
<int key="connectionID">5321</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">settingChanged:</string>
<reference key="source" ref="155244235"/>
<reference key="destination" ref="745399334"/>
</object>
<int key="connectionID">5322</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">lionStyleFullscreen</string>
<reference key="source" ref="155244235"/>
<reference key="destination" ref="745399334"/>
</object>
<int key="connectionID">5323</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
Loading
Loading
@@ -12187,6 +12232,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference ref="951317711"/>
<reference ref="793873772"/>
<reference ref="791672134"/>
<reference ref="745399334"/>
</object>
<reference key="parent" ref="403608584"/>
</object>
Loading
Loading
@@ -17235,6 +17281,20 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="object" ref="1049151664"/>
<reference key="parent" ref="220676475"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5319</int>
<reference key="object" ref="745399334"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="313793810"/>
</object>
<reference key="parent" ref="505411774"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5320</int>
<reference key="object" ref="313793810"/>
<reference key="parent" ref="745399334"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
Loading
Loading
@@ -18307,6 +18367,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>5315.IBPluginDependency</string>
<string>5317.IBPluginDependency</string>
<string>5318.IBPluginDependency</string>
<string>5319.IBPluginDependency</string>
<string>5319.IBViewBoundsToFrameTransform</string>
<string>5319.ImportedFromIB2</string>
<string>5320.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
Loading
Loading
@@ -19215,7 +19279,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCrAAAwxgAAA</bytes>
<bytes key="NSTransformStruct">P4AAAL+AAABCgAAAwwcAAA</bytes>
</object>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
Loading
Loading
@@ -19600,6 +19664,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCrAAAwxgAAA</bytes>
</object>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
Loading
Loading
@@ -19618,7 +19688,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">5318</int>
<int key="maxID">5323</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
Loading
Loading
@@ -20052,6 +20122,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>keyboardToolbarItem</string>
<string>leftCommandButton</string>
<string>leftOptionButton</string>
<string>lionStyleFullscreen</string>
<string>maxVertically</string>
<string>menuToSelect</string>
<string>middleButtonPastesFromClipboard</string>
Loading
Loading
@@ -20249,6 +20320,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>NSPopUpButton</string>
<string>NSPopUpButton</string>
<string>NSButton</string>
<string>NSButton</string>
<string>NSPopUpButton</string>
<string>NSButton</string>
<string>NSSlider</string>
Loading
Loading
@@ -20447,6 +20519,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>keyboardToolbarItem</string>
<string>leftCommandButton</string>
<string>leftOptionButton</string>
<string>lionStyleFullscreen</string>
<string>maxVertically</string>
<string>menuToSelect</string>
<string>middleButtonPastesFromClipboard</string>
Loading
Loading
@@ -21006,6 +21079,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="name">leftOptionButton</string>
<string key="candidateClassName">NSPopUpButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">lionStyleFullscreen</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">maxVertically</string>
<string key="candidateClassName">NSButton</string>
Loading
Loading
Loading
Loading
@@ -17,6 +17,7 @@
 
// Saved state from old window.
BOOL isFullScreen;
BOOL isLionFullScreen;
BOOL isMiniaturized;
NSRect frame;
NSScreen* screen;
Loading
Loading
@@ -46,6 +47,7 @@
 
- (void)sessionInitiatedResize:(PTYSession*)session width:(int)width height:(int)height;
- (BOOL)fullScreen;
- (BOOL)anyFullScreen;
- (BOOL)sendInputToAllSessions;
- (void)closeSession:(PTYSession*)aSession;
- (IBAction)nextTab:(id)sender;
Loading
Loading
Loading
Loading
@@ -38,8 +38,9 @@
if (!self) {
return nil;
}
isFullScreen = [aTerm fullScreen];
isLionFullScreen = [[aTerm ptyWindow] isFullScreen];
isMiniaturized = [[aTerm window] isMiniaturized];
frame = [[aTerm window] frame];
screen = [[aTerm window] screen];
Loading
Loading
@@ -111,6 +112,11 @@
return isFullScreen;
}
 
- (BOOL)anyFullScreen
{
return isLionFullScreen || isFullScreen;
}
// TODO(georgen): disable send input to all sessions when you transition to
// dvr mode; or else make it work.
- (BOOL)sendInputToAllSessions
Loading
Loading
Loading
Loading
@@ -7,7 +7,7 @@
** Copyright (c) 2002, 2003
**
** Author: Fabian, Ujwal S. Setlur
** Initial code by Kiichi Kusama
** Initial code by Kiichi Kusama
**
** Project: iTerm
**
Loading
Loading
@@ -46,14 +46,17 @@
 
@interface PTYWindow : NSWindow
{
int blurFilter;
BOOL layoutDone;
int blurFilter;
BOOL layoutDone;
// True if in OS 10.7 fullscreen mode.
BOOL isFullScreen_;
}
 
- initWithContentRect:(NSRect)contentRect
styleMask:(NSUInteger)aStyle
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)flag;
- initWithContentRect:(NSRect)contentRect
styleMask:(NSUInteger)aStyle
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)flag;
 
- (void)toggleToolbarShown:(id)sender;
 
Loading
Loading
@@ -64,6 +67,7 @@
- (void)disableBlur;
 
- (int)screenNumber;
- (BOOL)isFullScreen;
 
@end
 
Loading
Loading
@@ -180,6 +180,10 @@ typedef enum { CURSOR_UNDERLINE, CURSOR_VERTICAL, CURSOR_BOX } ITermCursorType;
IBOutlet NSButton* showWindowBorder;
BOOL defaultShowWindowBorder;
 
// Lion-style fullscreen
IBOutlet NSButton* lionStyleFullscreen;
BOOL defaultLionStyleFullscreen;
// hide scrollbar and resize
IBOutlet NSButton *hideScrollbar;
BOOL defaultHideScrollbar;
Loading
Loading
@@ -501,6 +505,7 @@ typedef enum { BulkCopyColors, BulkCopyDisplay, BulkCopyWindow, BulkCopyTerminal
- (NSTextField*)hotkeyField;
 
- (BOOL)showWindowBorder;
- (BOOL)lionStyleFullscreen;
- (BOOL)dimInactiveSplitPanes;
- (BOOL)checkTestRelease;
- (BOOL)legacySmartCursorColor;
Loading
Loading
Loading
Loading
@@ -190,7 +190,8 @@
// Initialize a new PseudoTerminal.
// smartLayout: If true then position windows using the "smart layout"
// algorithm.
// windowType: WINDOW_TYPE_NORMAL, WINDOW_TYPE_FULL_SCREEN, or WINDOW_TYPE_TOP.
// windowType: WINDOW_TYPE_NORMAL, WINDOW_TYPE_FULL_SCREEN, WINDOW_TYPE_TOP, or
// WINDOW_TYPE_LION_FULL_SCREEN.
// screen: An index into [NSScreen screens], or -1 to let the system pick a
// screen.
- (id)initWithSmartLayout:(BOOL)smartLayout
Loading
Loading
@@ -200,6 +201,9 @@
// The window's original screen.
- (NSScreen*)screen;
 
// The PTYWindow for this controller.
- (PTYWindow*)ptyWindow;
// Called on object deallocation.
- (void)dealloc;
 
Loading
Loading
@@ -212,6 +216,12 @@
// Get term number
- (int)number;
 
// Returns true if the window is fullscreen in either Lion-style or pre-Lion-style fullscreen.
- (BOOL)anyFullScreen;
// Returns true if the window is in 10.7-style fullscreen.
- (BOOL)lionFullScreen;
// Make the tab at [sender tag] the foreground tab.
- (void)selectSessionAtIndexAction:(id)sender;
 
Loading
Loading
@@ -298,6 +308,12 @@
// one's state into it.
- (IBAction)toggleFullScreenMode:(id)sender;
 
// Enter full screen mode in the next mainloop.
- (void)delayedEnterFullscreen;
// Toggle non-Lion fullscreen mode.
- (void)toggleTraditionalFullScreenMode;
// accessor
- (BOOL)fullScreen;
 
Loading
Loading
Loading
Loading
@@ -28,10 +28,18 @@
#ifndef _ITERM_H_
#define _ITERM_H_
 
#import "AvailabilityMacros.h"
 
#define NSLogRect(aRect) NSLog(@"Rect = %f,%f,%f,%f", (aRect).origin.x, (aRect).origin.y, (aRect).size.width, (aRect).size.height)
 
#define OSX_TIGERORLATER (floor(NSAppKitVersionNumber) > 743)
#define OSX_LEOPARDORLATER (floor(NSAppKitVersionNumber) > 824)
 
#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070
static const int NSWindowCollectionBehaviorFullScreenPrimary = 1 << 7;
static const int NSApplicationPresentationAutoHideToolbar = (1 << 11);
static const int NSApplicationPresentationFullScreen = (1 << 10);
typedef unsigned int NSApplicationPresentationOptions;
#endif
#endif // _ITERM_H_
Loading
Loading
@@ -36,6 +36,8 @@
@class PasteboardHistory;
@class GTMCarbonHotKey;
 
BOOL IsLionOrLater(void);
@interface iTermController : NSObject
{
// PseudoTerminal objects
Loading
Loading
@@ -58,6 +60,9 @@
 
+ (iTermController*)sharedInstance;
+ (void)sharedInstanceRelease;
+ (BOOL)getSystemVersionMajor:(unsigned *)major
minor:(unsigned *)minor
bugFix:(unsigned *)bugFix;
 
+ (void)switchToSpaceInBookmark:(NSDictionary*)aDict;
- (BOOL)rollingInHotkeyTerm;
Loading
Loading
Loading
Loading
@@ -141,6 +141,7 @@
#define WINDOW_TYPE_FULL_SCREEN 1 // Creates a normal window but all callers to initWithSmartLayout will toggle fullscreen mode if this is the windowType.
#define WINDOW_TYPE_TOP 2
#define WINDOW_TYPE_FORCE_FULL_SCREEN 3 // Used internally, never reported by windowType API. Causes initWithSmartLayout to create a window with fullscreen chrome. It will set its windowType to FULL_SCREEN
#define WINDOW_TYPE_LION_FULL_SCREEN 4 // Lion-native fullscreen
 
@interface ITAddressBookMgr : NSObject
{
Loading
Loading
Loading
Loading
@@ -208,13 +208,13 @@ NSString *CommandToolbarItem = @"Command";
#endif
 
[_toolbar setDisplayMode:NSToolbarDisplayModeDefault];
[_toolbar insertItemWithItemIdentifier: NewToolbarItem atIndex:0];
[_toolbar insertItemWithItemIdentifier: ConfigToolbarItem atIndex:1];
[_toolbar insertItemWithItemIdentifier: NSToolbarFlexibleSpaceItemIdentifier atIndex:2];
[_toolbar insertItemWithItemIdentifier: NSToolbarCustomizeToolbarItemIdentifier atIndex:3];
[_toolbar insertItemWithItemIdentifier: NSToolbarSeparatorItemIdentifier atIndex:4];
[_toolbar insertItemWithItemIdentifier: CommandToolbarItem atIndex:5];
[_toolbar insertItemWithItemIdentifier: CloseToolbarItem atIndex:6];
[_toolbar insertItemWithItemIdentifier: NewToolbarItem atIndex:[[_toolbar items] count]];
[_toolbar insertItemWithItemIdentifier: ConfigToolbarItem atIndex:[[_toolbar items] count]];
[_toolbar insertItemWithItemIdentifier: NSToolbarFlexibleSpaceItemIdentifier atIndex:[[_toolbar items] count]];
[_toolbar insertItemWithItemIdentifier: NSToolbarCustomizeToolbarItemIdentifier atIndex:[[_toolbar items] count]];
[_toolbar insertItemWithItemIdentifier: NSToolbarSeparatorItemIdentifier atIndex:[[_toolbar items] count]];
[_toolbar insertItemWithItemIdentifier: CommandToolbarItem atIndex:[[_toolbar items] count]];
[_toolbar insertItemWithItemIdentifier: CloseToolbarItem atIndex:[[_toolbar items] count]];
 
[[_pseudoTerminal window] setToolbar:_toolbar];
 
Loading
Loading
Loading
Loading
@@ -28,7 +28,7 @@
#import <iTerm/PTYSession.h>
#import <iTerm/PTYTask.h>
#import <iTerm/PTYTextView.h>
#import <iTerm/PTYScrollView.h>;
#import <iTerm/PTYScrollView.h>
#import <iTerm/VT100Screen.h>
#import <iTerm/VT100Terminal.h>
#import <iTerm/PreferencePanel.h>
Loading
Loading
@@ -293,7 +293,7 @@ static NSString* SESSION_ARRANGEMENT_WORKING_DIRECTORY = @"Working Directory";
 
// Allocate a scrollview
SCROLLVIEW = [[PTYScrollView alloc] initWithFrame: NSMakeRect(0, 0, aRect.size.width, aRect.size.height)];
[SCROLLVIEW setHasVerticalScroller:(![parent fullScreen] &&
[SCROLLVIEW setHasVerticalScroller:(![parent anyFullScreen] &&
![[PreferencePanel sharedInstance] hideScrollbar])];
NSParameterAssert(SCROLLVIEW != nil);
[SCROLLVIEW setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable];
Loading
Loading
@@ -348,7 +348,7 @@ static NSString* SESSION_ARRANGEMENT_WORKING_DIRECTORY = @"Working Directory";
[SCROLLVIEW setDocumentCursor: [PTYTextView textViewCursor]];
[SCROLLVIEW setLineScroll:[TEXTVIEW lineHeight]];
[SCROLLVIEW setPageScroll:2*[TEXTVIEW lineHeight]];
[SCROLLVIEW setHasVerticalScroller:(![parent fullScreen] &&
[SCROLLVIEW setHasVerticalScroller:(![parent anyFullScreen] &&
![[PreferencePanel sharedInstance] hideScrollbar])];
 
ai_code=0;
Loading
Loading
@@ -2597,7 +2597,7 @@ static long long timeInTenthsOfSeconds(struct timeval t)
return;
}
[TEXTVIEW setFont:font nafont:nafont horizontalSpacing:horizontalSpacing verticalSpacing:verticalSpacing];
if (![[[self tab] parentWindow] fullScreen]) {
if (![[[self tab] parentWindow] anyFullScreen]) {
[[[self tab] parentWindow] fitWindowToTab:[self tab]];
}
// If the window isn't able to adjust, or adjust enough, make the session
Loading
Loading
Loading
Loading
@@ -1143,7 +1143,7 @@ static NSString* FormatRect(NSRect r) {
size.width = [session columns] * [[session TEXTVIEW] charWidth] + MARGIN * 2;
size.height = [session rows] * [[session TEXTVIEW] lineHeight] + VMARGIN * 2;
 
BOOL hasScrollbar = ![parentWindow_ fullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
BOOL hasScrollbar = ![parentWindow_ anyFullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
NSSize scrollViewSize = [PTYScrollView frameSizeForContentSize:size
hasHorizontalScroller:NO
hasVerticalScroller:hasScrollbar
Loading
Loading
@@ -1158,7 +1158,7 @@ static NSString* FormatRect(NSRect r) {
size.width = MIN_SESSION_COLUMNS * [[session TEXTVIEW] charWidth] + MARGIN * 2;
size.height = MIN_SESSION_ROWS * [[session TEXTVIEW] lineHeight] + VMARGIN * 2;
 
BOOL hasScrollbar = ![parentWindow_ fullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
BOOL hasScrollbar = ![parentWindow_ anyFullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
NSSize scrollViewSize = [PTYScrollView frameSizeForContentSize:size
hasHorizontalScroller:NO
hasVerticalScroller:hasScrollbar
Loading
Loading
@@ -1481,7 +1481,7 @@ static NSString* FormatRect(NSRect r) {
{
PtyLog(@"PTYTab fitSessionToCurrentViewSzie");
PtyLog(@"fitSessionToCurrentViewSize begins");
BOOL hasScrollbar = ![parentWindow_ fullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
BOOL hasScrollbar = ![parentWindow_ anyFullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
[[aSession SCROLLVIEW] setHasVerticalScroller:hasScrollbar];
NSSize size = [[aSession SCROLLVIEW] documentVisibleRect].size;
int width = (size.width - MARGIN*2) / [[aSession TEXTVIEW] charWidth];
Loading
Loading
Loading
Loading
@@ -173,7 +173,6 @@
 
// Check the boundary
if (theIndex>[super numberOfTabViewItems]) {
NSLog(@"Warning: index(%d) > numberOfTabViewItems(%d)", theIndex, [super numberOfTabViewItems]);
theIndex = [super numberOfTabViewItems];
}
 
Loading
Loading
Loading
Loading
@@ -744,6 +744,7 @@ static void reapchild(int n)
 
- (BOOL)loggingStartWithPath:(NSString*)aPath
{
BOOL rc;
@synchronized(logHandle) {
[logPath autorelease];
logPath = [[aPath stringByStandardizingPath] copy];
Loading
Loading
@@ -758,8 +759,9 @@ static void reapchild(int n)
[logHandle retain];
[logHandle seekToEndOfFile];
 
return logHandle == nil ? NO : YES;
rc = (logHandle == nil ? NO : YES);
}
return rc;
}
 
- (void)loggingStop
Loading
Loading
@@ -776,9 +778,11 @@ static void reapchild(int n)
 
- (BOOL)logging
{
BOOL rc;
@synchronized(logHandle) {
return logHandle == nil ? NO : YES;
rc = (logHandle == nil ? NO : YES);
}
return rc;
}
 
- (NSString*)description
Loading
Loading
Loading
Loading
@@ -125,6 +125,21 @@
#endif
}
 
- (void)toggleFullScreen:(id)sender
{
isFullScreen_ = !isFullScreen_;
// This is a way of calling [super toggleFullScreen:] that doesn't give a warning if
// the method doesn't exist (it's new in 10.7) but we build against 10.5 sdk.
IMP functionPointer = [NSWindow instanceMethodForSelector:_cmd];
functionPointer(self, _cmd, sender);
}
- (BOOL)isFullScreen
{
return isFullScreen_;
}
- (int)screenNumber
{
return [[[[self screen] deviceDescription] objectForKey:@"NSScreenNumber"] intValue];
Loading
Loading
Loading
Loading
@@ -523,6 +523,14 @@ static float versionNumber;
}
[[tags cell] setDelegate:self];
[tags setDelegate:self];
if (IsLionOrLater()) {
[spaceLabel setHidden:YES];
[spaceButton setHidden:YES];
[lionStyleFullscreen setHidden:NO];
} else {
[lionStyleFullscreen setHidden:YES];
}
}
 
- (void)handleWindowWillCloseNotification:(NSNotification *)notification
Loading
Loading
@@ -911,6 +919,7 @@ static float versionNumber;
defaultCheckTestRelease = [prefs objectForKey:@"CheckTestRelease"]?[[prefs objectForKey:@"CheckTestRelease"] boolValue]: YES;
defaultDimInactiveSplitPanes = [prefs objectForKey:@"DimInactiveSplitPanes"]?[[prefs objectForKey:@"DimInactiveSplitPanes"] boolValue]: YES;
defaultShowWindowBorder = [[prefs objectForKey:@"UseBorder"] boolValue];
defaultLionStyleFullscreen = [prefs objectForKey:@"UseLionStyleFullscreen"] ? [[prefs objectForKey:@"UseLionStyleFullscreen"] boolValue] : YES;
 
defaultControl = [prefs objectForKey:@"Control"] ? [[prefs objectForKey:@"Control"] intValue] : MOD_TAG_CONTROL;
defaultLeftOption = [prefs objectForKey:@"LeftOption"] ? [[prefs objectForKey:@"LeftOption"] intValue] : MOD_TAG_LEFT_OPTION;
Loading
Loading
@@ -1040,6 +1049,7 @@ static float versionNumber;
[prefs setBool:defaultCheckTestRelease forKey:@"CheckTestRelease"];
[prefs setBool:defaultDimInactiveSplitPanes forKey:@"DimInactiveSplitPanes"];
[prefs setBool:defaultShowWindowBorder forKey:@"UseBorder"];
[prefs setBool:defaultLionStyleFullscreen forKey:@"UseLionStyleFullscreen"];
 
[prefs setInteger:defaultControl forKey:@"Control"];
[prefs setInteger:defaultLeftOption forKey:@"LeftOption"];
Loading
Loading
@@ -1132,6 +1142,7 @@ static float versionNumber;
[checkTestRelease setState:defaultCheckTestRelease?NSOnState:NSOffState];
[dimInactiveSplitPanes setState:defaultDimInactiveSplitPanes?NSOnState:NSOffState];
[showWindowBorder setState:defaultShowWindowBorder?NSOnState:NSOffState];
[lionStyleFullscreen setState:defaultLionStyleFullscreen?NSOnState:NSOffState];
 
[self showWindow: self];
[[self window] setLevel:NSNormalWindowLevel];
Loading
Loading
@@ -1235,7 +1246,9 @@ static float versionNumber;
 
- (IBAction)settingChanged:(id)sender
{
if (sender == windowStyle ||
if (sender == lionStyleFullscreen) {
defaultLionStyleFullscreen = ([lionStyleFullscreen state] == NSOnState);
} else if (sender == windowStyle ||
sender == tabPosition ||
sender == hideTab ||
sender == useCompactLabel ||
Loading
Loading
@@ -1677,6 +1690,15 @@ static float versionNumber;
return defaultShowWindowBorder;
}
 
- (BOOL)lionStyleFullscreen
{
if (IsLionOrLater()) {
return defaultLionStyleFullscreen;
} else {
return NO;
}
}
- (BOOL)checkTestRelease
{
return defaultCheckTestRelease;
Loading
Loading
Loading
Loading
@@ -97,6 +97,7 @@ static NSString* TERMINAL_ARRANGEMENT_WIDTH = @"Width";
static NSString* TERMINAL_ARRANGEMENT_HEIGHT = @"Height";
static NSString* TERMINAL_ARRANGEMENT_TABS = @"Tabs";
static NSString* TERMINAL_ARRANGEMENT_FULLSCREEN = @"Fullscreen";
static NSString* TERMINAL_ARRANGEMENT_LION_FULLSCREEN = @"LionFullscreen";
static NSString* TERMINAL_ARRANGEMENT_WINDOW_TYPE = @"Window Type";
static NSString* TERMINAL_ARRANGEMENT_SELECTED_TAB_INDEX = @"Selected Tab Index";
static NSString* TERMINAL_ARRANGEMENT_SCREEN_INDEX = @"Screen";
Loading
Loading
@@ -168,13 +169,23 @@ NSString *sessionsKey = @"sessions";
 
- (id)initWithSmartLayout:(BOOL)smartLayout windowType:(int)windowType screen:(int)screenNumber
{
unsigned int styleMask;
PTYWindow *myWindow;
 
self = [super initWithWindowNibName:@"PseudoTerminal"];
NSAssert(self, @"initWithWindowNibName returned nil");
 
if (windowType == WINDOW_TYPE_FULL_SCREEN && screenNumber == -1) {
// Force the nib to load
[self window];
[commandField retain];
[commandField setDelegate:self];
[bottomBar retain];
if (windowType == WINDOW_TYPE_LION_FULL_SCREEN &&
![[PreferencePanel sharedInstance] lionStyleFullscreen]) {
windowType = WINDOW_TYPE_FULL_SCREEN;
}
if ((windowType == WINDOW_TYPE_FULL_SCREEN ||
windowType == WINDOW_TYPE_LION_FULL_SCREEN) &&
screenNumber == -1) {
NSUInteger n = [[NSScreen screens] indexOfObjectIdenticalTo:[[self window] screen]];
if (n == NSNotFound) {
screenNumber = 0;
Loading
Loading
@@ -199,12 +210,6 @@ NSString *sessionsKey = @"sessions";
windowType_ = windowType;
pbHistoryView = [[PasteboardHistoryView alloc] init];
autocompleteView = [[AutocompleteView alloc] init];
// create the window programmatically with appropriate style mask
styleMask = NSTitledWindowMask |
NSClosableWindowMask |
NSMiniaturizableWindowMask |
NSResizableWindowMask |
NSTexturedBackgroundWindowMask;
 
NSScreen* screen;
if (screenNumber < 0 || screenNumber >= [[NSScreen screens] count]) {
Loading
Loading
@@ -235,6 +240,7 @@ NSString *sessionsKey = @"sessions";
case WINDOW_TYPE_NORMAL:
haveScreenPreference_ = NO;
// fall through
case WINDOW_TYPE_LION_FULL_SCREEN:
case WINDOW_TYPE_FULL_SCREEN:
// Use the system-supplied frame which has a reasonable origin. It may
// be overridden by smart window placement or a saved window location.
Loading
Loading
@@ -267,8 +273,27 @@ NSString *sessionsKey = @"sessions";
preferredOrigin_ = initialFrame.origin;
 
PtyLog(@"initWithSmartLayout - initWithContentRect");
// create the window programmatically with appropriate style mask
NSUInteger styleMask = NSTitledWindowMask |
NSClosableWindowMask |
NSMiniaturizableWindowMask |
NSResizableWindowMask |
NSTexturedBackgroundWindowMask;
switch (windowType) {
case WINDOW_TYPE_TOP:
styleMask = NSBorderlessWindowMask;
break;
case WINDOW_TYPE_FORCE_FULL_SCREEN:
styleMask = NSBorderlessWindowMask;
break;
default:
break;
}
myWindow = [[PTYWindow alloc] initWithContentRect:initialFrame
styleMask:(windowType == WINDOW_TYPE_TOP || windowType == WINDOW_TYPE_FORCE_FULL_SCREEN) ? NSBorderlessWindowMask : styleMask
styleMask:styleMask
backing:NSBackingStoreBuffered
defer:NO];
if (windowType == WINDOW_TYPE_TOP) {
Loading
Loading
@@ -314,6 +339,7 @@ NSString *sessionsKey = @"sessions";
NSRect aRect = [[[self window] contentView] bounds];
aRect.size.height = 22;
tabBarControl = [[PSMTabBarControl alloc] initWithFrame:aRect];
[tabBarControl retain];
PreferencePanel* pp = [PreferencePanel sharedInstance];
[tabBarControl setModifier:[pp modifierTagToMask:[pp switchTabModifier]]];
[tabBarControl setAutoresizingMask:(NSViewWidthSizable | NSViewMinYMargin)];
Loading
Loading
@@ -390,6 +416,11 @@ NSString *sessionsKey = @"sessions";
if (windowType == WINDOW_TYPE_FORCE_FULL_SCREEN) {
windowType_ = WINDOW_TYPE_FULL_SCREEN;
}
if (IsLionOrLater()) {
[[self window] setCollectionBehavior:[[self window] collectionBehavior] | NSWindowCollectionBehaviorFullScreenPrimary];
}
return self;
}
 
Loading
Loading
@@ -398,6 +429,11 @@ NSString *sessionsKey = @"sessions";
return number_;
}
 
- (PTYWindow*)ptyWindow
{
return (PTYWindow*) [self window];
}
- (NSScreen*)screen
{
NSArray* screens = [NSScreen screens];
Loading
Loading
@@ -714,6 +750,7 @@ NSString *sessionsKey = @"sessions";
[pbHistoryView shutdown];
[pbHistoryView release];
[autocompleteView release];
[tabBarControl release];
 
if (fullScreenTabviewTimer_) {
[fullScreenTabviewTimer_ invalidate];
Loading
Loading
@@ -787,6 +824,12 @@ NSString *sessionsKey = @"sessions";
if ([arrangement objectForKey:TERMINAL_ARRANGEMENT_FULLSCREEN] &&
[[arrangement objectForKey:TERMINAL_ARRANGEMENT_FULLSCREEN] boolValue]) {
windowType = WINDOW_TYPE_FULL_SCREEN;
} else if ([[arrangement objectForKey:TERMINAL_ARRANGEMENT_LION_FULLSCREEN] boolValue]) {
if (IsLionOrLater() || ![[PreferencePanel sharedInstance] lionStyleFullscreen]) {
windowType = WINDOW_TYPE_LION_FULL_SCREEN;
} else {
windowType = WINDOW_TYPE_FULL_SCREEN;
}
} else {
windowType = WINDOW_TYPE_NORMAL;
}
Loading
Loading
@@ -812,10 +855,16 @@ NSString *sessionsKey = @"sessions";
rect.size.width = [[arrangement objectForKey:TERMINAL_ARRANGEMENT_OLD_WIDTH] doubleValue];
rect.size.height = [[arrangement objectForKey:TERMINAL_ARRANGEMENT_OLD_HEIGHT] doubleValue];
term->oldFrame_ = rect;
} else if (windowType == WINDOW_TYPE_LION_FULL_SCREEN) {
term = [[[PseudoTerminal alloc] initWithSmartLayout:NO
windowType:WINDOW_TYPE_LION_FULL_SCREEN
screen:screenIndex] autorelease];
[term delayedEnterFullscreen];
} else {
if (windowType == WINDOW_TYPE_NORMAL) {
screenIndex = -1;
}
// TODO: this looks like a bug - are top-of-screen windows not restored to the right screen?
term = [[[PseudoTerminal alloc] initWithSmartLayout:NO windowType:windowType screen:-1] autorelease];
 
NSRect rect;
Loading
Loading
@@ -856,7 +905,7 @@ NSString *sessionsKey = @"sessions";
[result setObject:[NSNumber numberWithDouble:rect.size.height]
forKey:TERMINAL_ARRANGEMENT_HEIGHT];
 
if (_fullScreen) {
if ([self anyFullScreen]) {
// Save old window frame
[result setObject:[NSNumber numberWithDouble:oldFrame_.origin.x]
forKey:TERMINAL_ARRANGEMENT_OLD_X_ORIGIN];
Loading
Loading
@@ -1067,6 +1116,7 @@ NSString *sessionsKey = @"sessions";
[[self window] setFrame:frame display:YES];
break;
 
case WINDOW_TYPE_LION_FULL_SCREEN:
case WINDOW_TYPE_FULL_SCREEN:
[[self window] setFrame:[screen frame] display:YES];
break;
Loading
Loading
@@ -1147,6 +1197,16 @@ NSString *sessionsKey = @"sessions";
[[[self currentSession] TEXTVIEW] setNeedsDisplay:YES];
}
 
- (BOOL)anyFullScreen
{
return _fullScreen || [[self ptyWindow] isFullScreen];
}
- (BOOL)lionFullScreen
{
return [[self ptyWindow] isFullScreen];
}
- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)proposedFrameSize
{
PtyLog(@"%s(%d):-[PseudoTerminal windowWillResize: obj=%d, proposedFrameSize width = %f; height = %f]",
Loading
Loading
@@ -1176,7 +1236,7 @@ NSString *sessionsKey = @"sessions";
// Snap proposed tab size to grid. The snapping uses a grid spaced to
// match the current pane's character size and aligned so margins are
// correct if all we have is a single pane.
BOOL hasScrollbar = !_fullScreen && ![[PreferencePanel sharedInstance] hideScrollbar];
BOOL hasScrollbar = ![self anyFullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
NSSize contentSize = [PTYScrollView contentSizeForFrameSize:tabSize
hasHorizontalScroller:NO
hasVerticalScroller:hasScrollbar
Loading
Loading
@@ -1287,10 +1347,50 @@ NSString *sessionsKey = @"sessions";
 
- (BOOL)useTransparency
{
if ([self lionFullScreen]) {
return NO;
}
return useTransparency_;
}
 
- (IBAction)toggleFullScreenMode:(id)sender
{
if ([self lionFullScreen] ||
(windowType_ != WINDOW_TYPE_FULL_SCREEN &&
IsLionOrLater() &&
[[PreferencePanel sharedInstance] lionStyleFullscreen])) {
// Is 10.7 Lion or later.
[[self ptyWindow] performSelector:@selector(toggleFullScreen:) withObject:self];
if ([[self ptyWindow] isFullScreen]) {
windowType_ = WINDOW_TYPE_LION_FULL_SCREEN;
} else {
windowType_ = WINDOW_TYPE_NORMAL;
}
// TODO(georgen): toggle enabled status of use transparency menu item
return;
}
[self toggleTraditionalFullScreenMode];
}
- (void)delayedEnterFullscreen
{
if (IsLionOrLater() &&
windowType_ == WINDOW_TYPE_LION_FULL_SCREEN &&
[[PreferencePanel sharedInstance] lionStyleFullscreen]) {
if (![[[iTermController sharedInstance] keyTerminalWindow] lionFullScreen]) {
[self performSelector:@selector(toggleFullScreenMode:)
withObject:nil
afterDelay:0];
}
} else if (!_fullScreen) {
[self performSelector:@selector(toggleTraditionalFullScreenMode)
withObject:nil
afterDelay:0];
}
}
- (void)toggleTraditionalFullScreenMode
{
[SessionView windowDidResize];
if (windowType_ == WINDOW_TYPE_TOP) {
Loading
Loading
@@ -1507,7 +1607,7 @@ NSString *sessionsKey = @"sessions";
{
PtyLog(@"sessionInitiatedResize");
// ignore resize request when we are in full screen mode.
if (_fullScreen) {
if ([self anyFullScreen]) {
PtyLog(@"sessionInitiatedResize - in full screen mode");
return;
}
Loading
Loading
@@ -2448,7 +2548,7 @@ NSString *sessionsKey = @"sessions";
if (![[self currentTab] canSplitVertically:isVertical withSize:newSessionSize]) {
// Test if the window can afford to grow. First, compute the minimum growth possible based on
// the font size of the new pane.
BOOL hasScrollbar = !_fullScreen && ![[PreferencePanel sharedInstance] hideScrollbar];
BOOL hasScrollbar = ![self anyFullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
NSSize growth = NSMakeSize(isVertical ? newSessionSize.width : 0,
isVertical ? 0 : newSessionSize.height);
growth = [PTYScrollView frameSizeForContentSize:growth
Loading
Loading
@@ -2633,7 +2733,7 @@ NSString *sessionsKey = @"sessions";
 
- (BOOL)fitWindowToTabSize:(NSSize)tabSize
{
if (_fullScreen) {
if ([self anyFullScreen]) {
[self fitTabsToWindow];
return NO;
}
Loading
Loading
@@ -2993,7 +3093,7 @@ NSString *sessionsKey = @"sessions";
 
- (void)adjustFullScreenWindowForBottomBarChange
{
if (!_fullScreen) {
if (![self anyFullScreen]) {
return;
}
PtyLog(@"adjustFullScreenWindowForBottomBarChange");
Loading
Loading
@@ -3055,7 +3155,7 @@ NSString *sessionsKey = @"sessions";
{
if (![[PreferencePanel sharedInstance] showWindowBorder]) {
return NO;
} else if (_fullScreen || windowType_ == WINDOW_TYPE_TOP) {
} else if ([self anyFullScreen] || windowType_ == WINDOW_TYPE_TOP) {
return NO;
} else {
return YES;
Loading
Loading
@@ -3069,7 +3169,7 @@ NSString *sessionsKey = @"sessions";
BOOL topTabBar = ([[PreferencePanel sharedInstance] tabViewType] == PSMTab_TopTab);
if (![[PreferencePanel sharedInstance] showWindowBorder]) {
return NO;
} else if (_fullScreen || windowType_ == WINDOW_TYPE_TOP) {
} else if ([self anyFullScreen] || windowType_ == WINDOW_TYPE_TOP) {
// Only normal windows can have a left border
return NO;
} else if (![bottomBar isHidden]) {
Loading
Loading
@@ -3091,7 +3191,7 @@ NSString *sessionsKey = @"sessions";
{
if (![[PreferencePanel sharedInstance] showWindowBorder]) {
return NO;
} else if (_fullScreen || windowType_ == WINDOW_TYPE_TOP) {
} else if ([self anyFullScreen] || windowType_ == WINDOW_TYPE_TOP) {
return NO;
} else if ([[PreferencePanel sharedInstance] hideScrollbar]) {
// hidden scrollbar
Loading
Loading
@@ -3237,7 +3337,7 @@ NSString *sessionsKey = @"sessions";
return;
}
 
BOOL hasScrollbar = !_fullScreen && ![[PreferencePanel sharedInstance] hideScrollbar];
BOOL hasScrollbar = ![self anyFullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
NSWindow *thisWindow = [self window];
[thisWindow setShowsResizeIndicator:hasScrollbar];
if ([TABVIEW numberOfTabViewItems] == 1 &&
Loading
Loading
@@ -3458,12 +3558,12 @@ NSString *sessionsKey = @"sessions";
 
if (windowType_ == WINDOW_TYPE_TOP) {
NSRect windowFrame = [[self window] frame];
BOOL hasScrollbar = !_fullScreen && ![[PreferencePanel sharedInstance] hideScrollbar];
BOOL hasScrollbar = ![self anyFullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
NSSize contentSize = [PTYScrollView contentSizeForFrameSize:windowFrame.size
hasHorizontalScroller:NO
hasVerticalScroller:hasScrollbar
borderType:NSNoBorder];
columns = (contentSize.width - MARGIN*2) / charSize.width;
}
if (size == nil && [TABVIEW numberOfTabViewItems] != 0) {
Loading
Loading
@@ -3473,7 +3573,7 @@ NSString *sessionsKey = @"sessions";
}
NSRect sessionRect;
if (size != nil) {
BOOL hasScrollbar = !_fullScreen && ![[PreferencePanel sharedInstance] hideScrollbar];
BOOL hasScrollbar = ![self anyFullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
NSSize contentSize = [PTYScrollView contentSizeForFrameSize:*size
hasHorizontalScroller:NO
hasVerticalScroller:hasScrollbar
Loading
Loading
@@ -3519,7 +3619,7 @@ NSString *sessionsKey = @"sessions";
return;
}
PtyLog(@"safelySetSessionSize");
BOOL hasScrollbar = !_fullScreen && ![[PreferencePanel sharedInstance] hideScrollbar];
BOOL hasScrollbar = ![self anyFullScreen] && ![[PreferencePanel sharedInstance] hideScrollbar];
if (windowType_ == WINDOW_TYPE_NORMAL) {
int width = columns;
int height = rows;
Loading
Loading
@@ -4123,6 +4223,7 @@ NSString *sessionsKey = @"sessions";
}
}
 
// On Lion, a window that can join all spaces can't go fullscreen.
if ([self numberOfTabs] == 1 &&
[addressbookEntry objectForKey:KEY_SPACE] &&
[[addressbookEntry objectForKey:KEY_SPACE] intValue] == -1) {
Loading
Loading
@@ -4133,6 +4234,12 @@ NSString *sessionsKey = @"sessions";
return aSession;
}
 
- (NSApplicationPresentationOptions)window:(NSWindow *)window
willUseFullScreenPresentationOptions:(NSApplicationPresentationOptions)proposedOptions
{
return proposedOptions | NSApplicationPresentationAutoHideToolbar;
}
 
// accessors for to-many relationships:
// (See NSScriptKeyValueCoding.h)
Loading
Loading
@@ -4450,14 +4557,15 @@ NSString *sessionsKey = @"sessions";
[self initWithSmartLayout:NO
windowType:windowType
screen:-1];
toggle = windowType == WINDOW_TYPE_FULL_SCREEN;
toggle = ([self windowType] == WINDOW_TYPE_FULL_SCREEN) ||
([self windowType] == WINDOW_TYPE_LION_FULL_SCREEN);
}
 
// launch the session!
id rv = [[iTermController sharedInstance] launchBookmark:abEntry
inTerminal:self];
if (toggle) {
[self toggleFullScreenMode:self];
[self delayedEnterFullscreen];
}
return rv;
}
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment