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 |