diff options
author | dhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-18 03:22:50 +0000 |
---|---|---|
committer | dhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-18 03:22:50 +0000 |
commit | e4e15dca9f700cf5f0e9ff708622ff0cebe94100 (patch) | |
tree | 34c1e4ffc83ea2144a1b36477c8845ce7bb3b79b /chrome/browser/ui/gtk/browser_window_gtk.cc | |
parent | b35c81cc0bd12bc4182105b40f8e2702ab684ea8 (diff) | |
download | chromium_src-e4e15dca9f700cf5f0e9ff708622ff0cebe94100.zip chromium_src-e4e15dca9f700cf5f0e9ff708622ff0cebe94100.tar.gz chromium_src-e4e15dca9f700cf5f0e9ff708622ff0cebe94100.tar.bz2 |
Refactor Instant to separate out preview control
Separates out Show/Hide logic into a separate |InstantPreviewController|
class. This class follows an observer pattern, observing the |InstantModel|
changes. The model is held by the |InstantController|.
The goal with this is to pave the way for future changes that will expand the
complexity of the "view" logic, especially in the area of coordinating the
animations used with --enable-instant-extended-api features.
BUG=142785
TEST=No functional change. Refactoring only.
R=sreeram@chromium.org, jered@chromium.org, samarth@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11144004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@162633 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/gtk/browser_window_gtk.cc')
-rw-r--r-- | chrome/browser/ui/gtk/browser_window_gtk.cc | 64 |
1 files changed, 28 insertions, 36 deletions
diff --git a/chrome/browser/ui/gtk/browser_window_gtk.cc b/chrome/browser/ui/gtk/browser_window_gtk.cc index 4ac7cf0..24fe60b 100644 --- a/chrome/browser/ui/gtk/browser_window_gtk.cc +++ b/chrome/browser/ui/gtk/browser_window_gtk.cc @@ -65,6 +65,7 @@ #include "chrome/browser/ui/gtk/gtk_window_util.h" #include "chrome/browser/ui/gtk/infobars/infobar_container_gtk.h" #include "chrome/browser/ui/gtk/infobars/infobar_gtk.h" +#include "chrome/browser/ui/gtk/instant_preview_controller_gtk.h" #include "chrome/browser/ui/gtk/location_bar_view_gtk.h" #include "chrome/browser/ui/gtk/nine_box.h" #include "chrome/browser/ui/gtk/one_click_signin_bubble_gtk.h" @@ -1134,20 +1135,6 @@ void BrowserWindowGtk::Paste() { window_, chrome::GetActiveWebContents(browser_.get())); } -void BrowserWindowGtk::ShowInstant(TabContents* preview, - int height, - InstantSizeUnits units) { - // TODO(jered): Support height < 100%. - DCHECK(height == 100 && units == INSTANT_SIZE_PERCENT); - contents_container_->SetPreview(preview); - MaybeShowBookmarkBar(false); -} - -void BrowserWindowGtk::HideInstant() { - contents_container_->SetPreview(NULL); - MaybeShowBookmarkBar(false); -} - gfx::Rect BrowserWindowGtk::GetInstantBounds() { return ui::GetWidgetScreenBounds(contents_container_->widget()); } @@ -1326,28 +1313,6 @@ extensions::ActiveTabPermissionGranter* active_tab_permission_granter(); } -void BrowserWindowGtk::MaybeShowBookmarkBar(bool animate) { - TRACE_EVENT0("ui::gtk", "BrowserWindowGtk::MaybeShowBookmarkBar"); - if (!IsBookmarkBarSupported()) - return; - - TabContents* tab = GetDisplayedTab(); - - if (tab) - bookmark_bar_->SetPageNavigator(browser_.get()); - - BookmarkBar::State state = browser_->bookmark_bar_state(); - if (contents_container_->HasPreview() && state == BookmarkBar::DETACHED) - state = BookmarkBar::HIDDEN; - - toolbar_->UpdateForBookmarkBarVisibility(state == BookmarkBar::DETACHED); - PlaceBookmarkBar(state == BookmarkBar::DETACHED); - bookmark_bar_->SetBookmarkBarState( - state, - animate ? BookmarkBar::ANIMATE_STATE_CHANGE : - BookmarkBar::DONT_ANIMATE_STATE_CHANGE); -} - void BrowserWindowGtk::UpdateDevToolsForContents(WebContents* contents) { TRACE_EVENT0("ui::gtk", "BrowserWindowGtk::UpdateDevToolsForContents"); TabContents* old_devtools = devtools_container_->tab(); @@ -1822,6 +1787,11 @@ void BrowserWindowGtk::InitWidgets() { gtk_box_pack_end(GTK_BOX(window_vbox_), render_area_event_box_, TRUE, TRUE, 0); + instant_preview_controller_.reset( + new InstantPreviewControllerGtk(browser_.get(), + this, + contents_container_.get())); + if (IsBookmarkBarSupported()) { bookmark_bar_.reset(new BookmarkBarGtk(this, browser_.get(), @@ -2054,6 +2024,28 @@ int BrowserWindowGtk::GetXPositionOfLocationIcon(GtkWidget* relative_to) { return x; } +void BrowserWindowGtk::MaybeShowBookmarkBar(bool animate) { + TRACE_EVENT0("ui::gtk", "BrowserWindowGtk::MaybeShowBookmarkBar"); + if (!IsBookmarkBarSupported()) + return; + + TabContents* tab = GetDisplayedTab(); + + if (tab) + bookmark_bar_->SetPageNavigator(browser_.get()); + + BookmarkBar::State state = browser_->bookmark_bar_state(); + if (contents_container_->HasPreview() && state == BookmarkBar::DETACHED) + state = BookmarkBar::HIDDEN; + + toolbar_->UpdateForBookmarkBarVisibility(state == BookmarkBar::DETACHED); + PlaceBookmarkBar(state == BookmarkBar::DETACHED); + bookmark_bar_->SetBookmarkBarState( + state, + animate ? BookmarkBar::ANIMATE_STATE_CHANGE : + BookmarkBar::DONT_ANIMATE_STATE_CHANGE); +} + void BrowserWindowGtk::OnLocationIconSizeAllocate(GtkWidget* sender, GtkAllocation* allocation) { // The position of the arrow may have changed, so we'll have to redraw it. |