| OLD | NEW |
| 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 "app/drag_drop_types.h" | 7 #include "app/drag_drop_types.h" |
| 8 #include "app/gfx/path.h" | 8 #include "app/gfx/path.h" |
| 9 #include "app/os_exchange_data.h" | 9 #include "app/os_exchange_data.h" |
| 10 #include "app/os_exchange_data_provider_gtk.h" | 10 #include "app/os_exchange_data_provider_gtk.h" |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 G_CALLBACK(CallDragLeave), this); | 280 G_CALLBACK(CallDragLeave), this); |
| 281 g_signal_connect(G_OBJECT(window_contents_), "drag_data_get", | 281 g_signal_connect(G_OBJECT(window_contents_), "drag_data_get", |
| 282 G_CALLBACK(CallDragDataGet), this); | 282 G_CALLBACK(CallDragDataGet), this); |
| 283 g_signal_connect(G_OBJECT(window_contents_), "drag_end", | 283 g_signal_connect(G_OBJECT(window_contents_), "drag_end", |
| 284 G_CALLBACK(CallDragEnd), this); | 284 G_CALLBACK(CallDragEnd), this); |
| 285 g_signal_connect(G_OBJECT(window_contents_), "drag_failed", | 285 g_signal_connect(G_OBJECT(window_contents_), "drag_failed", |
| 286 G_CALLBACK(CallDragFailed), this); | 286 G_CALLBACK(CallDragFailed), this); |
| 287 | 287 |
| 288 tooltip_manager_.reset(new TooltipManagerGtk(this)); | 288 tooltip_manager_.reset(new TooltipManagerGtk(this)); |
| 289 | 289 |
| 290 // Register for tooltips. |
| 291 g_object_set(G_OBJECT(window_contents_), "has-tooltip", TRUE, NULL); |
| 292 g_signal_connect(G_OBJECT(window_contents_), "query_tooltip", |
| 293 G_CALLBACK(CallQueryTooltip), this); |
| 294 |
| 290 if (type_ == TYPE_CHILD) { | 295 if (type_ == TYPE_CHILD) { |
| 291 if (parent) { | 296 if (parent) { |
| 292 WidgetGtk* parent_widget = GetViewForNative(parent); | 297 WidgetGtk* parent_widget = GetViewForNative(parent); |
| 293 parent_widget->AddChild(widget_); | 298 parent_widget->AddChild(widget_); |
| 294 parent_widget->PositionChild(widget_, bounds.x(), bounds.y(), | 299 parent_widget->PositionChild(widget_, bounds.x(), bounds.y(), |
| 295 bounds.width(), bounds.height()); | 300 bounds.width(), bounds.height()); |
| 296 } | 301 } |
| 297 } else { | 302 } else { |
| 298 if (bounds.width() > 0 && bounds.height() > 0) | 303 if (bounds.width() > 0 && bounds.height() > 0) |
| 299 gtk_window_resize(GTK_WINDOW(widget_), bounds.width(), bounds.height()); | 304 gtk_window_resize(GTK_WINDOW(widget_), bounds.width(), bounds.height()); |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 } | 666 } |
| 662 | 667 |
| 663 gboolean WidgetGtk::OnEnterNotify(GtkWidget* widget, GdkEventCrossing* event) { | 668 gboolean WidgetGtk::OnEnterNotify(GtkWidget* widget, GdkEventCrossing* event) { |
| 664 return false; | 669 return false; |
| 665 } | 670 } |
| 666 | 671 |
| 667 gboolean WidgetGtk::OnLeaveNotify(GtkWidget* widget, GdkEventCrossing* event) { | 672 gboolean WidgetGtk::OnLeaveNotify(GtkWidget* widget, GdkEventCrossing* event) { |
| 668 last_mouse_event_was_move_ = false; | 673 last_mouse_event_was_move_ = false; |
| 669 if (!has_capture_ && !is_mouse_down_) | 674 if (!has_capture_ && !is_mouse_down_) |
| 670 root_view_->ProcessOnMouseExited(); | 675 root_view_->ProcessOnMouseExited(); |
| 671 return true; | 676 return false; |
| 672 } | 677 } |
| 673 | 678 |
| 674 gboolean WidgetGtk::OnKeyPress(GtkWidget* widget, GdkEventKey* event) { | 679 gboolean WidgetGtk::OnKeyPress(GtkWidget* widget, GdkEventKey* event) { |
| 675 KeyEvent key_event(event, false); | 680 KeyEvent key_event(event, false); |
| 676 return root_view_->ProcessKeyEvent(key_event); | 681 return root_view_->ProcessKeyEvent(key_event); |
| 677 } | 682 } |
| 678 | 683 |
| 679 gboolean WidgetGtk::OnKeyRelease(GtkWidget* widget, GdkEventKey* event) { | 684 gboolean WidgetGtk::OnKeyRelease(GtkWidget* widget, GdkEventKey* event) { |
| 680 KeyEvent key_event(event, false); | 685 KeyEvent key_event(event, false); |
| 681 return root_view_->ProcessKeyEvent(key_event); | 686 return root_view_->ProcessKeyEvent(key_event); |
| 682 } | 687 } |
| 683 | 688 |
| 689 gboolean WidgetGtk::OnQueryTooltip(gint x, |
| 690 gint y, |
| 691 gboolean keyboard_mode, |
| 692 GtkTooltip* tooltip) { |
| 693 return tooltip_manager_->ShowTooltip(x, y, keyboard_mode, tooltip); |
| 694 } |
| 695 |
| 684 gboolean WidgetGtk::OnGrabBrokeEvent(GtkWidget* widget, GdkEvent* event) { | 696 gboolean WidgetGtk::OnGrabBrokeEvent(GtkWidget* widget, GdkEvent* event) { |
| 685 HandleGrabBroke(); | 697 HandleGrabBroke(); |
| 686 return false; // To let other widgets get the event. | 698 return false; // To let other widgets get the event. |
| 687 } | 699 } |
| 688 | 700 |
| 689 void WidgetGtk::OnGrabNotify(GtkWidget* widget, gboolean was_grabbed) { | 701 void WidgetGtk::OnGrabNotify(GtkWidget* widget, gboolean was_grabbed) { |
| 690 gtk_grab_remove(window_contents_); | 702 gtk_grab_remove(window_contents_); |
| 691 HandleGrabBroke(); | 703 HandleGrabBroke(); |
| 692 } | 704 } |
| 693 | 705 |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 965 } | 977 } |
| 966 | 978 |
| 967 gboolean WidgetGtk::CallKeyRelease(GtkWidget* widget, GdkEventKey* event) { | 979 gboolean WidgetGtk::CallKeyRelease(GtkWidget* widget, GdkEventKey* event) { |
| 968 WidgetGtk* widget_gtk = GetViewForNative(widget); | 980 WidgetGtk* widget_gtk = GetViewForNative(widget); |
| 969 if (!widget_gtk) | 981 if (!widget_gtk) |
| 970 return false; | 982 return false; |
| 971 | 983 |
| 972 return widget_gtk->OnKeyRelease(widget, event); | 984 return widget_gtk->OnKeyRelease(widget, event); |
| 973 } | 985 } |
| 974 | 986 |
| 987 // static |
| 988 gboolean WidgetGtk::CallQueryTooltip(GtkWidget* widget, |
| 989 gint x, |
| 990 gint y, |
| 991 gboolean keyboard_mode, |
| 992 GtkTooltip* tooltip, |
| 993 WidgetGtk* host) { |
| 994 return host->OnQueryTooltip(x, y, keyboard_mode, tooltip); |
| 995 } |
| 996 |
| 975 gboolean WidgetGtk::CallScroll(GtkWidget* widget, GdkEventScroll* event) { | 997 gboolean WidgetGtk::CallScroll(GtkWidget* widget, GdkEventScroll* event) { |
| 976 WidgetGtk* widget_gtk = GetViewForNative(widget); | 998 WidgetGtk* widget_gtk = GetViewForNative(widget); |
| 977 if (!widget_gtk) | 999 if (!widget_gtk) |
| 978 return false; | 1000 return false; |
| 979 | 1001 |
| 980 return widget_gtk->OnScroll(widget, event); | 1002 return widget_gtk->OnScroll(widget, event); |
| 981 } | 1003 } |
| 982 | 1004 |
| 983 gboolean WidgetGtk::CallVisibilityNotify(GtkWidget* widget, | 1005 gboolean WidgetGtk::CallVisibilityNotify(GtkWidget* widget, |
| 984 GdkEventVisibility* event) { | 1006 GdkEventVisibility* event) { |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1071 | 1093 |
| 1072 // static | 1094 // static |
| 1073 Widget* Widget::CreateTransparentPopupWidget(bool delete_on_destroy) { | 1095 Widget* Widget::CreateTransparentPopupWidget(bool delete_on_destroy) { |
| 1074 WidgetGtk* popup = new WidgetGtk(WidgetGtk::TYPE_POPUP); | 1096 WidgetGtk* popup = new WidgetGtk(WidgetGtk::TYPE_POPUP); |
| 1075 popup->set_delete_on_destroy(delete_on_destroy); | 1097 popup->set_delete_on_destroy(delete_on_destroy); |
| 1076 popup->MakeTransparent(); | 1098 popup->MakeTransparent(); |
| 1077 return popup; | 1099 return popup; |
| 1078 } | 1100 } |
| 1079 | 1101 |
| 1080 } // namespace views | 1102 } // namespace views |
| OLD | NEW |