Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1519)

Unified Diff: chrome/browser/views/browser_actions_container.h

Issue 570014: Adding drag-drop support in and out of the Browser Action overflow menu.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/views/browser_actions_container.h
===================================================================
--- chrome/browser/views/browser_actions_container.h (revision 37978)
+++ chrome/browser/views/browser_actions_container.h (working copy)
@@ -5,12 +5,15 @@
#ifndef CHROME_BROWSER_VIEWS_BROWSER_ACTIONS_CONTAINER_H_
#define CHROME_BROWSER_VIEWS_BROWSER_ACTIONS_CONTAINER_H_
+#include <set>
+#include <string>
#include <vector>
#include "base/task.h"
#include "chrome/browser/extensions/extension_toolbar_model.h"
#include "chrome/browser/extensions/image_loading_tracker.h"
#include "chrome/browser/views/browser_bubble.h"
+#include "chrome/browser/views/extensions/browser_action_overflow_menu_controller.h"
#include "chrome/browser/views/extensions/extension_action_context_menu.h"
#include "chrome/common/notification_observer.h"
#include "chrome/common/notification_registrar.h"
@@ -225,7 +228,9 @@
public views::DragController,
public views::ResizeGripper::ResizeGripperDelegate,
public AnimationDelegate,
- public ExtensionToolbarModel::Observer {
+ public ExtensionToolbarModel::Observer,
+ public BrowserActionOverflowMenuController::Observer {
+ friend class ShowFolderMenuTask;
public:
BrowserActionsContainer(Profile* profile, ToolbarView* toolbar);
virtual ~BrowserActionsContainer();
@@ -241,6 +246,9 @@
// Returns the chevron, if any.
const views::View* chevron() const { return chevron_; }
+ // Returns the profile this container is associated with.
+ Profile* profile() const { return profile_; }
+
// Returns the current tab's ID, or -1 if there is no current tab.
int GetCurrentTabId() const;
@@ -264,6 +272,9 @@
// Called when a browser action becomes visible/hidden.
void OnBrowserActionVisibilityChanged();
+ // Returns how many browser actions are visible.
+ size_t VisibleBrowserActions() const;
+
// Called when the user clicks on the browser action icon.
void OnBrowserActionExecuted(BrowserActionButton* button);
@@ -317,6 +328,13 @@
virtual void AnimationProgressed(const Animation* animation);
virtual void AnimationEnded(const Animation* animation);
+ // Overridden from BrowserActionOverflowMenuController::Observer:
+ virtual void NotifyMenuDeleted(
+ BrowserActionOverflowMenuController* controller);
+
+ // Moves a browser action with |id| to |new_index|.
+ void MoveBrowserAction(const std::string& extension_id, size_t new_index);
+
// Hide the current popup.
void HidePopup();
@@ -336,6 +354,19 @@
// Closes the overflow menu if open.
void CloseOverflowMenu();
+ // Cancels the timer for showing the drop down menu.
+ void StopShowFolderDropMenuTimer();
+
+ // Show the drop down folder after a slight delay.
+ void StartShowFolderDropMenuTimer();
+
+ // Show the overflow menu.
+ void ShowDropFolder();
+
+ // Sets the drop indicator position (and schedules paint if the position has
+ // changed).
+ void SetDropIndicator(int x_pos);
sky 2010/02/04 20:58:49 x_pos is mildly confusing here as it isn't the x-c
+
// Takes a width in pixels, calculates how many icons fit within that space
// (up to the maximum number of icons in our vector) and shaves off the
// excess pixels. |allow_shrink_to_minimum| specifies whether this function
@@ -358,9 +389,6 @@
// all the padding that we normally show if there are icons.
int ContainerMinSize() const;
- // Returns how many browser actions are visible.
- size_t VisibleBrowserActions() const;
-
// The vector of browser actions (icons/image buttons for each action).
std::vector<BrowserActionView*> browser_action_views_;
@@ -390,8 +418,9 @@
// The chevron for accessing the overflow items.
views::MenuButton* chevron_;
- // The menu to show for the overflow button (chevron).
- scoped_ptr<BrowserActionOverflowMenuController> overflow_menu_;
+ // The menu to show for the overflow button (chevron). This class manages its
+ // own lifetime so that it can stay alive during drag and drop operations.
+ BrowserActionOverflowMenuController* overflow_menu_;
// The animation that happens when the container snaps to place.
scoped_ptr<SlideAnimation> resize_animation_;
@@ -413,6 +442,9 @@
ScopedRunnableMethodFactory<BrowserActionsContainer> task_factory_;
+ // Handles delayed showing of the overflow menu when hovering.
+ ScopedRunnableMethodFactory<BrowserActionsContainer> show_menu_task_factory_;
+
DISALLOW_COPY_AND_ASSIGN(BrowserActionsContainer);
};

Powered by Google App Engine
This is Rietveld 408576698