Index: chrome/browser/ui/panels/panel.cc |
diff --git a/chrome/browser/ui/panels/panel.cc b/chrome/browser/ui/panels/panel.cc |
index 8e08f364448f60eccb174968c11a378eb89bc606..56b17ef5eb2c85446ff4c12adb7c78011a5ddcad 100644 |
--- a/chrome/browser/ui/panels/panel.cc |
+++ b/chrome/browser/ui/panels/panel.cc |
@@ -68,8 +68,8 @@ void Panel::Initialize(const gfx::Rect& bounds) { |
void Panel::OnNativePanelClosed() { |
if (auto_resizable_) |
native_panel_->GetPanelBrowser()->tabstrip_model()->RemoveObserver(this); |
- panel_strip_->RemovePanel(this); |
manager()->OnPanelClosed(this); |
+ DCHECK(!panel_strip_); |
} |
PanelManager* Panel::manager() const { |
@@ -77,7 +77,7 @@ PanelManager* Panel::manager() const { |
} |
bool Panel::draggable() const { |
- return panel_strip()->CanDragPanel(this); |
+ return panel_strip_ && panel_strip_->CanDragPanel(this); |
} |
const Extension* Panel::GetExtension() const { |
@@ -89,7 +89,7 @@ const Extension* Panel::GetExtension() const { |
// being resized vs a change in current display bounds, e.g. from overflow |
// size change. Change this when refactoring panel resize logic. |
void Panel::SetPanelBounds(const gfx::Rect& bounds) { |
- if (panel_strip_->type() == PanelStrip::DOCKED && |
+ if (panel_strip_ && panel_strip_->type() == PanelStrip::DOCKED && |
expansion_state_ == Panel::EXPANDED) |
restored_size_ = bounds.size(); |
@@ -102,7 +102,7 @@ void Panel::SetPanelBounds(const gfx::Rect& bounds) { |
} |
void Panel::SetPanelBoundsInstantly(const gfx::Rect& bounds) { |
- if (panel_strip_->type() == PanelStrip::DOCKED && |
+ if (panel_strip_ && panel_strip_->type() == PanelStrip::DOCKED && |
expansion_state_ == Panel::EXPANDED) |
restored_size_ = bounds.size(); |
@@ -149,20 +149,6 @@ void Panel::SetAppIconVisibility(bool visible) { |
native_panel_->SetPanelAppIconVisibility(visible); |
} |
-void Panel::MoveToStrip(PanelStrip* new_strip) { |
- DCHECK_NE(panel_strip_, new_strip); |
- if (panel_strip_) |
- panel_strip_->RemovePanel(this); |
- |
- panel_strip_ = new_strip; |
- panel_strip_->AddPanel(this); |
- |
- content::NotificationService::current()->Notify( |
- chrome::NOTIFICATION_PANEL_CHANGED_LAYOUT_MODE, |
- content::Source<Panel>(this), |
- content::NotificationService::NoDetails()); |
-} |
- |
void Panel::SetExpansionState(ExpansionState new_state) { |
if (expansion_state_ == new_state) |
return; |
@@ -190,7 +176,7 @@ void Panel::FullScreenModeChanged(bool is_full_screen) { |
} |
void Panel::Show() { |
- if (manager()->is_full_screen()) |
+ if (manager()->is_full_screen() || !panel_strip_) |
return; |
if (panel_strip_->CanShowPanelAsActive(this)) |
@@ -200,7 +186,7 @@ void Panel::Show() { |
} |
void Panel::ShowInactive() { |
- if (manager()->is_full_screen()) |
+ if (manager()->is_full_screen() || !panel_strip_) |
return; |
native_panel_->ShowPanelInactive(); |
@@ -218,6 +204,9 @@ void Panel::Close() { |
} |
void Panel::Activate() { |
+ if (!panel_strip_) |
jianli
2012/03/02 00:11:41
It seems to be quite a burden to check panel_strip
jennb
2012/03/02 01:26:32
It's a pain but as these are all entry points for
|
+ return; |
+ |
panel_strip_->ActivatePanel(this); |
native_panel_->ActivatePanel(); |
} |
@@ -231,7 +220,7 @@ bool Panel::IsActive() const { |
} |
void Panel::FlashFrame(bool flash) { |
- if (IsDrawingAttention() == flash) |
+ if (IsDrawingAttention() == flash || !panel_strip_) |
return; |
// Don't draw attention for an active panel. |
@@ -316,9 +305,7 @@ bool Panel::IsMaximized() const { |
} |
bool Panel::IsMinimized() const { |
- PanelStrip::Type strip_type = panel_strip_->type(); |
- return strip_type == PanelStrip::IN_OVERFLOW || |
- (strip_type == PanelStrip::DOCKED && expansion_state_ != EXPANDED); |
+ return !panel_strip_ || panel_strip()->IsPanelMinimized(this); |
} |
void Panel::Maximize() { |
@@ -326,11 +313,13 @@ void Panel::Maximize() { |
} |
void Panel::Minimize() { |
- panel_strip_->MinimizePanel(this); |
+ if (panel_strip_) |
+ panel_strip_->MinimizePanel(this); |
} |
void Panel::Restore() { |
- panel_strip_->RestorePanel(this); |
+ if (panel_strip_) |
+ panel_strip_->RestorePanel(this); |
} |
void Panel::EnterFullscreen( |