diff options
author | zelidrag@google.com <zelidrag@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-04 07:59:00 +0000 |
---|---|---|
committer | zelidrag@google.com <zelidrag@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-04 07:59:00 +0000 |
commit | b5f94dea90a5c108a4c91876e53afaff34aef15b (patch) | |
tree | 05a843db3bbd79b09c6351ef898c9c4757fa50a3 /chrome/browser | |
parent | 192a0cb4bf1790445726a09bb51dd386aca64467 (diff) | |
download | chromium_src-b5f94dea90a5c108a4c91876e53afaff34aef15b.zip chromium_src-b5f94dea90a5c108a4c91876e53afaff34aef15b.tar.gz chromium_src-b5f94dea90a5c108a4c91876e53afaff34aef15b.tar.bz2 |
Downward drag after mouse-down is now causing bookmark bar folders to open, rather than drag. The bar folder can still be dragged in any other direction.
Please note that this change is already reviews in http://codereview.chromium.org/463001, hence TBR field here. I needed to move to a different client to check it in.
BUG=9016
TEST=Open bookmark bar. Select folder button and try to drag it down. Observe that now if dragged straight downward, the folder button will open its menu.
TBR=sky
Review URL: http://codereview.chromium.org/467017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33805 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/views/bookmark_bar_view.cc | 25 | ||||
-rw-r--r-- | chrome/browser/views/bookmark_bar_view.h | 6 | ||||
-rw-r--r-- | chrome/browser/views/toolbar_view.h | 7 |
3 files changed, 38 insertions, 0 deletions
diff --git a/chrome/browser/views/bookmark_bar_view.cc b/chrome/browser/views/bookmark_bar_view.cc index 5237069..59c85c2 100644 --- a/chrome/browser/views/bookmark_bar_view.cc +++ b/chrome/browser/views/bookmark_bar_view.cc @@ -1116,6 +1116,31 @@ void BookmarkBarView::WriteDragData(const BookmarkNode* node, drag_data.Write(profile_, data); } +bool BookmarkBarView::CanStartDrag(views::View* sender, + int press_x, + int press_y, + int x, + int y) { + // Check if we have not moved enough horizontally but we have moved downward + // vertically - downward drag. + if (!View::ExceededDragThreshold(press_x - x, 0) && press_y < y) { + for (int i = 0; i < GetBookmarkButtonCount(); ++i) { + if (sender == GetBookmarkButton(i)) { + const BookmarkNode* node = model_->GetBookmarkBarNode()->GetChild(i); + // If the folder button was dragged, show the menu instead. + if (node && node->is_folder()) { + views::MenuButton* menu_button = + static_cast<views::MenuButton*>(sender); + menu_button->Activate(); + return false; + } + break; + } + } + } + return true; +} + int BookmarkBarView::GetDragOperations(View* sender, int x, int y) { if (size_animation_->IsAnimating() || (size_animation_->GetCurrentValue() == 0 && !OnNewTabPage())) { diff --git a/chrome/browser/views/bookmark_bar_view.h b/chrome/browser/views/bookmark_bar_view.h index bb3d975..ad6cc76 100644 --- a/chrome/browser/views/bookmark_bar_view.h +++ b/chrome/browser/views/bookmark_bar_view.h @@ -334,6 +334,12 @@ class BookmarkBarView : public DetachableToolbarView, int press_y, OSExchangeData* data); + virtual bool CanStartDrag(views::View* sender, + int press_x, + int press_y, + int x, + int y); + // Writes a BookmarkDragData for node to data. void WriteDragData(const BookmarkNode* node, OSExchangeData* data); diff --git a/chrome/browser/views/toolbar_view.h b/chrome/browser/views/toolbar_view.h index cfca8b4..eb7347d 100644 --- a/chrome/browser/views/toolbar_view.h +++ b/chrome/browser/views/toolbar_view.h @@ -151,6 +151,13 @@ class ToolbarView : public AccessibleToolbarView, int press_y, OSExchangeData* data); virtual int GetDragOperations(View* sender, int x, int y); + virtual bool CanStartDrag(View* sender, + int press_x, + int press_y, + int x, + int y) { + return true; + } // Returns the number of pixels above the location bar in non-normal display. int PopupTopSpacing() const; |