OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/renderer_host/render_widget_host_view_gtk.h" | 5 #include "chrome/browser/renderer_host/render_widget_host_view_gtk.h" |
6 | 6 |
7 // If this gets included after the gtk headers, then a bunch of compiler | 7 // If this gets included after the gtk headers, then a bunch of compiler |
8 // errors happen because of a "#define Status int" in Xlib.h, which interacts | 8 // errors happen because of a "#define Status int" in Xlib.h, which interacts |
9 // badly with net::URLRequestStatus::Status. | 9 // badly with net::URLRequestStatus::Status. |
10 #include "chrome/common/render_messages.h" | 10 #include "chrome/common/render_messages.h" |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 | 112 |
113 gtk_widget_add_events(widget, GDK_EXPOSURE_MASK | | 113 gtk_widget_add_events(widget, GDK_EXPOSURE_MASK | |
114 GDK_POINTER_MOTION_MASK | | 114 GDK_POINTER_MOTION_MASK | |
115 GDK_BUTTON_PRESS_MASK | | 115 GDK_BUTTON_PRESS_MASK | |
116 GDK_BUTTON_RELEASE_MASK | | 116 GDK_BUTTON_RELEASE_MASK | |
117 GDK_KEY_PRESS_MASK | | 117 GDK_KEY_PRESS_MASK | |
118 GDK_KEY_RELEASE_MASK | | 118 GDK_KEY_RELEASE_MASK | |
119 GDK_FOCUS_CHANGE_MASK | | 119 GDK_FOCUS_CHANGE_MASK | |
120 GDK_ENTER_NOTIFY_MASK | | 120 GDK_ENTER_NOTIFY_MASK | |
121 GDK_LEAVE_NOTIFY_MASK); | 121 GDK_LEAVE_NOTIFY_MASK); |
122 gtk_widget_set_can_focus(widget, TRUE); | 122 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS); |
123 | 123 |
124 g_signal_connect(widget, "expose-event", | 124 g_signal_connect(widget, "expose-event", |
125 G_CALLBACK(OnExposeEvent), host_view); | 125 G_CALLBACK(OnExposeEvent), host_view); |
126 g_signal_connect(widget, "key-press-event", | 126 g_signal_connect(widget, "key-press-event", |
127 G_CALLBACK(OnKeyPressReleaseEvent), host_view); | 127 G_CALLBACK(OnKeyPressReleaseEvent), host_view); |
128 g_signal_connect(widget, "key-release-event", | 128 g_signal_connect(widget, "key-release-event", |
129 G_CALLBACK(OnKeyPressReleaseEvent), host_view); | 129 G_CALLBACK(OnKeyPressReleaseEvent), host_view); |
130 g_signal_connect(widget, "focus-in-event", | 130 g_signal_connect(widget, "focus-in-event", |
131 G_CALLBACK(OnFocusIn), host_view); | 131 G_CALLBACK(OnFocusIn), host_view); |
132 g_signal_connect(widget, "focus-out-event", | 132 g_signal_connect(widget, "focus-out-event", |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 !host_view->is_popup_first_mouse_release_ && !click_in_popup) { | 314 !host_view->is_popup_first_mouse_release_ && !click_in_popup) { |
315 host_view->host_->Shutdown(); | 315 host_view->host_->Shutdown(); |
316 return FALSE; | 316 return FALSE; |
317 } | 317 } |
318 event->x = x; | 318 event->x = x; |
319 event->y = y; | 319 event->y = y; |
320 } | 320 } |
321 | 321 |
322 // TODO(evanm): why is this necessary here but not in test shell? | 322 // TODO(evanm): why is this necessary here but not in test shell? |
323 // This logic is the same as GtkButton. | 323 // This logic is the same as GtkButton. |
324 if (event->type == GDK_BUTTON_PRESS && !gtk_widget_has_focus(widget)) | 324 if (event->type == GDK_BUTTON_PRESS && !GTK_WIDGET_HAS_FOCUS(widget)) |
325 gtk_widget_grab_focus(widget); | 325 gtk_widget_grab_focus(widget); |
326 | 326 |
327 host_view->is_popup_first_mouse_release_ = false; | 327 host_view->is_popup_first_mouse_release_ = false; |
328 host_view->GetRenderWidgetHost()->ForwardMouseEvent( | 328 host_view->GetRenderWidgetHost()->ForwardMouseEvent( |
329 WebInputEventFactory::mouseEvent(event)); | 329 WebInputEventFactory::mouseEvent(event)); |
330 | 330 |
331 // Although we did handle the mouse event, we need to let other handlers | 331 // Although we did handle the mouse event, we need to let other handlers |
332 // run (in particular the one installed by TabContentsViewGtk). | 332 // run (in particular the one installed by TabContentsViewGtk). |
333 return FALSE; | 333 return FALSE; |
334 } | 334 } |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
688 | 688 |
689 void RenderWidgetHostViewGtk::Show() { | 689 void RenderWidgetHostViewGtk::Show() { |
690 gtk_widget_show(view_.get()); | 690 gtk_widget_show(view_.get()); |
691 } | 691 } |
692 | 692 |
693 void RenderWidgetHostViewGtk::Hide() { | 693 void RenderWidgetHostViewGtk::Hide() { |
694 gtk_widget_hide(view_.get()); | 694 gtk_widget_hide(view_.get()); |
695 } | 695 } |
696 | 696 |
697 bool RenderWidgetHostViewGtk::IsShowing() { | 697 bool RenderWidgetHostViewGtk::IsShowing() { |
698 return gtk_widget_get_visible(view_.get()); | 698 // TODO(jcivelli): use gtk_widget_get_visible once we build with GTK 2.18. |
| 699 return (GTK_WIDGET_FLAGS(view_.get()) & GTK_VISIBLE) != 0; |
699 } | 700 } |
700 | 701 |
701 gfx::Rect RenderWidgetHostViewGtk::GetViewBounds() const { | 702 gfx::Rect RenderWidgetHostViewGtk::GetViewBounds() const { |
702 GtkAllocation* alloc = &view_.get()->allocation; | 703 GtkAllocation* alloc = &view_.get()->allocation; |
703 return gfx::Rect(alloc->x, alloc->y, | 704 return gfx::Rect(alloc->x, alloc->y, |
704 requested_size_.width(), | 705 requested_size_.width(), |
705 requested_size_.height()); | 706 requested_size_.height()); |
706 } | 707 } |
707 | 708 |
708 void RenderWidgetHostViewGtk::UpdateCursor(const WebCursor& cursor) { | 709 void RenderWidgetHostViewGtk::UpdateCursor(const WebCursor& cursor) { |
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1187 } | 1188 } |
1188 | 1189 |
1189 // static | 1190 // static |
1190 RenderWidgetHostView* | 1191 RenderWidgetHostView* |
1191 RenderWidgetHostView::GetRenderWidgetHostViewFromNativeView( | 1192 RenderWidgetHostView::GetRenderWidgetHostViewFromNativeView( |
1192 gfx::NativeView widget) { | 1193 gfx::NativeView widget) { |
1193 gpointer user_data = g_object_get_data(G_OBJECT(widget), | 1194 gpointer user_data = g_object_get_data(G_OBJECT(widget), |
1194 kRenderWidgetHostViewKey); | 1195 kRenderWidgetHostViewKey); |
1195 return reinterpret_cast<RenderWidgetHostView*>(user_data); | 1196 return reinterpret_cast<RenderWidgetHostView*>(user_data); |
1196 } | 1197 } |
OLD | NEW |