summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/cocoa
diff options
context:
space:
mode:
authorrsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-18 20:59:16 +0000
committerrsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-18 20:59:16 +0000
commite888d1b13a4785adf3b5db897becd6a644a4e3ad (patch)
tree25b3de947b8be797f481d70cafa5ef175234fa6e /chrome/browser/ui/cocoa
parent5580fbe8f52193a367e5de5b1d7f798ad8880e74 (diff)
downloadchromium_src-e888d1b13a4785adf3b5db897becd6a644a4e3ad.zip
chromium_src-e888d1b13a4785adf3b5db897becd6a644a4e3ad.tar.gz
chromium_src-e888d1b13a4785adf3b5db897becd6a644a4e3ad.tar.bz2
[Mac] Fix cut-off Browser chrome when opening Tabpose with an infobar showing.
BUG=73357 TEST=Get an infobar to show. Open Tab Overview/Tabpose. Everything looks correct. Review URL: http://codereview.chromium.org/6543012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75429 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/cocoa')
-rw-r--r--chrome/browser/ui/cocoa/browser_window_controller.h3
-rw-r--r--chrome/browser/ui/cocoa/browser_window_controller.mm35
-rw-r--r--chrome/browser/ui/cocoa/tabpose_window.mm16
3 files changed, 45 insertions, 9 deletions
diff --git a/chrome/browser/ui/cocoa/browser_window_controller.h b/chrome/browser/ui/cocoa/browser_window_controller.h
index 0820217..597ed90 100644
--- a/chrome/browser/ui/cocoa/browser_window_controller.h
+++ b/chrome/browser/ui/cocoa/browser_window_controller.h
@@ -156,6 +156,9 @@ class TabContents;
// Return a weak pointer to the tab strip controller.
- (TabStripController*)tabStripController;
+// Access the ObjC controller that contains the infobars.
+- (InfoBarContainerController*)infoBarContainerController;
+
// Access the C++ bridge object representing the status bubble for the window.
- (StatusBubbleMac*)statusBubble;
diff --git a/chrome/browser/ui/cocoa/browser_window_controller.mm b/chrome/browser/ui/cocoa/browser_window_controller.mm
index ce8697a..ef18ebb 100644
--- a/chrome/browser/ui/cocoa/browser_window_controller.mm
+++ b/chrome/browser/ui/cocoa/browser_window_controller.mm
@@ -424,6 +424,10 @@
return tabStripController_.get();
}
+- (InfoBarContainerController*)infoBarContainerController {
+ return infoBarContainerController_.get();
+}
+
- (StatusBubbleMac*)statusBubble {
return statusBubble_;
}
@@ -2039,6 +2043,11 @@ willAnimateFromState:(bookmarks::VisualState)oldState
return [focused isKindOfClass:[AutocompleteTextFieldEditor class]];
}
+- (void)tabposeWillClose:(NSNotification*)notif {
+ // Re-show the container after Tabpose closes.
+ [[infoBarContainerController_ view] setHidden:NO];
+}
+
- (void)openTabpose {
NSUInteger modifierFlags = [[NSApp currentEvent] modifierFlags];
BOOL slomo = (modifierFlags & NSShiftKeyMask) != 0;
@@ -2046,17 +2055,33 @@ willAnimateFromState:(bookmarks::VisualState)oldState
// Cover info bars, inspector window, and detached bookmark bar on NTP.
// Do not cover download shelf.
NSRect activeArea = [[self tabContentArea] frame];
+ // Take out the anti-spoof height so that Tabpose doesn't draw on top of the
+ // browser chrome.
activeArea.size.height +=
- NSHeight([[infoBarContainerController_ view] frame]);
+ NSHeight([[infoBarContainerController_ view] frame]) -
+ [infoBarContainerController_ antiSpoofHeight];
if ([self isBookmarkBarVisible] && [self placeBookmarkBarBelowInfoBar]) {
NSView* bookmarkBarView = [bookmarkBarController_ view];
activeArea.size.height += NSHeight([bookmarkBarView frame]);
}
- [TabposeWindow openTabposeFor:[self window]
- rect:activeArea
- slomo:slomo
- tabStripModel:browser_->tabstrip_model()];
+ // Hide the infobar container so that the anti-spoof bulge doesn't show when
+ // Tabpose is open.
+ [[infoBarContainerController_ view] setHidden:YES];
+
+ TabposeWindow* window =
+ [TabposeWindow openTabposeFor:[self window]
+ rect:activeArea
+ slomo:slomo
+ tabStripModel:browser_->tabstrip_model()];
+
+ // When the Tabpose window closes, the infobar container needs to be made
+ // visible again.
+ NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
+ [center addObserver:self
+ selector:@selector(tabposeWillClose:)
+ name:NSWindowWillCloseNotification
+ object:window];
}
@end // @implementation BrowserWindowController(Fullscreen)
diff --git a/chrome/browser/ui/cocoa/tabpose_window.mm b/chrome/browser/ui/cocoa/tabpose_window.mm
index 22aa6ad..65556aa 100644
--- a/chrome/browser/ui/cocoa/tabpose_window.mm
+++ b/chrome/browser/ui/cocoa/tabpose_window.mm
@@ -24,6 +24,7 @@
#include "chrome/browser/tab_contents/thumbnail_generator.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h"
#import "chrome/browser/ui/cocoa/browser_window_controller.h"
+#import "chrome/browser/ui/cocoa/infobars/infobar_container_controller.h"
#import "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h"
#import "chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
@@ -186,10 +187,17 @@ void ThumbnailLoader::LoadThumbnail() {
int topOffset = 0;
// Medium term, we want to show thumbs of the actual info bar views, which
- // means I need to create InfoBarControllers here. At that point, we can get
- // the height from that controller. Until then, hardcode. :-/
- const int kInfoBarHeight = 31;
- topOffset += contents_->infobar_count() * kInfoBarHeight;
+ // means I need to create InfoBarControllers here.
+ NSWindow* window = [contents_->GetNativeView() window];
+ NSWindowController* windowController = [window windowController];
+ DCHECK(windowController);
+ if ([windowController isKindOfClass:[BrowserWindowController class]]) {
+ BrowserWindowController* bwc =
+ static_cast<BrowserWindowController*>(windowController);
+ InfoBarContainerController* infoBarContainer =
+ [bwc infoBarContainerController];
+ topOffset += NSHeight([[infoBarContainer view] frame]);
+ }
bool always_show_bookmark_bar =
contents_->profile()->GetPrefs()->GetBoolean(prefs::kShowBookmarkBar);