diff options
author | levin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-13 23:47:14 +0000 |
---|---|---|
committer | levin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-13 23:47:14 +0000 |
commit | e05dc976d11208e13a180cfb149b3db4a65f9f1a (patch) | |
tree | 67ad0897a6fc1f01c2cd9564b2bf8ddbe06c33d0 /chrome/browser/views/bookmark_bar_view.cc | |
parent | 66d0a94a6f19afa8d3229672e694a881aca6e41a (diff) | |
download | chromium_src-e05dc976d11208e13a180cfb149b3db4a65f9f1a.zip chromium_src-e05dc976d11208e13a180cfb149b3db4a65f9f1a.tar.gz chromium_src-e05dc976d11208e13a180cfb149b3db4a65f9f1a.tar.bz2 |
Revert 31960 -- Bookmark tests seemed to fail after this went in.
TBR=tim@chromium.org
Review URL: http://codereview.chromium.org/395010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31965 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/bookmark_bar_view.cc')
-rw-r--r-- | chrome/browser/views/bookmark_bar_view.cc | 82 |
1 files changed, 35 insertions, 47 deletions
diff --git a/chrome/browser/views/bookmark_bar_view.cc b/chrome/browser/views/bookmark_bar_view.cc index 48b62c1..a8876de 100644 --- a/chrome/browser/views/bookmark_bar_view.cc +++ b/chrome/browser/views/bookmark_bar_view.cc @@ -248,23 +248,6 @@ class BookmarkFolderButton : public views::MenuButton { DISALLOW_COPY_AND_ASSIGN(BookmarkFolderButton); }; -// OverFlowButton (chevron) -------------------------------------------------- - -class OverFlowButton : public views::MenuButton { - public: - explicit OverFlowButton(BookmarkBarView* owner) - : MenuButton(NULL, std::wstring(), owner, false), owner_(owner) {} - - virtual bool OnMousePressed(const views::MouseEvent& e) { - owner_->StopThrobbing(true); - return views::MenuButton::OnMousePressed(e); - } - private: - BookmarkBarView* owner_; - - DISALLOW_COPY_AND_ASSIGN(OverFlowButton); -}; - } // namespace // DropInfo ------------------------------------------------------------------- @@ -926,7 +909,7 @@ MenuButton* BookmarkBarView::CreateOtherBookmarkedButton() { } MenuButton* BookmarkBarView::CreateOverflowButton() { - MenuButton* button = new OverFlowButton(this); + MenuButton* button = new MenuButton(NULL, std::wstring(), this, false); button->SetIcon(*ResourceBundle::GetSharedInstance(). GetBitmapNamed(IDR_BOOKMARK_BAR_CHEVRONS)); @@ -983,14 +966,18 @@ void BookmarkBarView::BookmarkNodeMoved(BookmarkModel* model, int old_index, const BookmarkNode* new_parent, int new_index) { + StopThrobbing(true); BookmarkNodeRemovedImpl(model, old_parent, old_index); BookmarkNodeAddedImpl(model, new_parent, new_index); + StartThrobbing(); } void BookmarkBarView::BookmarkNodeAdded(BookmarkModel* model, const BookmarkNode* parent, int index) { + StopThrobbing(true); BookmarkNodeAddedImpl(model, parent, index); + StartThrobbing(); } void BookmarkBarView::BookmarkNodeAddedImpl(BookmarkModel* model, @@ -1002,11 +989,7 @@ void BookmarkBarView::BookmarkNodeAddedImpl(BookmarkModel* model, return; } DCHECK(index >= 0 && index <= GetBookmarkButtonCount()); - const BookmarkNode* node = parent->GetChild(index); - if (!throbbing_view_ && sync_service_->SetupInProgress()) { - StartThrobbing(node, true); - } - AddChildView(index, CreateBookmarkButton(node)); + AddChildView(index, CreateBookmarkButton(parent->GetChild(index))); UpdateColors(); Layout(); SchedulePaint(); @@ -1016,7 +999,9 @@ void BookmarkBarView::BookmarkNodeRemoved(BookmarkModel* model, const BookmarkNode* parent, int old_index, const BookmarkNode* node) { + StopThrobbing(true); BookmarkNodeRemovedImpl(model, parent, old_index); + StartThrobbing(); } void BookmarkBarView::BookmarkNodeRemovedImpl(BookmarkModel* model, @@ -1296,17 +1281,15 @@ void BookmarkBarView::Observe(NotificationType type, } break; - case NotificationType::BOOKMARK_BUBBLE_SHOWN: { + case NotificationType::BOOKMARK_BUBBLE_SHOWN: StopThrobbing(true); - const BookmarkNode* node = - model_->GetMostRecentlyAddedNodeForURL(*(Details<GURL>(details).ptr())); - if (!node) - return; // Generally shouldn't happen. - StartThrobbing(node, false); + bubble_url_ = *(Details<GURL>(details).ptr()); + StartThrobbing(); break; - } + case NotificationType::BOOKMARK_BUBBLE_HIDDEN: StopThrobbing(false); + bubble_url_ = GURL(); break; default: @@ -1501,35 +1484,40 @@ int BookmarkBarView::GetFirstHiddenNodeIndex() { return bb_count; } -void BookmarkBarView::StartThrobbing(const BookmarkNode* node, - bool overflow_only) { +void BookmarkBarView::StartThrobbing() { DCHECK(!throbbing_view_); - // Determine which visible button is showing the bookmark (or is an ancestor - // of the bookmark). - const BookmarkNode* bbn = model_->GetBookmarkBarNode(); - const BookmarkNode* parent_on_bb = node; - while (parent_on_bb) { - const BookmarkNode* parent = parent_on_bb->GetParent(); - if (parent == bbn) - break; - parent_on_bb = parent; - } - if (parent_on_bb) { + if (bubble_url_.is_empty()) + return; // Bubble isn't showing; nothing to throb. + + if (!GetWidget()) + return; // We're not showing, don't do anything. + + const BookmarkNode* node = + model_->GetMostRecentlyAddedNodeForURL(bubble_url_); + if (!node) + return; // Generally shouldn't happen. + + // Determine which visible button is showing the url (or is an ancestor of + // the url). + if (node->HasAncestor(model_->GetBookmarkBarNode())) { + const BookmarkNode* bbn = model_->GetBookmarkBarNode(); + const BookmarkNode* parent_on_bb = node; + while (parent_on_bb->GetParent() != bbn) + parent_on_bb = parent_on_bb->GetParent(); int index = bbn->IndexOfChild(parent_on_bb); if (index >= GetFirstHiddenNodeIndex()) { // Node is hidden, animate the overflow button. throbbing_view_ = overflow_button_; - } else if (!overflow_only) { + } else { throbbing_view_ = static_cast<CustomButton*>(GetChildViewAt(index)); } - } else if (!overflow_only) { + } else { throbbing_view_ = other_bookmarked_button_; } // Use a large number so that the button continues to throb. - if (throbbing_view_) - throbbing_view_->StartThrobbing(std::numeric_limits<int>::max()); + throbbing_view_->StartThrobbing(std::numeric_limits<int>::max()); } void BookmarkBarView::StopThrobbing(bool immediate) { |