| OLD | NEW |
| 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/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 URLRequestStatus::Status. | 9 // badly with URLRequestStatus::Status. |
| 10 #include "chrome/common/render_messages.h" | 10 #include "chrome/common/render_messages.h" |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 GDK_POINTER_MOTION_MASK | | 59 GDK_POINTER_MOTION_MASK | |
| 60 GDK_BUTTON_PRESS_MASK | | 60 GDK_BUTTON_PRESS_MASK | |
| 61 GDK_BUTTON_RELEASE_MASK | | 61 GDK_BUTTON_RELEASE_MASK | |
| 62 GDK_KEY_PRESS_MASK | | 62 GDK_KEY_PRESS_MASK | |
| 63 GDK_KEY_RELEASE_MASK | | 63 GDK_KEY_RELEASE_MASK | |
| 64 GDK_FOCUS_CHANGE_MASK | | 64 GDK_FOCUS_CHANGE_MASK | |
| 65 GDK_ENTER_NOTIFY_MASK | | 65 GDK_ENTER_NOTIFY_MASK | |
| 66 GDK_LEAVE_NOTIFY_MASK); | 66 GDK_LEAVE_NOTIFY_MASK); |
| 67 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS); | 67 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS); |
| 68 | 68 |
| 69 g_signal_connect(widget, "size-allocate", | |
| 70 G_CALLBACK(SizeAllocate), host_view); | |
| 71 g_signal_connect(widget, "expose-event", | 69 g_signal_connect(widget, "expose-event", |
| 72 G_CALLBACK(ExposeEvent), host_view); | 70 G_CALLBACK(ExposeEvent), host_view); |
| 73 g_signal_connect(widget, "key-press-event", | 71 g_signal_connect(widget, "key-press-event", |
| 74 G_CALLBACK(KeyPressReleaseEvent), host_view); | 72 G_CALLBACK(KeyPressReleaseEvent), host_view); |
| 75 g_signal_connect(widget, "key-release-event", | 73 g_signal_connect(widget, "key-release-event", |
| 76 G_CALLBACK(KeyPressReleaseEvent), host_view); | 74 G_CALLBACK(KeyPressReleaseEvent), host_view); |
| 77 g_signal_connect(widget, "focus-in-event", | 75 g_signal_connect(widget, "focus-in-event", |
| 78 G_CALLBACK(OnFocusIn), host_view); | 76 G_CALLBACK(OnFocusIn), host_view); |
| 79 g_signal_connect(widget, "focus-out-event", | 77 g_signal_connect(widget, "focus-out-event", |
| 80 G_CALLBACK(OnFocusOut), host_view); | 78 G_CALLBACK(OnFocusOut), host_view); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 93 | 91 |
| 94 // Connect after so that we are called after the handler installed by the | 92 // Connect after so that we are called after the handler installed by the |
| 95 // TabContentsView which handles zoom events. | 93 // TabContentsView which handles zoom events. |
| 96 g_signal_connect_after(widget, "scroll-event", | 94 g_signal_connect_after(widget, "scroll-event", |
| 97 G_CALLBACK(MouseScrollEvent), host_view); | 95 G_CALLBACK(MouseScrollEvent), host_view); |
| 98 | 96 |
| 99 return widget; | 97 return widget; |
| 100 } | 98 } |
| 101 | 99 |
| 102 private: | 100 private: |
| 103 static gboolean SizeAllocate(GtkWidget* widget, GtkAllocation* allocation, | |
| 104 RenderWidgetHostViewGtk* host_view) { | |
| 105 host_view->requested_size_ = gfx::Size(allocation->width, | |
| 106 allocation->height); | |
| 107 host_view->GetRenderWidgetHost()->WasResized(); | |
| 108 return FALSE; | |
| 109 } | |
| 110 | |
| 111 static gboolean ExposeEvent(GtkWidget* widget, GdkEventExpose* expose, | 101 static gboolean ExposeEvent(GtkWidget* widget, GdkEventExpose* expose, |
| 112 RenderWidgetHostViewGtk* host_view) { | 102 RenderWidgetHostViewGtk* host_view) { |
| 113 const gfx::Rect damage_rect(expose->area); | 103 const gfx::Rect damage_rect(expose->area); |
| 114 host_view->Paint(damage_rect); | 104 host_view->Paint(damage_rect); |
| 115 return FALSE; | 105 return FALSE; |
| 116 } | 106 } |
| 117 | 107 |
| 118 static gboolean KeyPressReleaseEvent(GtkWidget* widget, GdkEventKey* event, | 108 static gboolean KeyPressReleaseEvent(GtkWidget* widget, GdkEventKey* event, |
| 119 RenderWidgetHostViewGtk* host_view) { | 109 RenderWidgetHostViewGtk* host_view) { |
| 120 if (host_view->parent_ && host_view->activatable() && | 110 if (host_view->parent_ && host_view->activatable() && |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 // We're a popup, honor the size request. | 400 // We're a popup, honor the size request. |
| 411 gtk_widget_set_size_request(view_.get(), width, height); | 401 gtk_widget_set_size_request(view_.get(), width, height); |
| 412 } else { | 402 } else { |
| 413 #if defined(TOOLKIT_VIEWS) | 403 #if defined(TOOLKIT_VIEWS) |
| 414 // TOOLKIT_VIEWS' resize logic flow matches windows. so we go ahead and | 404 // TOOLKIT_VIEWS' resize logic flow matches windows. so we go ahead and |
| 415 // size the widget. In GTK+, the size of the widget is determined by it's | 405 // size the widget. In GTK+, the size of the widget is determined by it's |
| 416 // children. | 406 // children. |
| 417 gtk_widget_set_size_request(view_.get(), width, height); | 407 gtk_widget_set_size_request(view_.get(), width, height); |
| 418 #endif | 408 #endif |
| 419 | 409 |
| 420 requested_size_ = gfx::Size(width, height); | 410 if (requested_size_.width() != width || |
| 421 host_->WasResized(); | 411 requested_size_.height() != height) { |
| 412 requested_size_ = gfx::Size(width, height); |
| 413 host_->WasResized(); |
| 414 } |
| 422 } | 415 } |
| 423 } | 416 } |
| 424 | 417 |
| 425 gfx::NativeView RenderWidgetHostViewGtk::GetNativeView() { | 418 gfx::NativeView RenderWidgetHostViewGtk::GetNativeView() { |
| 426 return view_.get(); | 419 return view_.get(); |
| 427 } | 420 } |
| 428 | 421 |
| 429 void RenderWidgetHostViewGtk::MovePluginWindows( | 422 void RenderWidgetHostViewGtk::MovePluginWindows( |
| 430 const std::vector<webkit_glue::WebPluginGeometry>& moves) { | 423 const std::vector<webkit_glue::WebPluginGeometry>& moves) { |
| 431 for (size_t i = 0; i < moves.size(); ++i) { | 424 for (size_t i = 0; i < moves.size(); ++i) { |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 664 const NativeWebKeyboardEvent& event) { | 657 const NativeWebKeyboardEvent& event) { |
| 665 if (!host_) | 658 if (!host_) |
| 666 return; | 659 return; |
| 667 | 660 |
| 668 EditCommands edit_commands; | 661 EditCommands edit_commands; |
| 669 if (key_bindings_handler_->Match(event, &edit_commands)) { | 662 if (key_bindings_handler_->Match(event, &edit_commands)) { |
| 670 host_->ForwardEditCommandsForNextKeyEvent(edit_commands); | 663 host_->ForwardEditCommandsForNextKeyEvent(edit_commands); |
| 671 } | 664 } |
| 672 host_->ForwardKeyboardEvent(event); | 665 host_->ForwardKeyboardEvent(event); |
| 673 } | 666 } |
| OLD | NEW |