Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1151)

Side by Side Diff: chrome/browser/ui/panels/panel_browser_window_gtk.cc

Issue 9403035: Refactor intra-strip panel drags by introducing PanelDragController. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix per feedback Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_window_gtk.h" 5 #include "chrome/browser/ui/panels/panel_browser_window_gtk.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "chrome/browser/ui/browser_list.h" 8 #include "chrome/browser/ui/browser_list.h"
9 #include "chrome/browser/ui/gtk/browser_titlebar.h" 9 #include "chrome/browser/ui/gtk/browser_titlebar.h"
10 #include "chrome/browser/ui/panels/panel.h" 10 #include "chrome/browser/ui/panels/panel.h"
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 bool PanelBrowserWindowGtk::IsAnimatingBounds() const { 463 bool PanelBrowserWindowGtk::IsAnimatingBounds() const {
464 return bounds_animator_.get() && bounds_animator_->is_animating(); 464 return bounds_animator_.get() && bounds_animator_->is_animating();
465 } 465 }
466 466
467 void PanelBrowserWindowGtk::WillProcessEvent(GdkEvent* event) { 467 void PanelBrowserWindowGtk::WillProcessEvent(GdkEvent* event) {
468 // Nothing to do. 468 // Nothing to do.
469 } 469 }
470 470
471 void PanelBrowserWindowGtk::DidProcessEvent(GdkEvent* event) { 471 void PanelBrowserWindowGtk::DidProcessEvent(GdkEvent* event) {
472 DCHECK(last_mouse_down_); 472 DCHECK(last_mouse_down_);
473 if (event->type != GDK_MOTION_NOTIFY || !panel_->draggable()) 473 if (event->type != GDK_MOTION_NOTIFY ||
474 !panel_->manager()->CanDrag(panel_.get()))
474 return; 475 return;
475 476
476 gdouble new_x_double; 477 gdouble new_x_double;
477 gdouble new_y_double; 478 gdouble new_y_double;
478 gdouble old_x_double; 479 gdouble old_x_double;
479 gdouble old_y_double; 480 gdouble old_y_double;
480 gdk_event_get_root_coords(event, &new_x_double, &new_y_double); 481 gdk_event_get_root_coords(event, &new_x_double, &new_y_double);
481 gdk_event_get_root_coords(last_mouse_down_, &old_x_double, &old_y_double); 482 gdk_event_get_root_coords(last_mouse_down_, &old_x_double, &old_y_double);
482 483
483 gint new_x = static_cast<gint>(new_x_double); 484 gint new_x = static_cast<gint>(new_x_double);
484 gint new_y = static_cast<gint>(new_y_double); 485 gint new_y = static_cast<gint>(new_y_double);
485 gint old_x = static_cast<gint>(old_x_double); 486 gint old_x = static_cast<gint>(old_x_double);
486 gint old_y = static_cast<gint>(old_y_double); 487 gint old_y = static_cast<gint>(old_y_double);
487 488
488 if (!drag_widget_ && 489 if (!drag_widget_ &&
489 gtk_drag_check_threshold(titlebar_widget(), old_x, 490 gtk_drag_check_threshold(titlebar_widget(), old_x,
490 old_y, new_x, new_y)) { 491 old_y, new_x, new_y)) {
491 CreateDragWidget(); 492 CreateDragWidget();
492 if (!system_drag_disabled_for_testing_) { 493 if (!system_drag_disabled_for_testing_) {
493 GtkTargetList* list = ui::GetTargetListFromCodeMask(ui::CHROME_TAB); 494 GtkTargetList* list = ui::GetTargetListFromCodeMask(ui::CHROME_TAB);
494 gtk_drag_begin(drag_widget_, list, GDK_ACTION_MOVE, 1, last_mouse_down_); 495 gtk_drag_begin(drag_widget_, list, GDK_ACTION_MOVE, 1, last_mouse_down_);
495 // gtk_drag_begin increments reference count for GtkTargetList. So unref 496 // gtk_drag_begin increments reference count for GtkTargetList. So unref
496 // it here to reduce the reference count. 497 // it here to reduce the reference count.
497 gtk_target_list_unref(list); 498 gtk_target_list_unref(list);
498 } 499 }
499 panel_->manager()->StartDragging(panel_.get()); 500 panel_->manager()->StartDragging(panel_.get());
500 } 501 }
501 502
502 if (drag_widget_) { 503 if (drag_widget_) {
503 panel_->manager()->Drag(new_x - old_x); 504 panel_->manager()->Drag(new_x - old_x, new_y - old_y);
504 gdk_event_free(last_mouse_down_); 505 gdk_event_free(last_mouse_down_);
505 last_mouse_down_ = gdk_event_copy(event); 506 last_mouse_down_ = gdk_event_copy(event);
506 } 507 }
507 } 508 }
508 509
509 void PanelBrowserWindowGtk::AnimationEnded(const ui::Animation* animation) { 510 void PanelBrowserWindowGtk::AnimationEnded(const ui::Animation* animation) {
510 titlebar()->SendEnterNotifyToCloseButtonIfUnderMouse(); 511 titlebar()->SendEnterNotifyToCloseButtonIfUnderMouse();
511 512
512 content::NotificationService::current()->Notify( 513 content::NotificationService::current()->Notify(
513 chrome::NOTIFICATION_PANEL_BOUNDS_ANIMATIONS_FINISHED, 514 chrome::NOTIFICATION_PANEL_BOUNDS_ANIMATIONS_FINISHED,
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 } 812 }
812 } 813 }
813 814
814 bool NativePanelTestingGtk::IsWindowSizeKnown() const { 815 bool NativePanelTestingGtk::IsWindowSizeKnown() const {
815 return panel_browser_window_gtk_->window_size_known_; 816 return panel_browser_window_gtk_->window_size_known_;
816 } 817 }
817 818
818 bool NativePanelTestingGtk::IsAnimatingBounds() const { 819 bool NativePanelTestingGtk::IsAnimatingBounds() const {
819 return panel_browser_window_gtk_->IsAnimatingBounds(); 820 return panel_browser_window_gtk_->IsAnimatingBounds();
820 } 821 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698