Index: chrome/browser/ui/panels/panel.cc |
diff --git a/chrome/browser/ui/panels/panel.cc b/chrome/browser/ui/panels/panel.cc |
index b9c271fc5e237b2b6c051caffdfb06d535c1f4b9..28340fcc10c87f4aa6faed46bff312d85d92afc5 100644 |
--- a/chrome/browser/ui/panels/panel.cc |
+++ b/chrome/browser/ui/panels/panel.cc |
@@ -12,6 +12,8 @@ |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/panels/native_panel.h" |
#include "chrome/browser/ui/panels/panel_manager.h" |
+#include "chrome/browser/ui/panels/panel_overflow_strip.h" |
jennb
2011/12/02 19:15:00
Don't need this.
jianli
2011/12/02 23:23:46
It is needed now after I added Panel::MoveOutOfOve
|
+#include "chrome/browser/ui/panels/panel_strip.h" |
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
#include "chrome/browser/ui/window_sizer.h" |
#include "chrome/browser/web_applications/web_app.h" |
@@ -123,34 +125,10 @@ void Panel::SetSizeRange(const gfx::Size& min_size, const gfx::Size& max_size) { |
void Panel::SetExpansionState(ExpansionState new_state) { |
if (expansion_state_ == new_state) |
return; |
- |
ExpansionState old_state = expansion_state_; |
expansion_state_ = new_state; |
- int height; |
- switch (expansion_state_) { |
- case EXPANDED: |
- height = restored_size_.height(); |
- break; |
- case TITLE_ONLY: |
- height = native_panel_->TitleOnlyHeight(); |
- break; |
- case MINIMIZED: |
- height = kMinimizedPanelHeight; |
- break; |
- default: |
- NOTREACHED(); |
- height = restored_size_.height(); |
- break; |
- } |
- |
- int bottom = manager()->GetBottomPositionForExpansionState(expansion_state_); |
- gfx::Rect bounds = native_panel_->GetPanelBounds(); |
- bounds.set_y(bottom - height); |
- bounds.set_height(height); |
- SetPanelBounds(bounds); |
- |
- manager()->OnPanelExpansionStateChanged(old_state, new_state); |
+ manager()->OnPanelExpansionStateChanged(this, old_state); |
// The minimized panel should not get the focus. |
if (expansion_state_ == MINIMIZED) |
@@ -187,7 +165,11 @@ bool Panel::IsDrawingAttention() const { |
} |
void Panel::Show() { |
- native_panel_->ShowPanel(); |
+ // Don't show panel as active if it is in overflow state. |
+ if (expansion_state_ == IN_OVERFLOW) |
+ native_panel_->ShowPanelInactive(); |
jennb
2011/12/02 19:15:00
nit: call ShowInactive() rather than direct to nat
jianli
2011/12/02 23:23:46
Done.
|
+ else |
+ native_panel_->ShowPanel(); |
} |
void Panel::ShowInactive() { |
@@ -206,6 +188,10 @@ void Panel::Close() { |
} |
void Panel::Activate() { |
+ // Don't activate the panel if it is in overflow state. |
jennb
2011/12/02 19:15:00
Activate() is the way an app can force it's window
jianli
2011/12/02 23:23:46
Done. Called the newly added method MoveOutOfOverf
|
+ if (expansion_state_ == IN_OVERFLOW) |
+ return; |
+ |
// Make sure the panel is expanded when activated programmatically, |
// so the user input does not go into collapsed window. |
SetExpansionState(Panel::EXPANDED); |
@@ -276,6 +262,18 @@ gfx::Rect Panel::GetBounds() const { |
return native_panel_->GetPanelBounds(); |
} |
+int Panel::TitleOnlyHeight() const { |
+ return native_panel_->TitleOnlyHeight(); |
+} |
+ |
+gfx::Size Panel::IconOnlySize() const { |
+ return native_panel_->IconOnlySize(); |
+} |
+ |
+void Panel::EnsureFullyVisible() { |
+ native_panel_->EnsurePanelFullyVisible(); |
+} |
+ |
bool Panel::IsMaximized() const { |
// Size of panels is managed by PanelManager, they are never 'zoomed'. |
return false; |