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

Side by Side Diff: chrome/browser/ui/panels/panel_manager.h

Issue 7537030: Make panel adjust bounds per preferred size change notification on Windows. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 3 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ 5 #ifndef CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_
6 #define CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ 6 #define CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <vector> 9 #include <vector>
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 27 matching lines...) Expand all
38 Panel* CreatePanel(Browser* browser); 38 Panel* CreatePanel(Browser* browser);
39 39
40 void Remove(Panel* panel); 40 void Remove(Panel* panel);
41 void RemoveAll(); 41 void RemoveAll();
42 42
43 // Drags the given panel. 43 // Drags the given panel.
44 void StartDragging(Panel* panel); 44 void StartDragging(Panel* panel);
45 void Drag(int delta_x); 45 void Drag(int delta_x);
46 void EndDragging(bool cancelled); 46 void EndDragging(bool cancelled);
47 47
48 // Invoked when the preferred window size of the given panel might need to
49 // get changed.
50 void OnPreferredWindowSizeChanged(
51 Panel* panel, const gfx::Size& preferred_window_size);
52
48 // Returns true if we should bring up the titlebars, given the current mouse 53 // Returns true if we should bring up the titlebars, given the current mouse
49 // point. 54 // point.
50 bool ShouldBringUpTitlebars(int mouse_x, int mouse_y) const; 55 bool ShouldBringUpTitlebars(int mouse_x, int mouse_y) const;
51 56
52 // Brings up or down the titlebars for all minimized panels. 57 // Brings up or down the titlebars for all minimized panels.
53 void BringUpOrDownTitlebars(bool bring_up); 58 void BringUpOrDownTitlebars(bool bring_up);
54 59
55 // Returns the bottom position for the panel per its expansion state. If auto- 60 // Returns the bottom position for the panel per its expansion state. If auto-
56 // hide bottom bar is present, we want to move the minimized panel to the 61 // hide bottom bar is present, we want to move the minimized panel to the
57 // bottom of the screen, not the bottom of the work area. 62 // bottom of the screen, not the bottom of the work area.
58 int GetBottomPositionForExpansionState( 63 int GetBottomPositionForExpansionState(
59 Panel::ExpansionState expansion_state) const; 64 Panel::ExpansionState expansion_state) const;
60 65
61 int num_panels() const { return panels_.size(); } 66 int num_panels() const { return panels_.size(); }
62 bool is_dragging_panel() const; 67 bool is_dragging_panel() const;
63 68
64 #ifdef UNIT_TEST 69 #ifdef UNIT_TEST
65 const Panels& panels() const { return panels_; } 70 const Panels& panels() const { return panels_; }
66 static int horizontal_spacing() { return kPanelsHorizontalSpacing; } 71 static int horizontal_spacing() { return kPanelsHorizontalSpacing; }
67 72
68 const gfx::Rect& work_area() const { 73 const gfx::Rect& work_area() const {
69 return work_area_; 74 return work_area_;
70 } 75 }
71 76
72 void set_auto_hiding_desktop_bar( 77 void set_auto_hiding_desktop_bar(
73 AutoHidingDesktopBar* auto_hiding_desktop_bar) { 78 AutoHidingDesktopBar* auto_hiding_desktop_bar) {
74 auto_hiding_desktop_bar_ = auto_hiding_desktop_bar; 79 auto_hiding_desktop_bar_ = auto_hiding_desktop_bar;
75 } 80 }
76 81
82 void enable_auto_sizing(bool enabled) {
83 auto_sizing_enabled_ = enabled;
84 }
85
77 void SetWorkAreaForTesting(const gfx::Rect& work_area) { 86 void SetWorkAreaForTesting(const gfx::Rect& work_area) {
78 SetWorkArea(work_area); 87 SetWorkArea(work_area);
79 } 88 }
80 #endif 89 #endif
81 90
82 private: 91 private:
83 enum TitlebarAction { 92 enum TitlebarAction {
84 NO_ACTION, 93 NO_ACTION,
85 BRING_UP, 94 BRING_UP,
86 BRING_DOWN 95 BRING_DOWN
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 void DragRight(); 130 void DragRight();
122 131
123 // Checks if the titlebars have been brought up or down. If not, do not wait 132 // Checks if the titlebars have been brought up or down. If not, do not wait
124 // for the notifications to trigger it any more, and start to bring them up or 133 // for the notifications to trigger it any more, and start to bring them up or
125 // down immediately. 134 // down immediately.
126 void DelayedBringUpOrDownTitlebarsCheck(); 135 void DelayedBringUpOrDownTitlebarsCheck();
127 136
128 // Does the real job of bringing up or down the titlebars. 137 // Does the real job of bringing up or down the titlebars.
129 void DoBringUpOrDownTitlebars(bool bring_up); 138 void DoBringUpOrDownTitlebars(bool bring_up);
130 139
140 int GetMaxPanelWidth() const;
141 int GetMaxPanelHeight() const;
131 int GetRightMostAvaialblePosition() const; 142 int GetRightMostAvaialblePosition() const;
132 143
144 // Updates the maximum size of each panel as the result of adding, removing,
145 // or sizing panels.
146 void UpdateMaxSizeForAllPanels();
147
133 Panels panels_; 148 Panels panels_;
134 149
135 // Stores the panels that are pending to remove. We want to delay the removal 150 // Stores the panels that are pending to remove. We want to delay the removal
136 // when we're in the process of the dragging. 151 // when we're in the process of the dragging.
137 Panels panels_pending_to_remove_; 152 Panels panels_pending_to_remove_;
138 153
139 // The maximum work area avaialble. This area does not include the area taken 154 // The maximum work area avaialble. This area does not include the area taken
140 // by the always-visible (non-auto-hiding) desktop bars. 155 // by the always-visible (non-auto-hiding) desktop bars.
141 gfx::Rect work_area_; 156 gfx::Rect work_area_;
142 157
(...skipping 14 matching lines...) Expand all
157 // the dragging happens. Then it is updated to the position that will be set 172 // the dragging happens. Then it is updated to the position that will be set
158 // to when the dragging ends. 173 // to when the dragging ends.
159 gfx::Rect dragging_panel_bounds_; 174 gfx::Rect dragging_panel_bounds_;
160 175
161 scoped_refptr<AutoHidingDesktopBar> auto_hiding_desktop_bar_; 176 scoped_refptr<AutoHidingDesktopBar> auto_hiding_desktop_bar_;
162 177
163 TitlebarAction delayed_titlebar_action_; 178 TitlebarAction delayed_titlebar_action_;
164 179
165 ScopedRunnableMethodFactory<PanelManager> method_factory_; 180 ScopedRunnableMethodFactory<PanelManager> method_factory_;
166 181
182 // Whether or not bounds will be updated when the preferred content size is
183 // changed. The testing code could set this flag to false so that other tests
184 // will not be affected.
185 bool auto_sizing_enabled_;
186
167 static const int kPanelsHorizontalSpacing = 4; 187 static const int kPanelsHorizontalSpacing = 4;
168 188
169 DISALLOW_COPY_AND_ASSIGN(PanelManager); 189 DISALLOW_COPY_AND_ASSIGN(PanelManager);
170 }; 190 };
171 191
172 #endif // CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ 192 #endif // CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/panels/panel_browser_window_gtk.cc ('k') | chrome/browser/ui/panels/panel_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698