| Index: webkit/glue/plugins/webplugin_delegate_impl_gtk.cc
|
| diff --git a/webkit/glue/plugins/webplugin_delegate_impl_gtk.cc b/webkit/glue/plugins/webplugin_delegate_impl_gtk.cc
|
| index f5838761657cd60e9c7bcd08cf62302fc50d8087..49670fc91a8178cf3bc44fdf7bdc13058a6e85e3 100644
|
| --- a/webkit/glue/plugins/webplugin_delegate_impl_gtk.cc
|
| +++ b/webkit/glue/plugins/webplugin_delegate_impl_gtk.cc
|
| @@ -38,7 +38,7 @@ using WebKit::WebMouseEvent;
|
| WebPluginDelegate* WebPluginDelegate::Create(
|
| const FilePath& filename,
|
| const std::string& mime_type,
|
| - gfx::NativeView containing_view) {
|
| + gfx::PluginWindowHandle containing_view) {
|
| scoped_refptr<NPAPI::PluginLib> plugin =
|
| NPAPI::PluginLib::CreatePluginLib(filename);
|
| if (plugin.get() == NULL)
|
| @@ -54,7 +54,7 @@ WebPluginDelegate* WebPluginDelegate::Create(
|
| }
|
|
|
| WebPluginDelegateImpl::WebPluginDelegateImpl(
|
| - gfx::NativeView containing_view,
|
| + gfx::PluginWindowHandle containing_view,
|
| NPAPI::PluginInstance *instance)
|
| :
|
| windowed_handle_(0),
|
| @@ -263,63 +263,40 @@ bool WebPluginDelegateImpl::WindowedCreatePlugin() {
|
| return false;
|
| }
|
|
|
| - windowed_handle_ = gtk_plugin_container_new();
|
| - gtk_container_add(GTK_CONTAINER(parent_), windowed_handle_);
|
| - gtk_widget_show(windowed_handle_);
|
| - gtk_widget_realize(windowed_handle_);
|
| -
|
| - window_.window = GINT_TO_POINTER(
|
| - gtk_socket_get_id(GTK_SOCKET(windowed_handle_)));
|
| + window_.window = reinterpret_cast<void*>(parent_);
|
| + // The remainder of the code expects windowed_handle_ to exist for
|
| + // windowed mode, despite not actually ever reaching through
|
| + // windowed_handle_. So let's set it to the one window handle we
|
| + // actually have available.
|
| + windowed_handle_ = parent_;
|
|
|
| if (!window_.ws_info)
|
| window_.ws_info = new NPSetWindowCallbackStruct;
|
| NPSetWindowCallbackStruct* extra =
|
| static_cast<NPSetWindowCallbackStruct*>(window_.ws_info);
|
| - extra->display = GDK_WINDOW_XDISPLAY(windowed_handle_->window);
|
| - GdkVisual* visual = gdk_drawable_get_visual(windowed_handle_->window);
|
| - extra->visual = GDK_VISUAL_XVISUAL(visual);
|
| - extra->depth = visual->depth;
|
| - extra->colormap = GDK_COLORMAP_XCOLORMAP(gdk_drawable_get_colormap(windowed_handle_->window));
|
| + extra->display = GDK_DISPLAY();
|
| + extra->visual = DefaultVisual(GDK_DISPLAY(), 0);
|
| + extra->depth = DefaultDepth(GDK_DISPLAY(), 0);
|
| + extra->colormap = DefaultColormap(GDK_DISPLAY(), 0);
|
|
|
| return true;
|
| }
|
|
|
| void WebPluginDelegateImpl::WindowedDestroyWindow() {
|
| - if (windowed_handle_ != NULL) {
|
| - gtk_widget_destroy(windowed_handle_);
|
| - windowed_handle_ = NULL;
|
| - }
|
| + // We have no window to destroy; see comment in WindowedCreatePlugin
|
| + // where windowed_handle_ is set.
|
| + windowed_handle_ = 0;
|
| }
|
|
|
| bool WebPluginDelegateImpl::WindowedReposition(
|
| const gfx::Rect& window_rect,
|
| const gfx::Rect& clip_rect) {
|
| - if (!windowed_handle_) {
|
| - NOTREACHED();
|
| - return false;
|
| - }
|
| -
|
| - if (window_rect_ == window_rect && clip_rect_ == clip_rect)
|
| + if (window_rect == window_rect_ && clip_rect == clip_rect_)
|
| return false;
|
|
|
| - // We only set the plugin's size here. Its position is moved elsewhere, which
|
| - // allows the window moves/scrolling/clipping to be synchronized with the page
|
| - // and other windows.
|
| - if (window_rect.size() != window_rect_.size()) {
|
| - gtk_plugin_container_set_size(windowed_handle_, window_rect.width(),
|
| - window_rect.height());
|
| - GtkAllocation allocation = { 0, 0,
|
| - window_rect.width(), window_rect.height() };
|
| - gtk_widget_size_allocate(windowed_handle_, &allocation);
|
| - }
|
| -
|
| window_rect_ = window_rect;
|
| clip_rect_ = clip_rect;
|
|
|
| - // TODO(deanm): Is this really needed?
|
| - // Ensure that the entire window gets repainted.
|
| - gtk_widget_queue_draw(windowed_handle_);
|
| -
|
| return true;
|
| }
|
|
|
|
|