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

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

Issue 8375012: Change panel overflow to not close any open panels. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Commend updated. Created 9 years, 2 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
« no previous file with comments | « chrome/browser/ui/panels/panel_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/panels/panel_manager.cc
diff --git a/chrome/browser/ui/panels/panel_manager.cc b/chrome/browser/ui/panels/panel_manager.cc
index 0715ed7fa1cdcaaa0e9d11cfed8a6c4d5c219e6b..5bb2bc8d0dc8b9280c3408159ef4e5e4dda75585 100644
--- a/chrome/browser/ui/panels/panel_manager.cc
+++ b/chrome/browser/ui/panels/panel_manager.cc
@@ -80,26 +80,6 @@ void PanelManager::SetWorkArea(const gfx::Rect& work_area) {
Rearrange(panels_.begin(), adjusted_work_area_.right());
}
-void PanelManager::FindAndClosePanelOnOverflow(const Extension* extension) {
- Panel* panel_to_close = NULL;
-
- // Try to find the left-most panel invoked from the same extension and close
- // it.
- for (Panels::reverse_iterator iter = panels_.rbegin();
- iter != panels_.rend(); ++iter) {
- if (extension == (*iter)->GetExtension()) {
- panel_to_close = *iter;
- break;
- }
- }
-
- // If none is found, just pick the left-most panel.
- if (!panel_to_close)
- panel_to_close = panels_.back();
-
- panel_to_close->Close();
-}
-
Panel* PanelManager::CreatePanel(Browser* browser) {
// Adjust the width and height to fit into our constraint.
int width = browser->override_bounds().width();
@@ -123,25 +103,13 @@ Panel* PanelManager::CreatePanel(Browser* browser) {
else if (height > max_panel_height)
height = max_panel_height;
- // Compute the origin. Ensure that it falls within the adjusted work area by
- // closing other panels if needed.
int y = adjusted_work_area_.bottom() - height;
-
- const Extension* extension = NULL;
- int x;
- while ((x = GetRightMostAvailablePosition() - width) <
- adjusted_work_area_.x() ) {
- if (!extension)
- extension = Panel::GetExtensionFromBrowser(browser);
- FindAndClosePanelOnOverflow(extension);
- }
+ int x = GetRightMostAvailablePosition() - width;
// Now create the panel with the computed bounds.
Panel* panel = new Panel(browser, gfx::Rect(x, y, width, height));
+ panel->SetMaxSize(gfx::Size(max_panel_width, max_panel_height));
panels_.push_back(panel);
-
- UpdateMaxSizeForAllPanels();
-
return panel;
}
@@ -357,18 +325,12 @@ void PanelManager::OnPreferredWindowSizeChanged(
// The panel width:
// * cannot grow or shrink to go beyond [min_width, max_width]
- // * cannot grow to take more than the available space and go beyond the left
- // of the work area.
int new_width = preferred_window_size.width();
if (new_width > panel->max_size().width())
new_width = panel->max_size().width();
if (new_width < panel->min_size().width())
new_width = panel->min_size().width();
- int right_most_available_position = GetRightMostAvailablePosition();
- if (new_width - bounds.width() > right_most_available_position)
- new_width = bounds.width() + right_most_available_position;
-
if (new_width != bounds.width()) {
int delta = bounds.width() - new_width;
bounds.set_x(bounds.x() + delta);
@@ -409,8 +371,6 @@ void PanelManager::OnPreferredWindowSizeChanged(
}
panel->SetPanelBounds(bounds);
-
- UpdateMaxSizeForAllPanels();
}
bool PanelManager::ShouldBringUpTitlebars(int mouse_x, int mouse_y) const {
@@ -570,20 +530,16 @@ void PanelManager::OnAutoHidingDesktopBarVisibilityChanged(
void PanelManager::Rearrange(Panels::iterator iter_to_start,
int rightmost_position) {
- if (iter_to_start != panels_.end()) {
- for (Panels::iterator iter = iter_to_start; iter != panels_.end(); ++iter) {
- Panel* panel = *iter;
- gfx::Rect new_bounds(panel->GetBounds());
- new_bounds.set_x(rightmost_position - new_bounds.width());
- new_bounds.set_y(adjusted_work_area_.bottom() - new_bounds.height());
- if (new_bounds != panel->GetBounds())
- panel->SetPanelBounds(new_bounds);
-
- rightmost_position = new_bounds.x() - kPanelsHorizontalSpacing;
- }
- }
+ for (Panels::iterator iter = iter_to_start; iter != panels_.end(); ++iter) {
+ Panel* panel = *iter;
+ gfx::Rect new_bounds(panel->GetBounds());
+ new_bounds.set_x(rightmost_position - new_bounds.width());
+ new_bounds.set_y(adjusted_work_area_.bottom() - new_bounds.height());
+ if (new_bounds != panel->GetBounds())
+ panel->SetPanelBounds(new_bounds);
- UpdateMaxSizeForAllPanels();
+ rightmost_position = new_bounds.x() - kPanelsHorizontalSpacing;
+ }
}
void PanelManager::RemoveAll() {
@@ -603,19 +559,3 @@ bool PanelManager::is_dragging_panel() const {
return dragging_panel_index_ != kInvalidPanelIndex;
}
-void PanelManager::UpdateMaxSizeForAllPanels() {
- if (!auto_sizing_enabled_)
- return;
-
- for (Panels::const_iterator iter = panels_.begin();
- iter != panels_.end(); ++iter) {
- Panel* panel = *iter;
- // A panel can at most grow to take over all the available space that is
- // returned by GetRightMostAvailablePosition.
- int width_can_grow_to =
- panel->GetBounds().width() + GetRightMostAvailablePosition();
- panel->SetMaxSize(gfx::Size(
- std::min(width_can_grow_to, GetMaxPanelWidth()),
- GetMaxPanelHeight()));
- }
-}
« no previous file with comments | « chrome/browser/ui/panels/panel_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698