diff options
author | hbono@chromium.org <hbono@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-10 06:23:35 +0000 |
---|---|---|
committer | hbono@chromium.org <hbono@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-10 06:23:35 +0000 |
commit | da2566e16fff66dd911994e17d649e478a7beea1 (patch) | |
tree | dcc1cc71232331e2d8c4dbe2173da7bc9119a496 /chrome/browser/views/frame | |
parent | f988638e6ea5a3f16e289be9ac7ffd853f7a13e4 (diff) | |
download | chromium_src-da2566e16fff66dd911994e17d649e478a7beea1.zip chromium_src-da2566e16fff66dd911994e17d649e478a7beea1.tar.gz chromium_src-da2566e16fff66dd911994e17d649e478a7beea1.tar.bz2 |
Implements AeroPeek of Windows 7.
This change integrates the custom AeroPeek implementation into Chromium, which shows the thumbnail list of all tabs and the preview image of the tab selected from the thumbnail list. It uses the AeroPeekManager object, which is a proxy between TabStripModel and Windows to translate events from TabStripModel for Windows, and vice versa. To listen events from TabStripModel without changing the existing part of Chromium, this AeroPeekManager class implements the TabStripModelObserver interface.
Even though this change doesn't include any automated tests for AeroPeek, I would like to send its automated UI test as a separate change. Nevertheless, it just creates/deletes a tab and see this AeroPeekManager can create its thumbnail window correctly.
BUG=6337
TEST=base_unittests.exe --gtest_filter=ScopedNativeLibrary.Basic
Review URL: http://codereview.chromium.org/303033
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41133 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/frame')
-rw-r--r-- | chrome/browser/views/frame/browser_view.cc | 24 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view.h | 4 |
2 files changed, 28 insertions, 0 deletions
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc index 5ceb0a8..87264f4 100644 --- a/chrome/browser/views/frame/browser_view.cc +++ b/chrome/browser/views/frame/browser_view.cc @@ -81,6 +81,7 @@ #if defined(OS_WIN) #include "app/win_util.h" +#include "chrome/browser/aeropeek_manager.h" #include "chrome/browser/jumplist.h" #elif defined(OS_LINUX) #include "chrome/browser/views/accelerator_table_gtk.h" @@ -426,6 +427,10 @@ BrowserView::~BrowserView() { browser_->tabstrip_model()->RemoveObserver(this); #if defined(OS_WIN) + // Remove this observer. + if (aeropeek_manager_.get()) + browser_->tabstrip_model()->RemoveObserver(aeropeek_manager_.get()); + // Stop hung plugin monitoring. ticker_.Stop(); ticker_.UnregisterTickHandler(&hung_window_detector_); @@ -1576,6 +1581,18 @@ void BrowserView::Layout() { if (GetLayoutManager()) { GetLayoutManager()->Layout(this); SchedulePaint(); +#if defined(OS_WIN) + // Send the margins of the "user-perceived content area" of this + // browser window so AeroPeekManager can render a background-tab image in + // the area. + if (aeropeek_manager_.get()) { + gfx::Insets insets(GetFindBarBoundingBox().y() + 1, + GetTabStripBounds().x(), + GetTabStripBounds().x(), + GetTabStripBounds().x()); + aeropeek_manager_->SetContentInsets(insets); + } +#endif } } @@ -1704,6 +1721,13 @@ void BrowserView::Init() { jumplist_.reset(new JumpList); jumplist_->AddObserver(browser_->profile()); } + + if (AeroPeekManager::Enabled()) { + gfx::Rect bounds(frame_->GetBoundsForTabStrip(tabstrip())); + aeropeek_manager_.reset(new AeroPeekManager( + frame_->GetWindow()->GetNativeWindow())); + browser_->tabstrip_model()->AddObserver(aeropeek_manager_.get()); + } #endif browser_extender_.reset(new BrowserExtender()); diff --git a/chrome/browser/views/frame/browser_view.h b/chrome/browser/views/frame/browser_view.h index 6498f31..1cdca86a 100644 --- a/chrome/browser/views/frame/browser_view.h +++ b/chrome/browser/views/frame/browser_view.h @@ -47,6 +47,7 @@ class FullscreenExitBubble; class HtmlDialogUIDelegate; class InfoBarContainer; #if defined(OS_WIN) +class AeroPeekManager; class JumpList; #endif class LocationBarView; @@ -554,6 +555,9 @@ class BrowserView : public BrowserBubbleHost, // The custom JumpList for Windows 7. scoped_ptr<JumpList> jumplist_; + + // The custom AeroPeek manager for Windows 7. + scoped_ptr<AeroPeekManager> aeropeek_manager_; #endif // The timer used to update frames for the Loading Animation. |