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

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

Issue 218017: GTK: First cut at tab dragging automation.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: comments Created 11 years, 3 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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/tab_gtk.h" 5 #include "chrome/browser/gtk/tabs/tab_gtk.h"
6 6
7 #include <gdk/gdkkeysyms.h> 7 #include <gdk/gdkkeysyms.h>
8 8
9 #include "app/gtk_dnd_util.h" 9 #include "app/gtk_dnd_util.h"
10 #include "app/gfx/path.h" 10 #include "app/gfx/path.h"
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 } 211 }
212 212
213 /////////////////////////////////////////////////////////////////////////////// 213 ///////////////////////////////////////////////////////////////////////////////
214 // TabGtk, MessageLoop::Observer implementation: 214 // TabGtk, MessageLoop::Observer implementation:
215 215
216 void TabGtk::WillProcessEvent(GdkEvent* event) { 216 void TabGtk::WillProcessEvent(GdkEvent* event) {
217 // Nothing to do. 217 // Nothing to do.
218 } 218 }
219 219
220 void TabGtk::DidProcessEvent(GdkEvent* event) { 220 void TabGtk::DidProcessEvent(GdkEvent* event) {
221 if (event->type != GDK_MOTION_NOTIFY) 221 if (!(event->type == GDK_MOTION_NOTIFY || event->type == GDK_LEAVE_NOTIFY ||
222 event->type == GDK_ENTER_NOTIFY)) {
222 return; 223 return;
224 }
223 225
224 if (drag_widget_) { 226 if (drag_widget_) {
225 delegate_->ContinueDrag(NULL); 227 delegate_->ContinueDrag(NULL);
226 return; 228 return;
227 } 229 }
228 230
229 GdkEventMotion* motion = reinterpret_cast<GdkEventMotion*>(event); 231 gint old_x = static_cast<gint>(last_mouse_down_->button.x_root);
230 GdkEventButton* button = reinterpret_cast<GdkEventButton*>(last_mouse_down_); 232 gint old_y = static_cast<gint>(last_mouse_down_->button.y_root);
231 bool dragging = gtk_drag_check_threshold(widget(), 233 gdouble new_x;
232 static_cast<gint>(button->x), 234 gdouble new_y;
233 static_cast<gint>(button->y), 235 gdk_event_get_root_coords(event, &new_x, &new_y);
234 static_cast<gint>(motion->x), 236
235 static_cast<gint>(motion->y)); 237 if (gtk_drag_check_threshold(widget(), old_x, old_y,
236 if (dragging) { 238 static_cast<gint>(new_x), static_cast<gint>(new_y))) {
237 StartDragging(gfx::Point(static_cast<int>(button->x), 239 StartDragging(gfx::Point(
238 static_cast<int>(button->y))); 240 static_cast<int>(last_mouse_down_->button.x),
241 static_cast<int>(last_mouse_down_->button.y)));
239 } 242 }
240 } 243 }
241 244
242 /////////////////////////////////////////////////////////////////////////////// 245 ///////////////////////////////////////////////////////////////////////////////
243 // TabGtk, TabRendererGtk overrides: 246 // TabGtk, TabRendererGtk overrides:
244 247
245 bool TabGtk::IsSelected() const { 248 bool TabGtk::IsSelected() const {
246 return delegate_->IsTabSelected(this); 249 return delegate_->IsTabSelected(this);
247 } 250 }
248 251
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 gdk_event_free(last_mouse_down_); 340 gdk_event_free(last_mouse_down_);
338 last_mouse_down_ = NULL; 341 last_mouse_down_ = NULL;
339 } 342 }
340 343
341 // Notify the drag helper that we're done with any potential drag operations. 344 // Notify the drag helper that we're done with any potential drag operations.
342 // Clean up the drag helper, which is re-created on the next mouse press. 345 // Clean up the drag helper, which is re-created on the next mouse press.
343 delegate_->EndDrag(canceled); 346 delegate_->EndDrag(canceled);
344 347
345 MessageLoopForUI::current()->RemoveObserver(this); 348 MessageLoopForUI::current()->RemoveObserver(this);
346 } 349 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698