| Index: chrome/browser/views/tabs/tab_overview_message_listener.cc
|
| ===================================================================
|
| --- chrome/browser/views/tabs/tab_overview_message_listener.cc (revision 19730)
|
| +++ chrome/browser/views/tabs/tab_overview_message_listener.cc (working copy)
|
| @@ -62,14 +62,43 @@
|
| case TabOverviewTypes::Message::CHROME_NOTIFY_LAYOUT_MODE: {
|
| if (message.param(0) == 0) {
|
| new_browser_window_.reset(NULL);
|
| + controller_.reset(NULL);
|
| } else if (BrowserList::size() > 0) {
|
| Browser* browser = *BrowserList::begin();
|
| + controller_.reset(new TabOverviewController(
|
| + browser->window()->GetNormalBounds().origin()));
|
| new_browser_window_.reset(
|
| new NewBrowserWindowWidget(browser->profile()));
|
| }
|
| break;
|
| }
|
|
|
| + case TabOverviewTypes::Message::CHROME_NOTIFY_FLOATING_TAB_OVER_TOPLEVEL: {
|
| + if (!controller_.get())
|
| + return;
|
| +
|
| + bool over_mini_window = message.param(1) == 1;
|
| + controller_->SetMouseOverMiniWindow(over_mini_window);
|
| + if (!over_mini_window)
|
| + return;
|
| +
|
| + // Not over a mini-window, make sure the controller is showing the
|
| + // contents of the browser the mouse is over.
|
| + BrowserWindowGtk* browser_window =
|
| + BrowserWindowGtk::GetBrowserWindowForNativeWindow(
|
| + BrowserWindowGtk::GetBrowserWindowForXID(message.param(0)));
|
| + if (!browser_window)
|
| + return;
|
| +
|
| + if (controller_->browser()->window() == browser_window)
|
| + return;
|
| +
|
| + TabOverviewTypes::Message select_message;
|
| + select_message.set_type(TabOverviewTypes::Message::WM_MOVE_FLOATING_TAB);
|
| + select_message.set_param(0, message.param(1));
|
| + TabOverviewTypes::instance()->SendMessage(select_message);
|
| + }
|
| +
|
| default:
|
| break;
|
| }
|
| @@ -86,5 +115,5 @@
|
| }
|
|
|
| void TabOverviewMessageListener::HideOverview() {
|
| - controller_.reset(NULL);
|
| + controller_->SetBrowser(NULL, -1);
|
| }
|
|
|