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

Side by Side Diff: views/widget/widget_gtk.cc

Issue 115826: Makes MenuButton compile and fixes bug in GtkWidget I happened upon.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 6 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
« no previous file with comments | « views/views.gyp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "views/widget/widget_gtk.h" 5 #include "views/widget/widget_gtk.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "views/fill_layout.h" 8 #include "views/fill_layout.h"
9 #include "views/widget/root_view.h" 9 #include "views/widget/root_view.h"
10 #include "views/window/window_gtk.h" 10 #include "views/window/window_gtk.h"
11 11
12 namespace views { 12 namespace views {
13 13
14 // Returns the position of a widget on screen. 14 // Returns the position of a widget on screen.
15 static void GetWidgetPositionOnScreen(GtkWidget* widget, int* x, int *y) { 15 static void GetWidgetPositionOnScreen(GtkWidget* widget, int* x, int *y) {
16 GtkWidget* parent = widget; 16 while (widget) {
17 while (parent) {
18 if (GTK_IS_WINDOW(widget)) { 17 if (GTK_IS_WINDOW(widget)) {
19 int window_x, window_y; 18 int window_x, window_y;
20 gtk_window_get_position(GTK_WINDOW(widget), &window_x, &window_y); 19 gtk_window_get_position(GTK_WINDOW(widget), &window_x, &window_y);
21 *x += window_x; 20 *x += window_x;
22 *y += window_y; 21 *y += window_y;
23 return; 22 return;
24 } 23 }
25 // Not a window. 24 // Not a window.
26 *x += widget->allocation.x; 25 *x += widget->allocation.x;
27 *y += widget->allocation.y; 26 *y += widget->allocation.y;
28 parent = gtk_widget_get_parent(parent); 27 widget = gtk_widget_get_parent(widget);
29 } 28 }
30 } 29 }
31 30
32 // Returns the view::Event::flags for a GdkEventButton. 31 // Returns the view::Event::flags for a GdkEventButton.
33 static int GetFlagsForEventButton(const GdkEventButton& event) { 32 static int GetFlagsForEventButton(const GdkEventButton& event) {
34 int flags = Event::GetFlagsFromGdkState(event.state); 33 int flags = Event::GetFlagsFromGdkState(event.state);
35 switch (event.button) { 34 switch (event.button) {
36 case 1: 35 case 1:
37 flags |= Event::EF_LEFT_BUTTON_DOWN; 36 flags |= Event::EF_LEFT_BUTTON_DOWN;
38 break; 37 break;
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 return true; 474 return true;
476 } 475 }
477 476
478 last_mouse_event_was_move_ = false; 477 last_mouse_event_was_move_ = false;
479 MouseEvent mouse_pressed(Event::ET_MOUSE_PRESSED, event->x, event->y, 478 MouseEvent mouse_pressed(Event::ET_MOUSE_PRESSED, event->x, event->y,
480 GetFlagsForEventButton(*event)); 479 GetFlagsForEventButton(*event));
481 if (root_view_->OnMousePressed(mouse_pressed)) { 480 if (root_view_->OnMousePressed(mouse_pressed)) {
482 is_mouse_down_ = true; 481 is_mouse_down_ = true;
483 if (!has_capture_) { 482 if (!has_capture_) {
484 has_capture_ = true; 483 has_capture_ = true;
484 // TODO: this should also do a gdk_pointer_grab. See gtkmenu.cc for detail s:
brettw 2009/05/27 20:24:30 Line too long, and remove the empty // line here.
485 //
485 gtk_grab_add(child_widget_parent_); 486 gtk_grab_add(child_widget_parent_);
486 } 487 }
487 return true; 488 return true;
488 } 489 }
489 490
490 return false; 491 return false;
491 } 492 }
492 493
493 void WidgetGtk::ProcessMouseReleased(GdkEventButton* event) { 494 void WidgetGtk::ProcessMouseReleased(GdkEventButton* event) {
494 last_mouse_event_was_move_ = false; 495 last_mouse_event_was_move_ = false;
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 void WidgetGtk::HandleGrabBroke() { 675 void WidgetGtk::HandleGrabBroke() {
675 if (has_capture_) { 676 if (has_capture_) {
676 if (is_mouse_down_) 677 if (is_mouse_down_)
677 root_view_->ProcessMouseDragCanceled(); 678 root_view_->ProcessMouseDragCanceled();
678 is_mouse_down_ = false; 679 is_mouse_down_ = false;
679 has_capture_ = false; 680 has_capture_ = false;
680 } 681 }
681 } 682 }
682 683
683 } // namespace views 684 } // namespace views
OLDNEW
« no previous file with comments | « views/views.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698