summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/bookmark_bar_view.cc
diff options
context:
space:
mode:
authorlevin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-13 23:47:14 +0000
committerlevin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-13 23:47:14 +0000
commite05dc976d11208e13a180cfb149b3db4a65f9f1a (patch)
tree67ad0897a6fc1f01c2cd9564b2bf8ddbe06c33d0 /chrome/browser/views/bookmark_bar_view.cc
parent66d0a94a6f19afa8d3229672e694a881aca6e41a (diff)
downloadchromium_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.cc82
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) {