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

Side by Side Diff: chrome/browser/gtk/tabs/dragged_tab_controller_gtk.cc

Issue 4694008: Make pink's TabContentsWrapper change compile on Windows.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/gtk/tabs/dragged_tab_controller_gtk.h" 5 #include "chrome/browser/gtk/tabs/dragged_tab_controller_gtk.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "chrome/browser/gtk/browser_window_gtk.h" 10 #include "chrome/browser/gtk/browser_window_gtk.h"
11 #include "chrome/browser/gtk/gtk_util.h" 11 #include "chrome/browser/gtk/gtk_util.h"
12 #include "chrome/browser/gtk/tabs/dragged_tab_gtk.h" 12 #include "chrome/browser/gtk/tabs/dragged_tab_gtk.h"
13 #include "chrome/browser/gtk/tabs/tab_strip_gtk.h" 13 #include "chrome/browser/gtk/tabs/tab_strip_gtk.h"
14 #include "chrome/browser/platform_util.h" 14 #include "chrome/browser/platform_util.h"
15 #include "chrome/browser/tab_contents/tab_contents.h" 15 #include "chrome/browser/tab_contents/tab_contents.h"
16 #include "chrome/browser/tab_contents_wrapper.h"
16 #include "chrome/browser/tabs/tab_strip_model.h" 17 #include "chrome/browser/tabs/tab_strip_model.h"
17 #include "chrome/browser/ui/browser.h" 18 #include "chrome/browser/ui/browser.h"
18 #include "chrome/common/notification_service.h" 19 #include "chrome/common/notification_service.h"
19 20
20 namespace { 21 namespace {
21 22
22 // Delay, in ms, during dragging before we bring a window to front. 23 // Delay, in ms, during dragging before we bring a window to front.
23 const int kBringToFrontDelay = 750; 24 const int kBringToFrontDelay = 750;
24 25
25 // Used to determine how far a tab must obscure another tab in order to swap 26 // Used to determine how far a tab must obscure another tab in order to swap
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 } 84 }
84 } 85 }
85 86
86 bool DraggedTabControllerGtk::EndDrag(bool canceled) { 87 bool DraggedTabControllerGtk::EndDrag(bool canceled) {
87 return EndDragImpl(canceled ? CANCELED : NORMAL); 88 return EndDragImpl(canceled ? CANCELED : NORMAL);
88 } 89 }
89 90
90 TabGtk* DraggedTabControllerGtk::GetDragSourceTabForContents( 91 TabGtk* DraggedTabControllerGtk::GetDragSourceTabForContents(
91 TabContents* contents) const { 92 TabContents* contents) const {
92 if (attached_tabstrip_ == source_tabstrip_) 93 if (attached_tabstrip_ == source_tabstrip_)
93 return contents == dragged_contents_ ? source_tab_ : NULL; 94 return contents == dragged_contents_->tab_contents() ? source_tab_ : NULL;
94 return NULL; 95 return NULL;
95 } 96 }
96 97
97 bool DraggedTabControllerGtk::IsDragSourceTab(const TabGtk* tab) const { 98 bool DraggedTabControllerGtk::IsDragSourceTab(const TabGtk* tab) const {
98 return source_tab_ == tab; 99 return source_tab_ == tab;
99 } 100 }
100 101
101 bool DraggedTabControllerGtk::IsTabDetached(const TabGtk* tab) const { 102 bool DraggedTabControllerGtk::IsTabDetached(const TabGtk* tab) const {
102 if (!IsDragSourceTab(tab)) 103 if (!IsDragSourceTab(tab))
103 return false; 104 return false;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 // Ignored. 189 // Ignored.
189 } 190 }
190 191
191 //////////////////////////////////////////////////////////////////////////////// 192 ////////////////////////////////////////////////////////////////////////////////
192 // DraggedTabControllerGtk, NotificationObserver implementation: 193 // DraggedTabControllerGtk, NotificationObserver implementation:
193 194
194 void DraggedTabControllerGtk::Observe(NotificationType type, 195 void DraggedTabControllerGtk::Observe(NotificationType type,
195 const NotificationSource& source, 196 const NotificationSource& source,
196 const NotificationDetails& details) { 197 const NotificationDetails& details) {
197 DCHECK(type == NotificationType::TAB_CONTENTS_DESTROYED); 198 DCHECK(type == NotificationType::TAB_CONTENTS_DESTROYED);
198 DCHECK(Source<TabContents>(source).ptr() == dragged_contents_); 199 DCHECK(Source<TabContentsWrapper>(source).ptr() == dragged_contents_);
199 EndDragImpl(TAB_DESTROYED); 200 EndDragImpl(TAB_DESTROYED);
200 } 201 }
201 202
202 void DraggedTabControllerGtk::InitWindowCreatePoint() { 203 void DraggedTabControllerGtk::InitWindowCreatePoint() {
203 window_create_point_.SetPoint(mouse_offset_.x(), mouse_offset_.y()); 204 window_create_point_.SetPoint(mouse_offset_.x(), mouse_offset_.y());
204 } 205 }
205 206
206 gfx::Point DraggedTabControllerGtk::GetWindowCreatePoint() const { 207 gfx::Point DraggedTabControllerGtk::GetWindowCreatePoint() const {
207 gfx::Point cursor_point = GetCursorScreenPoint(); 208 gfx::Point cursor_point = GetCursorScreenPoint();
208 return gfx::Point(cursor_point.x() - window_create_point_.x(), 209 return gfx::Point(cursor_point.x() - window_create_point_.x(),
209 cursor_point.y() - window_create_point_.y()); 210 cursor_point.y() - window_create_point_.y());
210 } 211 }
211 212
212 void DraggedTabControllerGtk::SetDraggedContents(TabContents* new_contents) { 213 void DraggedTabControllerGtk::SetDraggedContents(
214 TabContentsWrapper* new_contents) {
213 if (dragged_contents_) { 215 if (dragged_contents_) {
214 registrar_.Remove(this, 216 registrar_.Remove(this,
215 NotificationType::TAB_CONTENTS_DESTROYED, 217 NotificationType::TAB_CONTENTS_DESTROYED,
216 Source<TabContents>(dragged_contents_)); 218 Source<TabContentsWrapper>(dragged_contents_));
217 if (original_delegate_) 219 if (original_delegate_)
218 dragged_contents_->set_delegate(original_delegate_); 220 dragged_contents_->set_delegate(original_delegate_);
219 } 221 }
220 original_delegate_ = NULL; 222 original_delegate_ = NULL;
221 dragged_contents_ = new_contents; 223 dragged_contents_ = new_contents;
222 if (dragged_contents_) { 224 if (dragged_contents_) {
223 registrar_.Add(this, 225 registrar_.Add(this,
224 NotificationType::TAB_CONTENTS_DESTROYED, 226 NotificationType::TAB_CONTENTS_DESTROYED,
225 Source<TabContents>(dragged_contents_)); 227 Source<TabContentsWrapper>(dragged_contents_));
226 228
227 // We need to be the delegate so we receive messages about stuff, 229 // We need to be the delegate so we receive messages about stuff,
228 // otherwise our dragged_contents() may be replaced and subsequently 230 // otherwise our dragged_contents() may be replaced and subsequently
229 // collected/destroyed while the drag is in process, leading to 231 // collected/destroyed while the drag is in process, leading to
230 // nasty crashes. 232 // nasty crashes.
231 original_delegate_ = dragged_contents_->delegate(); 233 original_delegate_ = dragged_contents_->delegate();
232 dragged_contents_->set_delegate(this); 234 dragged_contents_->set_delegate(this);
233 } 235 }
234 } 236 }
235 237
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 if (!tab) { 375 if (!tab) {
374 // There is no tab in |attached_tabstrip| that corresponds to the dragged 376 // There is no tab in |attached_tabstrip| that corresponds to the dragged
375 // TabContents. We must now create one. 377 // TabContents. We must now create one.
376 378
377 // Remove ourselves as the delegate now that the dragged TabContents is 379 // Remove ourselves as the delegate now that the dragged TabContents is
378 // being inserted back into a Browser. 380 // being inserted back into a Browser.
379 dragged_contents_->set_delegate(NULL); 381 dragged_contents_->set_delegate(NULL);
380 original_delegate_ = NULL; 382 original_delegate_ = NULL;
381 383
382 // Return the TabContents' to normalcy. 384 // Return the TabContents' to normalcy.
383 dragged_contents_->set_capturing_contents(false); 385 dragged_contents_->tab_contents()->set_capturing_contents(false);
384 386
385 // We need to ask the tabstrip we're attached to ensure that the ideal 387 // We need to ask the tabstrip we're attached to ensure that the ideal
386 // bounds for all its tabs are correctly generated, because the calculation 388 // bounds for all its tabs are correctly generated, because the calculation
387 // in GetInsertionIndexForDraggedBounds needs them to be to figure out the 389 // in GetInsertionIndexForDraggedBounds needs them to be to figure out the
388 // appropriate insertion index. 390 // appropriate insertion index.
389 attached_tabstrip_->GenerateIdealBounds(); 391 attached_tabstrip_->GenerateIdealBounds();
390 392
391 // Inserting counts as a move. We don't want the tabs to jitter when the 393 // Inserting counts as a move. We don't want the tabs to jitter when the
392 // user moves the tab immediately after attaching it. 394 // user moves the tab immediately after attaching it.
393 last_move_screen_x_ = screen_point.x(); 395 last_move_screen_x_ = screen_point.x();
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 new_browser->window()->Show(); 680 new_browser->window()->Show();
679 CleanUpHiddenFrame(); 681 CleanUpHiddenFrame();
680 } 682 }
681 683
682 return destroy_immediately; 684 return destroy_immediately;
683 } 685 }
684 686
685 void DraggedTabControllerGtk::EnsureDraggedTab() { 687 void DraggedTabControllerGtk::EnsureDraggedTab() {
686 if (!dragged_tab_.get()) { 688 if (!dragged_tab_.get()) {
687 gfx::Rect rect; 689 gfx::Rect rect;
688 dragged_contents_->GetContainerBounds(&rect); 690 dragged_contents_->tab_contents()->GetContainerBounds(&rect);
689 691
690 dragged_tab_.reset(new DraggedTabGtk(dragged_contents_, mouse_offset_, 692 dragged_tab_.reset(new DraggedTabGtk(dragged_contents_->tab_contents(),
691 rect.size(), mini_)); 693 mouse_offset_, rect.size(), mini_));
692 } 694 }
693 } 695 }
694 696
695 gfx::Point DraggedTabControllerGtk::GetCursorScreenPoint() const { 697 gfx::Point DraggedTabControllerGtk::GetCursorScreenPoint() const {
696 // Get default display and screen. 698 // Get default display and screen.
697 GdkDisplay* display = gdk_display_get_default(); 699 GdkDisplay* display = gdk_display_get_default();
698 700
699 // Get cursor position. 701 // Get cursor position.
700 int x, y; 702 int x, y;
701 gdk_display_get_pointer(display, NULL, &x, &y, NULL); 703 gdk_display_get_pointer(display, NULL, &x, &y, NULL);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 gfx::NativeView dragged_tab = dragged_tab_->widget(); 778 gfx::NativeView dragged_tab = dragged_tab_->widget();
777 dock_windows_.insert(dragged_tab); 779 dock_windows_.insert(dragged_tab);
778 window = DockInfo::GetLocalProcessWindowAtPoint(GetCursorScreenPoint(), 780 window = DockInfo::GetLocalProcessWindowAtPoint(GetCursorScreenPoint(),
779 dock_windows_); 781 dock_windows_);
780 dock_windows_.erase(dragged_tab); 782 dock_windows_.erase(dragged_tab);
781 } 783 }
782 784
783 if (window) 785 if (window)
784 gtk_window_present(GTK_WINDOW(window)); 786 gtk_window_present(GTK_WINDOW(window));
785 } 787 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698