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

Unified Diff: chrome/browser/ui/panels/panel_manager.h

Issue 7646003: Support auto-hide taskbar for panels on Windows. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 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/ui/panels/panel_manager.h
===================================================================
--- chrome/browser/ui/panels/panel_manager.h (revision 97392)
+++ chrome/browser/ui/panels/panel_manager.h (working copy)
@@ -8,7 +8,10 @@
#include <vector>
#include "base/basictypes.h"
+#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
+#include "base/task.h"
+#include "chrome/browser/ui/panels/auto_hide_bottom_bar.h"
#include "chrome/browser/ui/panels/panel.h"
#include "ui/gfx/rect.h"
@@ -16,7 +19,8 @@
class Panel;
// This class manages a set of panels.
-class PanelManager {
+class PanelManager : public AutoHideBottomBar::Observer,
+ public base::RefCountedThreadSafe<PanelManager> {
public:
// Returns a single instance.
static PanelManager* GetInstance();
@@ -39,22 +43,43 @@
void EndDragging(bool cancelled);
// Should we bring up the titlebar, given the current mouse point?
- bool ShouldBringUpTitlebarForAllMinimizedPanels(int mouse_x,
- int mouse_y) const;
+ bool ShouldBringUpTitlebars(int mouse_x, int mouse_y) const;
- // Brings up or down the title-bar for all minimized panels.
- void BringUpOrDownTitlebarForAllMinimizedPanels(bool bring_up);
+ // Brings up or down the titlebars for all minimized panels.
+ void BringUpOrDownTitlebars(bool bring_up);
+ // Returns the bottom position for the panel per its expansion state. If auto-
+ // hide bottom bar is present, we want to move the minimized panel to the
+ // bottom of the screen, not the bottom of the work area.
+ int GetBottomPositionForExpansionState(
+ Panel::ExpansionState expansion_state) const;
+
int num_panels() const { return panels_.size(); }
bool is_dragging_panel() const;
private:
- friend class PanelBrowserTest;
+ friend class BasePanelBrowserTest;
+ enum DelayedTitlebarAction {
+ NO_ACTION,
+ BRING_UP,
+ BRING_DOWN
+ };
+
typedef std::vector<Panel*> Panels;
+ // For testing only.
+ static void CreateForTesting(const gfx::Rect& work_area,
+ AutoHideBottomBar* auto_hide_bottom_bar);
+
PanelManager();
+ void Init();
+ // Overridden from AutoHideBottomBar::Observer:
+ virtual void OnAutoHideBottomBarVisibilityChanged(
+ AutoHideBottomBar::Visibility visibility) OVERRIDE;
+ virtual void OnAutoHideBottomBarHeightChanged(int height) OVERRIDE;
+
// Applies the new work area. This is called by OnDisplayChanged and the test
// code.
void SetWorkArea(const gfx::Rect& work_area);
@@ -84,6 +109,9 @@
void DragLeft();
void DragRight();
+ void DelayedBringUpOrDownTitlebarsCheck();
+ void DoBringUpOrDownTitlebars(bool bring_up);
+
Panels panels_;
// Stores the panels that are pending to remove. We want to delay the removal
@@ -91,14 +119,16 @@
Panels panels_pending_to_remove_;
// Current work area used in computing the panel bounds.
+ // If the always-on-top bottom bar, like Windows taskbar or MacOSX dock, is
+ // always visible, it should not be included in the work area. Otherwise, the
+ // work area includes the potential area that would be taken by the bottom
+ // bar when it becomes visible.
gfx::Rect work_area_;
// Used in computing the bounds of the next panel.
int max_width_;
int max_height_;
- int min_x_;
int current_x_;
- int bottom_edge_y_;
// Panel to drag.
size_t dragging_panel_index_;
@@ -112,6 +142,12 @@
// to when the dragging ends.
gfx::Rect dragging_panel_bounds_;
+ scoped_refptr<AutoHideBottomBar> auto_hide_bottom_bar_;
+
+ DelayedTitlebarAction delayed_titlebar_action_;
+
+ ScopedRunnableMethodFactory<PanelManager> method_factory_;
+
DISALLOW_COPY_AND_ASSIGN(PanelManager);
};

Powered by Google App Engine
This is Rietveld 408576698