| Index: chrome/browser/cocoa/tab_strip_controller.mm
|
| ===================================================================
|
| --- chrome/browser/cocoa/tab_strip_controller.mm (revision 36364)
|
| +++ chrome/browser/cocoa/tab_strip_controller.mm (working copy)
|
| @@ -417,13 +417,11 @@
|
| DCHECK(newTab);
|
| if (newTab) {
|
| TabContents::ConstrainedWindowList::iterator it, end;
|
| - it = newTab->constrained_window_begin();
|
| end = newTab->constrained_window_end();
|
| + NSWindowController* controller = [[newView window] windowController];
|
| + DCHECK([controller isKindOfClass:[BrowserWindowController class]]);
|
|
|
| - // GTMWindowSheetController supports only one sheet at a time.
|
| - if (it != end) {
|
| - NSWindowController* controller = [[newView window] windowController];
|
| - DCHECK([controller isKindOfClass:[BrowserWindowController class]]);
|
| + for (it = newTab->constrained_window_begin(); it != end; ++it) {
|
| ConstrainedWindow* constrainedWindow = *it;
|
| static_cast<ConstrainedWindowMac*>(constrainedWindow)->Realize(
|
| static_cast<BrowserWindowController*>(controller));
|
| @@ -1637,7 +1635,7 @@
|
| if (modelIndex < 0)
|
| return nil;
|
| NSInteger index = [self indexFromModelIndex:modelIndex];
|
| - if (index < 0 ||
|
| + if (index < 0 ||
|
| index >= (NSInteger)[tabContentsArray_ count])
|
| return nil;
|
| return [tabContentsArray_ objectAtIndex:index];
|
| @@ -1656,7 +1654,7 @@
|
| tabStripModel_->SelectTabContentsAt(index, false /* not a user gesture */);
|
| }
|
|
|
| -- (BOOL)attachConstrainedWindow:(ConstrainedWindowMac*)window {
|
| +- (void)attachConstrainedWindow:(ConstrainedWindowMac*)window {
|
| // TODO(thakis, avi): Figure out how to make this work when tabs are dragged
|
| // out or if fullscreen mode is toggled.
|
|
|
| @@ -1669,6 +1667,7 @@
|
| // to pass it to the sheet controller here.
|
| NSView* tabContentsView =
|
| [[window->owner()->GetNativeView() superview] superview];
|
| + window->delegate()->RunSheet([self sheetController], tabContentsView);
|
|
|
| // TODO(avi, thakis): GTMWindowSheetController has no api to move tabsheets
|
| // between windows. Until then, we have to prevent having to move a tabsheet
|
| @@ -1680,23 +1679,8 @@
|
| DCHECK(controller != nil);
|
| DCHECK(index >= 0);
|
| if (index >= 0) {
|
| - NSView* tab = [self viewAtIndex:index];
|
| - [controller setTab:tab isDraggable:NO];
|
| -
|
| - std::deque<ConstrainedWindowMac*>& windows = constrainedWindows_[tab];
|
| - std::deque<ConstrainedWindowMac*>::iterator it =
|
| - find(windows.begin(), windows.end(), window);
|
| - if (it == windows.end())
|
| - constrainedWindows_[tab].push_back(window);
|
| -
|
| - if (constrainedWindows_[tab].size() == 1) {
|
| - [controller setTab:tab isDraggable:NO];
|
| - window->SetVisible();
|
| - window->delegate()->RunSheet([self sheetController], tabContentsView);
|
| - return YES;
|
| - }
|
| + [controller setTab:[self viewAtIndex:index] isDraggable:NO];
|
| }
|
| - return NO;
|
| }
|
|
|
| - (void)removeConstrainedWindow:(ConstrainedWindowMac*)window {
|
| @@ -1712,28 +1696,7 @@
|
| (BrowserWindowController*)[[switchView_ window] windowController];
|
| DCHECK(index >= 0);
|
| if (index >= 0) {
|
| - NSView* tab = [self viewAtIndex:index];
|
| -
|
| - std::deque<ConstrainedWindowMac*>& windows = constrainedWindows_[tab];
|
| - std::deque<ConstrainedWindowMac*>::iterator it =
|
| - find(windows.begin(), windows.end(), window);
|
| - DCHECK(it != windows.end());
|
| -
|
| - bool removedVisibleSheet = it == windows.begin();
|
| -
|
| - if (it != windows.end())
|
| - windows.erase(it);
|
| -
|
| - if (windows.size() == 0) {
|
| - [controller setTab:tab isDraggable:YES];
|
| - constrainedWindows_.erase(tab);
|
| - } else if (removedVisibleSheet && tab == [self selectedTabView]) {
|
| - // Show next sheet
|
| - NSWindowController* controller = [[tab window] windowController];
|
| - DCHECK([controller isKindOfClass:[BrowserWindowController class]]);
|
| - windows.front()->Realize(
|
| - static_cast<BrowserWindowController*>(controller));
|
| - }
|
| + [controller setTab:[self viewAtIndex:index] isDraggable:YES];
|
| }
|
| }
|
|
|
|
|