| Index: chrome/browser/ui/panels/panel_browser_window_cocoa.mm
|
| diff --git a/chrome/browser/ui/panels/panel_browser_window_cocoa.mm b/chrome/browser/ui/panels/panel_browser_window_cocoa.mm
|
| index c4fe97e2b4146eb575fda9abc2a4389b6a6f1656..9d63ae32ed40dfed46e588f92b7a03802168575e 100644
|
| --- a/chrome/browser/ui/panels/panel_browser_window_cocoa.mm
|
| +++ b/chrome/browser/ui/panels/panel_browser_window_cocoa.mm
|
| @@ -10,6 +10,7 @@
|
| #import "chrome/browser/ui/cocoa/browser_window_utils.h"
|
| #include "chrome/browser/ui/panels/panel.h"
|
| #include "chrome/browser/ui/panels/panel_manager.h"
|
| +#include "chrome/browser/ui/panels/panel_mouse_watcher.h"
|
| #import "chrome/browser/ui/panels/panel_titlebar_view_cocoa.h"
|
| #import "chrome/browser/ui/panels/panel_window_controller_cocoa.h"
|
| #include "content/common/native_web_keyboard_event.h"
|
| @@ -58,6 +59,9 @@ PanelBrowserWindowCocoa::PanelBrowserWindowCocoa(Browser* browser,
|
| }
|
|
|
| PanelBrowserWindowCocoa::~PanelBrowserWindowCocoa() {
|
| + PanelMouseWatcher* watcher = PanelMouseWatcher::GetInstance();
|
| + if (watcher->IsSubscribed(this))
|
| + watcher->RemoveSubscriber(this);
|
| }
|
|
|
| bool PanelBrowserWindowCocoa::isClosed() {
|
| @@ -109,13 +113,15 @@ void PanelBrowserWindowCocoa::OnPanelExpansionStateChanged(
|
| int height; // New height of the Panel in screen coordinates.
|
| switch (expansion_state) {
|
| case Panel::EXPANDED:
|
| + PanelMouseWatcher::GetInstance()->RemoveSubscriber(this);
|
| height = restored_height_;
|
| break;
|
| case Panel::TITLE_ONLY:
|
| height = [controller_ titlebarHeightInScreeenCoordinates];
|
| break;
|
| case Panel::MINIMIZED:
|
| - height = 3; // TODO(dimich) merge with GTK patch which defines it better.
|
| + PanelMouseWatcher::GetInstance()->AddSubscriber(this);
|
| + height = PanelManager::minimized_panel_height();
|
| break;
|
| default:
|
| NOTREACHED();
|
| @@ -133,10 +139,11 @@ void PanelBrowserWindowCocoa::OnPanelExpansionStateChanged(
|
| SetPanelBounds(bounds);
|
| }
|
|
|
| +// Coordinates are in gfx coordinate system (screen, with 0,0 at the top left).
|
| bool PanelBrowserWindowCocoa::ShouldBringUpPanelTitlebar(int mouse_x,
|
| int mouse_y) const {
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| + return bounds_.x() <= mouse_x && mouse_x <= bounds_.right() &&
|
| + mouse_y >= bounds_.y();
|
| }
|
|
|
| void PanelBrowserWindowCocoa::ClosePanel() {
|
| @@ -300,7 +307,7 @@ NativePanelTesting* NativePanelTesting::Create(NativePanel* native_panel) {
|
|
|
| // static
|
| PanelMouseWatcher* NativePanelTesting::GetPanelMouseWatcherInstance() {
|
| - return NULL;
|
| + return PanelMouseWatcher::GetInstance();
|
| }
|
|
|
| NativePanelTestingCocoa::NativePanelTestingCocoa(NativePanel* native_panel)
|
| @@ -332,12 +339,13 @@ void NativePanelTestingCocoa::FinishDragTitlebar() {
|
| [titlebar() finishDragTitlebar];
|
| }
|
|
|
| +// TODO(dimich) this method is platform-independent. Reuse it.
|
| void NativePanelTestingCocoa::SetMousePositionForMinimizeRestore(
|
| const gfx::Point& hover_point) {
|
| - NOTIMPLEMENTED();
|
| + PanelMouseWatcher::GetInstance()->HandleMouseMovement(hover_point);
|
| + MessageLoopForUI::current()->RunAllPending();
|
| }
|
|
|
| int NativePanelTestingCocoa::TitleOnlyHeight() const {
|
| - NOTIMPLEMENTED();
|
| - return -1;
|
| + return [native_panel_window_->controller_ titlebarHeightInScreeenCoordinates];
|
| }
|
|
|