Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2247)

Unified Diff: chrome/browser/cocoa/dev_tools_controller.mm

Issue 3547008: Handle resize corner layout entirely in the platform BrowserWindow*/BrowserView* code... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/cocoa/dev_tools_controller.mm
===================================================================
--- chrome/browser/cocoa/dev_tools_controller.mm (revision 65756)
+++ chrome/browser/cocoa/dev_tools_controller.mm (working copy)
@@ -36,16 +36,26 @@
@implementation DevToolsController
-- (id)init {
+- (id)initWithDelegate:(id<TabContentsControllerDelegate>)delegate {
if ((self = [super init])) {
splitView_.reset([[NSSplitView alloc] initWithFrame:NSZeroRect]);
[splitView_ setDividerStyle:NSSplitViewDividerStyleThin];
[splitView_ setVertical:NO];
[splitView_ setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
+ [splitView_ setDelegate:self];
+
+ contentsController_.reset(
+ [[TabContentsController alloc] initWithContents:NULL
+ delegate:delegate]);
}
return self;
}
+- (void)dealloc {
+ [splitView_ setDelegate:nil];
+ [super dealloc];
+}
+
- (NSView*)view {
return splitView_.get();
}
@@ -62,7 +72,13 @@
[self showDevToolsContents:devToolsContents];
}
+- (void)ensureContentsVisible {
+ [contentsController_ ensureContentsVisible];
+}
+
- (void)showDevToolsContents:(TabContents*)devToolsContents {
+ [contentsController_ ensureContentsSizeDoesNotChange];
+
NSArray* subviews = [splitView_ subviews];
if (devToolsContents) {
DCHECK_GE([subviews count], 1u);
@@ -70,8 +86,8 @@
// |devToolsView| is a TabContentsViewCocoa object, whose ViewID was
// set to VIEW_ID_TAB_CONTAINER initially, so we need to change it to
// VIEW_ID_DEV_TOOLS_DOCKED here.
- NSView* devToolsView = devToolsContents->GetNativeView();
- view_id_util::SetID(devToolsView, VIEW_ID_DEV_TOOLS_DOCKED);
+ view_id_util::SetID(
+ devToolsContents->GetNativeView(), VIEW_ID_DEV_TOOLS_DOCKED);
CGFloat splitOffset = 0;
if ([subviews count] == 1) {
@@ -82,13 +98,11 @@
// Initial load, set to default value.
splitOffset = kDefaultContentsSplitOffset;
}
- [splitView_ addSubview:devToolsView];
+ [splitView_ addSubview:[contentsController_ view]];
} else {
DCHECK_EQ([subviews count], 2u);
// If devtools are already visible, keep the current size.
- splitOffset = NSHeight([devToolsView frame]);
- [splitView_ replaceSubview:[subviews objectAtIndex:1]
- with:devToolsView];
+ splitOffset = NSHeight([[subviews objectAtIndex:1] frame]);
}
// Make sure |splitOffset| isn't too large or too small.
@@ -107,8 +121,11 @@
g_browser_process->local_state()->SetInteger(
prefs::kDevToolsSplitLocation, splitOffset);
[oldDevToolsContentsView removeFromSuperview];
+ [splitView_ adjustSubviews];
}
}
+
+ [contentsController_ changeTabContents:devToolsContents];
}
- (void)resizeDevToolsToNewHeight:(CGFloat)height {
@@ -132,6 +149,16 @@
[splitView_ adjustSubviews];
}
+// NSSplitViewDelegate protocol.
+- (BOOL)splitView:(NSSplitView *)splitView
+ shouldAdjustSizeOfSubview:(NSView *)subview {
rohitrao (ping after 24h) 2010/11/15 23:46:58 Is this new? Is it now required because of some o
Aleksey Shlyapnikov 2010/11/16 02:07:37 It was broken since we switched to one devtools co
rohitrao (ping after 24h) 2010/11/16 02:14:47 Nah, this is fine. On 2010/11/16 02:07:37, Alekse
+ // Return NO for the devTools view to indicate that it should not be resized
+ // automatically. It preserves the height set by the user and also keeps
+ // view height the same while changing tabs when one of the tabs shows infobar
+ // and others are not.
+ if ([[splitView_ subviews] indexOfObject:subview] == 1)
+ return NO;
+ return YES;
+}
-
@end

Powered by Google App Engine
This is Rietveld 408576698