| Index: views/controls/native/native_view_host_gtk.cc
|
| diff --git a/views/controls/native/native_view_host_gtk.cc b/views/controls/native/native_view_host_gtk.cc
|
| index 79a144dfcf039996cf814d7eb78da5b20675224b..2ba10b8d577fcaee0b9af0134abbd371e8438ccd 100644
|
| --- a/views/controls/native/native_view_host_gtk.cc
|
| +++ b/views/controls/native/native_view_host_gtk.cc
|
| @@ -10,6 +10,7 @@
|
| #include "base/logging.h"
|
| #include "views/controls/native/native_view_host.h"
|
| #include "views/focus/focus_manager.h"
|
| +#include "views/widget/gtk_views_fixed.h"
|
| #include "views/widget/widget_gtk.h"
|
|
|
| namespace views {
|
| @@ -228,13 +229,16 @@ void NativeViewHostGtk::ShowWidget(int x, int y, int w, int h) {
|
| fixed_h = std::min(installed_clip_bounds_.height(), h);
|
| }
|
|
|
| + // Don't call gtk_widget_size_allocate now, as we're possibly in the
|
| + // middle of a re-size, and it kicks off another re-size, and you
|
| + // get flashing. Instead, we'll set the desired size as properties
|
| + // on the widget and queue the re-size.
|
| + gtk_views_fixed_set_widget_size(host_->native_view(), child_w, child_h);
|
| + gtk_fixed_move(GTK_FIXED(fixed_), host_->native_view(), child_x, child_y);
|
| +
|
| // Size and place the fixed_.
|
| GetHostWidget()->PositionChild(fixed_, fixed_x, fixed_y, fixed_w, fixed_h);
|
|
|
| - // Size and place the hosted NativeView.
|
| - gtk_widget_set_size_request(host_->native_view(), child_w, child_h);
|
| - gtk_fixed_move(GTK_FIXED(fixed_), host_->native_view(), child_x, child_y);
|
| -
|
| gtk_widget_show(fixed_);
|
| gtk_widget_show(host_->native_view());
|
| }
|
| @@ -272,7 +276,7 @@ void NativeViewHostGtk::CreateFixed(bool needs_window) {
|
|
|
| DestroyFixed();
|
|
|
| - fixed_ = gtk_fixed_new();
|
| + fixed_ = gtk_views_fixed_new();
|
| gtk_widget_set_name(fixed_, "views-native-view-host-fixed");
|
| gtk_fixed_set_has_window(GTK_FIXED(fixed_), needs_window);
|
| // Defeat refcounting. We need to own the fixed.
|
|
|