Index: chrome/browser/ui/panels/docked_panel_strip.cc |
diff --git a/chrome/browser/ui/panels/docked_panel_strip.cc b/chrome/browser/ui/panels/docked_panel_strip.cc |
index c63ee15d58033ee771624e6e93552d5f5f8fbf4e..edbc782d366f8ab521f2a356f27c07fabb7ed158 100644 |
--- a/chrome/browser/ui/panels/docked_panel_strip.cc |
+++ b/chrome/browser/ui/panels/docked_panel_strip.cc |
@@ -12,7 +12,6 @@ |
#include "base/logging.h" |
#include "base/message_loop.h" |
#include "chrome/browser/ui/browser.h" |
-#include "chrome/browser/ui/panels/panel_drag_controller.h" |
#include "chrome/browser/ui/panels/panel_manager.h" |
#include "chrome/browser/ui/panels/panel_mouse_watcher.h" |
#include "chrome/common/chrome_notification_types.h" |
@@ -477,11 +476,25 @@ void DockedPanelStrip::OnPanelAttentionStateChanged(Panel* panel) { |
panel->SetExpansionState(Panel::TITLE_ONLY); |
} else { |
// Maybe bring down the titlebar now that panel is not drawing attention. |
- if (panel->expansion_state() == Panel::TITLE_ONLY && !are_titlebars_up_) |
+ if (panel->expansion_state() == Panel::TITLE_ONLY && !are_titlebars_up_ |
+ && !IsMouseInPanel(panel)) |
Andrei
2012/05/15 22:43:29
So now if one clicks on such panel and then moves
jennb
2012/05/15 22:53:54
If one clicks on a title-only panel and moves the
jianli
2012/05/15 22:59:47
nit: && should be placed at the end of last line.
jennb
2012/05/16 00:47:09
Done.
|
panel->SetExpansionState(Panel::MINIMIZED); |
} |
} |
+bool DockedPanelStrip::IsMouseInPanel(const Panel* panel) const { |
+ if (dragging_panel_current_iterator_ != panels_.end() && |
jianli
2012/05/15 22:59:47
Please comment this since it might be a bit confus
jennb
2012/05/16 00:47:09
Done.
|
+ *dragging_panel_current_iterator_ == panel) |
+ return true; |
+ |
+ const gfx::Point mouse_position = |
+ panel_manager_->mouse_watcher()->GetMousePosition(); |
+ gfx::Rect bounds = panel->GetBounds(); |
+ return bounds.x() <= mouse_position.x() && |
+ mouse_position.y() <= bounds.right() && |
jianli
2012/05/15 22:59:47
y()?
Can we call gfx::Rect::Contains?
jennb
2012/05/16 00:47:09
Corrected.
|
+ mouse_position.y() >= bounds.y(); |
+} |
+ |
void DockedPanelStrip::OnPanelTitlebarClicked(Panel* panel, |
panel::ClickModifier modifier) { |
DCHECK_EQ(this, panel->panel_strip()); |
@@ -637,10 +650,7 @@ bool DockedPanelStrip::ShouldBringUpTitlebars(int mouse_x, int mouse_y) const { |
} |
void DockedPanelStrip::BringUpOrDownTitlebars(bool bring_up) { |
- if (are_titlebars_up_ == bring_up) |
jianli
2012/05/15 22:59:47
Why do we need to remove this check?
jennb
2012/05/16 00:47:09
We may need to bring down panels that are in title
|
- return; |
are_titlebars_up_ = bring_up; |
- |
int task_delay_ms = 0; |
// If the auto-hiding bottom bar exists, delay the action until the bottom |