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/tab_contents/chrome_tab_contents_view_wrapper_gtk.h" | 5 #include "chrome/browser/tab_contents/chrome_tab_contents_view_wrapper_gtk.h" |
6 | 6 |
7 #include "chrome/browser/browser_shutdown.h" | 7 #include "chrome/browser/browser_shutdown.h" |
8 #include "chrome/browser/tab_contents/render_view_context_menu_gtk.h" | 8 #include "chrome/browser/tab_contents/render_view_context_menu_gtk.h" |
9 #include "chrome/browser/tab_contents/tab_contents_view_gtk.h" | 9 #include "chrome/browser/tab_contents/tab_contents_view_gtk.h" |
10 #include "chrome/browser/tab_contents/web_drag_bookmark_handler_gtk.h" | 10 #include "chrome/browser/tab_contents/web_drag_bookmark_handler_gtk.h" |
11 #include "chrome/browser/ui/gtk/constrained_window_gtk.h" | 11 #include "chrome/browser/ui/gtk/constrained_window_gtk.h" |
12 #include "content/browser/renderer_host/render_view_host.h" | 12 #include "content/browser/renderer_host/render_view_host.h" |
| 13 #include "content/browser/renderer_host/render_widget_host_view_gtk.h" |
13 #include "content/browser/tab_contents/interstitial_page.h" | 14 #include "content/browser/tab_contents/interstitial_page.h" |
14 #include "content/browser/tab_contents/tab_contents.h" | 15 #include "content/browser/tab_contents/tab_contents.h" |
15 #include "ui/base/gtk/gtk_floating_container.h" | 16 #include "ui/base/gtk/gtk_floating_container.h" |
16 | 17 |
17 ChromeTabContentsViewWrapperGtk::ChromeTabContentsViewWrapperGtk() | 18 ChromeTabContentsViewWrapperGtk::ChromeTabContentsViewWrapperGtk() |
18 : floating_(gtk_floating_container_new()), | 19 : floating_(gtk_floating_container_new()), |
19 view_(NULL), | 20 view_(NULL), |
20 constrained_window_(NULL) { | 21 constrained_window_(NULL) { |
21 gtk_widget_set_name(floating_.get(), "chrome-tab-contents-wrapper-view"); | 22 gtk_widget_set_name(floating_.get(), "chrome-tab-contents-wrapper-view"); |
22 g_signal_connect(floating_.get(), "set-floating-position", | 23 g_signal_connect(floating_.get(), "set-floating-position", |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 view_->tab_contents()->render_view_host()->process()->GetListenerByID( | 108 view_->tab_contents()->render_view_host()->process()->GetListenerByID( |
108 params.custom_context.render_widget_id); | 109 params.custom_context.render_widget_id); |
109 if (!listener) { | 110 if (!listener) { |
110 NOTREACHED(); | 111 NOTREACHED(); |
111 return; | 112 return; |
112 } | 113 } |
113 view = static_cast<RenderWidgetHost*>(listener)->view(); | 114 view = static_cast<RenderWidgetHost*>(listener)->view(); |
114 } else { | 115 } else { |
115 view = view_->tab_contents()->GetRenderWidgetHostView(); | 116 view = view_->tab_contents()->GetRenderWidgetHostView(); |
116 } | 117 } |
117 if (!view) | 118 RenderWidgetHostViewGtk* view_gtk = |
| 119 static_cast<RenderWidgetHostViewGtk*>(view); |
| 120 if (!view_gtk) |
118 return; | 121 return; |
119 | 122 |
120 context_menu_.reset(new RenderViewContextMenuGtk( | 123 context_menu_.reset(new RenderViewContextMenuGtk( |
121 view_->tab_contents(), params, GDK_CURRENT_TIME)); | 124 view_->tab_contents(), params, view_gtk->last_mouse_down() ? |
| 125 view_gtk->last_mouse_down()->time : GDK_CURRENT_TIME)); |
122 context_menu_->Init(); | 126 context_menu_->Init(); |
123 | 127 |
124 gfx::Rect bounds; | 128 gfx::Rect bounds; |
125 view_->GetContainerBounds(&bounds); | 129 view_->GetContainerBounds(&bounds); |
126 gfx::Point point = bounds.origin(); | 130 gfx::Point point = bounds.origin(); |
127 point.Offset(params.x, params.y); | 131 point.Offset(params.x, params.y); |
128 context_menu_->Popup(point); | 132 context_menu_->Popup(point); |
129 } | 133 } |
130 | 134 |
131 void ChromeTabContentsViewWrapperGtk::OnSetFloatingPosition( | 135 void ChromeTabContentsViewWrapperGtk::OnSetFloatingPosition( |
(...skipping 15 matching lines...) Expand all Loading... |
147 g_value_set_int(&value, child_x); | 151 g_value_set_int(&value, child_x); |
148 gtk_container_child_set_property(GTK_CONTAINER(floating_container), | 152 gtk_container_child_set_property(GTK_CONTAINER(floating_container), |
149 widget, "x", &value); | 153 widget, "x", &value); |
150 | 154 |
151 int child_y = std::max((allocation->height - requisition.height) / 2, 0); | 155 int child_y = std::max((allocation->height - requisition.height) / 2, 0); |
152 g_value_set_int(&value, child_y); | 156 g_value_set_int(&value, child_y); |
153 gtk_container_child_set_property(GTK_CONTAINER(floating_container), | 157 gtk_container_child_set_property(GTK_CONTAINER(floating_container), |
154 widget, "y", &value); | 158 widget, "y", &value); |
155 g_value_unset(&value); | 159 g_value_unset(&value); |
156 } | 160 } |
OLD | NEW |