summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/cocoa/browser_window_controller.mm4
-rw-r--r--chrome/browser/cocoa/tab_strip_controller.h9
-rw-r--r--chrome/browser/cocoa/tab_strip_controller.mm6
3 files changed, 19 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/browser_window_controller.mm b/chrome/browser/cocoa/browser_window_controller.mm
index 4818b52..ca668f2 100644
--- a/chrome/browser/cocoa/browser_window_controller.mm
+++ b/chrome/browser/cocoa/browser_window_controller.mm
@@ -1611,6 +1611,10 @@ willAnimateFromState:(bookmarks::VisualState)oldState
fullscreenController_.reset(nil);
}
+ // Destroy the tab strip's sheet controller. We will recreate it in the new
+ // window when needed.
+ [tabStripController_ destroySheetController];
+
// Retain the tab strip view while we remove it from its superview.
scoped_nsobject<NSView> tabStripView;
if ([self hasTabStrip]) {
diff --git a/chrome/browser/cocoa/tab_strip_controller.h b/chrome/browser/cocoa/tab_strip_controller.h
index 1bb6bed..b52f6c4 100644
--- a/chrome/browser/cocoa/tab_strip_controller.h
+++ b/chrome/browser/cocoa/tab_strip_controller.h
@@ -186,6 +186,15 @@ class ToolbarModel;
// for the per-tab sheets.
- (GTMWindowSheetController*)sheetController;
+// Destroys the window sheet controller of this window, if it exists. The sheet
+// controller can be recreated by a subsequent call to |-sheetController|. Must
+// not be called if any sheets are currently open.
+// TODO(viettrungluu): This is temporary code needed to allow sheets to work
+// (read: not crash) in fullscreen mode. Once GTMWindowSheetController is
+// modified to support moving sheets between windows, this code can go away.
+// http://crbug.com/19093.
+- (void)destroySheetController;
+
// Returns the currently active TabContentsController.
- (TabContentsController*)activeTabContentsController;
diff --git a/chrome/browser/cocoa/tab_strip_controller.mm b/chrome/browser/cocoa/tab_strip_controller.mm
index 0a6f7c3..3b0617c 100644
--- a/chrome/browser/cocoa/tab_strip_controller.mm
+++ b/chrome/browser/cocoa/tab_strip_controller.mm
@@ -1632,6 +1632,12 @@ private:
return sheetController_.get();
}
+- (void)destroySheetController {
+ // Make sure there are no open sheets.
+ DCHECK_EQ(0U, [[sheetController_ viewsWithAttachedSheets] count]);
+ sheetController_.reset();
+}
+
- (TabContentsController*)activeTabContentsController {
int modelIndex = tabStripModel_->selected_index();
if (modelIndex < 0)