OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/panels/panel_browser_view.h" | 5 #include "chrome/browser/ui/panels/panel_browser_view.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "chrome/browser/ui/panels/panel.h" | 8 #include "chrome/browser/ui/panels/panel.h" |
9 #include "chrome/browser/ui/panels/panel_browser_frame_view.h" | 9 #include "chrome/browser/ui/panels/panel_browser_frame_view.h" |
10 #include "chrome/browser/ui/panels/panel_manager.h" | 10 #include "chrome/browser/ui/panels/panel_manager.h" |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 } | 302 } |
303 | 303 |
304 Browser* PanelBrowserView::GetPanelBrowser() const { | 304 Browser* PanelBrowserView::GetPanelBrowser() const { |
305 return browser(); | 305 return browser(); |
306 } | 306 } |
307 | 307 |
308 void PanelBrowserView::DestroyPanelBrowser() { | 308 void PanelBrowserView::DestroyPanelBrowser() { |
309 DestroyBrowser(); | 309 DestroyBrowser(); |
310 } | 310 } |
311 | 311 |
312 NativePanelTesting* PanelBrowserView::GetNativePanelTesting() { | |
313 return this; | |
314 } | |
315 | |
316 PanelBrowserFrameView* PanelBrowserView::GetFrameView() const { | 312 PanelBrowserFrameView* PanelBrowserView::GetFrameView() const { |
317 return static_cast<PanelBrowserFrameView*>(frame()->GetFrameView()); | 313 return static_cast<PanelBrowserFrameView*>(frame()->GetFrameView()); |
318 } | 314 } |
319 | 315 |
320 bool PanelBrowserView::OnTitleBarMousePressed(const views::MouseEvent& event) { | 316 bool PanelBrowserView::OnTitleBarMousePressed(const gfx::Point& location) { |
321 if (!event.IsOnlyLeftMouseButton()) | |
322 return false; | |
323 mouse_pressed_ = true; | 317 mouse_pressed_ = true; |
324 mouse_pressed_point_ = event.location(); | 318 mouse_pressed_point_ = location; |
325 mouse_dragging_ = false; | 319 mouse_dragging_ = false; |
326 return true; | 320 return true; |
327 } | 321 } |
328 | 322 |
329 bool PanelBrowserView::OnTitleBarMouseDragged(const views::MouseEvent& event) { | 323 bool PanelBrowserView::OnTitleBarMouseDragged(const gfx::Point& location) { |
330 if (!mouse_pressed_) | 324 if (!mouse_pressed_) |
331 return false; | 325 return false; |
332 | 326 |
333 // We do not allow dragging vertically. | 327 // We do not allow dragging vertically. |
334 int delta_x = event.location().x() - mouse_pressed_point_.x(); | 328 int delta_x = location.x() - mouse_pressed_point_.x(); |
335 if (!mouse_dragging_ && ExceededDragThreshold(delta_x, 0)) { | 329 if (!mouse_dragging_ && ExceededDragThreshold(delta_x, 0)) { |
336 panel_->manager()->StartDragging(panel_.get()); | 330 panel_->manager()->StartDragging(panel_.get()); |
337 mouse_dragging_ = true; | 331 mouse_dragging_ = true; |
338 } | 332 } |
339 if (mouse_dragging_) | 333 if (mouse_dragging_) |
340 panel_->manager()->Drag(delta_x); | 334 panel_->manager()->Drag(delta_x); |
341 return true; | 335 return true; |
342 } | 336 } |
343 | 337 |
344 bool PanelBrowserView::OnTitleBarMouseReleased(const views::MouseEvent& event) { | 338 bool PanelBrowserView::OnTitleBarMouseReleased() { |
345 if (mouse_dragging_) | 339 if (mouse_dragging_) |
346 return EndDragging(false); | 340 return EndDragging(false); |
347 | 341 |
348 // Do not minimize the panel when we just clear the attention state. This is | 342 // Do not minimize the panel when we just clear the attention state. This is |
349 // a hack to prevent the panel from being minimized when the user clicks on | 343 // a hack to prevent the panel from being minimized when the user clicks on |
350 // the title-bar to clear the attention. | 344 // the title-bar to clear the attention. |
351 if (panel_->expansion_state() == Panel::EXPANDED && | 345 if (panel_->expansion_state() == Panel::EXPANDED && |
352 base::TimeTicks::Now() < attention_cleared_time_ + | 346 base::TimeTicks::Now() < attention_cleared_time_ + |
353 kSuspendMinimizeOnClickIntervalMs) { | 347 kSuspendMinimizeOnClickIntervalMs) { |
354 return true; | 348 return true; |
(...skipping 15 matching lines...) Expand all Loading... |
370 if (!mouse_pressed_) | 364 if (!mouse_pressed_) |
371 return false; | 365 return false; |
372 mouse_pressed_ = false; | 366 mouse_pressed_ = false; |
373 | 367 |
374 if (!mouse_dragging_) | 368 if (!mouse_dragging_) |
375 cancelled = true; | 369 cancelled = true; |
376 mouse_dragging_ = false; | 370 mouse_dragging_ = false; |
377 panel_->manager()->EndDragging(cancelled); | 371 panel_->manager()->EndDragging(cancelled); |
378 return true; | 372 return true; |
379 } | 373 } |
| 374 |
| 375 // NativePanelTesting implementation. |
| 376 class NativePanelTestingWin : public NativePanelTesting { |
| 377 public: |
| 378 explicit NativePanelTestingWin(PanelBrowserView* panel_browser_view); |
| 379 |
| 380 private: |
| 381 virtual void PressLeftMouseButtonTitlebar( |
| 382 const gfx::Point& point) OVERRIDE; |
| 383 virtual void ReleaseMouseButtonTitlebar() OVERRIDE; |
| 384 virtual void DragTitlebar(int delta_x, int delta_y) OVERRIDE; |
| 385 virtual void CancelDragTitlebar() OVERRIDE; |
| 386 virtual void FinishDragTitlebar() OVERRIDE; |
| 387 |
| 388 PanelBrowserView* panel_browser_view_; |
| 389 }; |
| 390 |
| 391 // static |
| 392 NativePanelTesting* NativePanelTesting::Create(NativePanel* native_panel) { |
| 393 return new NativePanelTestingWin(static_cast<PanelBrowserView*>( |
| 394 native_panel)); |
| 395 } |
| 396 |
| 397 NativePanelTestingWin::NativePanelTestingWin( |
| 398 PanelBrowserView* panel_browser_view) : |
| 399 panel_browser_view_(panel_browser_view) { |
| 400 } |
| 401 |
| 402 void NativePanelTestingWin::PressLeftMouseButtonTitlebar( |
| 403 const gfx::Point& point) { |
| 404 panel_browser_view_->OnTitleBarMousePressed(point); |
| 405 } |
| 406 |
| 407 void NativePanelTestingWin::ReleaseMouseButtonTitlebar() { |
| 408 panel_browser_view_->OnTitleBarMouseReleased(); |
| 409 } |
| 410 |
| 411 void NativePanelTestingWin::DragTitlebar(int delta_x, int delta_y) { |
| 412 gfx::Rect current_bounds = panel_browser_view_->panel()->GetRestoredBounds(); |
| 413 panel_browser_view_->OnTitleBarMouseDragged(gfx::Point( |
| 414 current_bounds.x() + delta_x, current_bounds.y() + delta_y)); |
| 415 } |
| 416 |
| 417 void NativePanelTestingWin::CancelDragTitlebar() { |
| 418 panel_browser_view_->OnTitleBarMouseCaptureLost(); |
| 419 } |
| 420 |
| 421 void NativePanelTestingWin::FinishDragTitlebar() { |
| 422 panel_browser_view_->OnTitleBarMouseReleased(); |
| 423 } |
OLD | NEW |