| Index: chrome/browser/cocoa/tab_strip_controller.mm
|
| diff --git a/chrome/browser/cocoa/tab_strip_controller.mm b/chrome/browser/cocoa/tab_strip_controller.mm
|
| index 31a38efbac126bf7a5e86cd046d61022615823ef..e4cb6a4d71e85b3a9339557c0ef54e5e3ec589d2 100644
|
| --- a/chrome/browser/cocoa/tab_strip_controller.mm
|
| +++ b/chrome/browser/cocoa/tab_strip_controller.mm
|
| @@ -28,6 +28,7 @@
|
| #import "chrome/browser/cocoa/tab_strip_model_observer_bridge.h"
|
| #import "chrome/browser/cocoa/tab_view.h"
|
| #import "chrome/browser/cocoa/throbber_view.h"
|
| +#include "chrome/browser/debugger/devtools_window.h"
|
| #include "chrome/browser/net/url_fixer_upper.h"
|
| #include "chrome/browser/tab_contents/navigation_controller.h"
|
| #include "chrome/browser/tab_contents/navigation_entry.h"
|
| @@ -461,10 +462,15 @@ private:
|
| }
|
|
|
| // Given an index into the tab model, returns the index into the tab controller
|
| -// array accounting for tabs that are currently closing. For example, if there
|
| -// are two tabs in the process of closing before |index|, this returns
|
| -// |index| + 2. If there are no closing tabs, this will return |index|.
|
| +// or tab contents controller array accounting for tabs that are currently
|
| +// closing. For example, if there are two tabs in the process of closing before
|
| +// |index|, this returns |index| + 2. If there are no closing tabs, this will
|
| +// return |index|.
|
| - (NSInteger)indexFromModelIndex:(NSInteger)index {
|
| + DCHECK(index >= 0);
|
| + if (index < 0)
|
| + return index;
|
| +
|
| NSInteger i = 0;
|
| for (TabController* controller in tabArray_.get()) {
|
| if ([closingControllers_ containsObject:controller]) {
|
| @@ -937,6 +943,7 @@ private:
|
|
|
| // Swap in the contents for the new tab.
|
| [self swapInTabAtIndex:modelIndex];
|
| + [self updateDevToolsForContents:newContents];
|
|
|
| if (newContents) {
|
| newContents->DidBecomeSelected();
|
| @@ -1036,6 +1043,9 @@ private:
|
| [self removeTab:tab];
|
| }
|
|
|
| + // Does nothing, purely for consistency with the windows/linux code.
|
| + [self updateDevToolsForContents:NULL];
|
| +
|
| // Send a broadcast that the number of tabs have changed.
|
| [[NSNotificationCenter defaultCenter]
|
| postNotificationName:kTabStripNumberOfTabsChanged
|
| @@ -1606,6 +1616,17 @@ private:
|
| return sheetController_.get();
|
| }
|
|
|
| +- (TabContentsController*)activeTabContentsController {
|
| + int modelIndex = tabStripModel_->selected_index();
|
| + if (modelIndex < 0)
|
| + return nil;
|
| + NSInteger index = [self indexFromModelIndex:modelIndex];
|
| + if (index < 0 ||
|
| + index >= (NSInteger)[tabContentsArray_ count])
|
| + return nil;
|
| + return [tabContentsArray_ objectAtIndex:index];
|
| +}
|
| +
|
| - (void)gtm_systemRequestsVisibilityForView:(NSView*)view {
|
| // This implementation is required by GTMWindowSheetController.
|
|
|
| @@ -1626,7 +1647,7 @@ private:
|
| // View hierarchy of the contents view:
|
| // NSView -- switchView, same for all tabs
|
| // +- NSView -- TabContentsController's view
|
| - // +- NSBox
|
| + // +- NSSplitView
|
| // +- TabContentsViewCocoa
|
| // We use the TabContentsController's view in |swapInTabAtIndex|, so we have
|
| // to pass it to the sheet controller here.
|
| @@ -1700,4 +1721,24 @@ private:
|
| }
|
| }
|
|
|
| +- (void)updateDevToolsForContents:(TabContents*)contents {
|
| + int modelIndex = tabStripModel_->GetIndexOfTabContents(contents);
|
| +
|
| + // This happens e.g. if one hits cmd-q with a docked devtools window open.
|
| + if (modelIndex == TabStripModel::kNoTab)
|
| + return;
|
| +
|
| + NSInteger index = [self indexFromModelIndex:modelIndex];
|
| + DCHECK_GE(index, 0);
|
| + DCHECK_LT(index, (NSInteger)[tabContentsArray_ count]);
|
| + if (index < 0 || index >= (NSInteger)[tabContentsArray_ count])
|
| + return;
|
| +
|
| + TabContentsController* tabController =
|
| + [tabContentsArray_ objectAtIndex:index];
|
| + TabContents* devtoolsContents = contents ?
|
| + DevToolsWindow::GetDevToolsContents(contents) : NULL;
|
| + [tabController showDevToolsContents:devtoolsContents];
|
| +}
|
| +
|
| @end
|
|
|