| Index: chrome/browser/tab_contents/tab_contents_view_gtk.cc
|
| diff --git a/chrome/browser/tab_contents/tab_contents_view_gtk.cc b/chrome/browser/tab_contents/tab_contents_view_gtk.cc
|
| index 332c7cd852e5db7158cfc15d265e74092670adf5..736dcac708578035f4a0fa8ad846c7ade868d99b 100644
|
| --- a/chrome/browser/tab_contents/tab_contents_view_gtk.cc
|
| +++ b/chrome/browser/tab_contents/tab_contents_view_gtk.cc
|
| @@ -119,7 +119,8 @@ TabContentsViewGtk::TabContentsViewGtk(TabContents* tab_contents)
|
| : TabContentsView(tab_contents),
|
| floating_(gtk_floating_container_new()),
|
| fixed_(gtk_fixed_new()),
|
| - popup_view_(NULL) {
|
| + popup_view_(NULL),
|
| + constrained_window_(NULL) {
|
| gtk_widget_set_name(fixed_, "chrome-tab-contents-view");
|
| g_signal_connect(fixed_, "size-allocate",
|
| G_CALLBACK(OnSizeAllocate), this);
|
| @@ -155,24 +156,20 @@ void TabContentsViewGtk::RemoveBlockedPopupView(
|
|
|
| void TabContentsViewGtk::AttachConstrainedWindow(
|
| ConstrainedWindowGtk* constrained_window) {
|
| - DCHECK(find(constrained_windows_.begin(), constrained_windows_.end(),
|
| - constrained_window) == constrained_windows_.end());
|
| + DCHECK(constrained_window_ == NULL);
|
|
|
| - constrained_windows_.push_back(constrained_window);
|
| + constrained_window_ = constrained_window;
|
| gtk_floating_container_add_floating(GTK_FLOATING_CONTAINER(floating_.get()),
|
| constrained_window->widget());
|
| }
|
|
|
| void TabContentsViewGtk::RemoveConstrainedWindow(
|
| ConstrainedWindowGtk* constrained_window) {
|
| - std::vector<ConstrainedWindowGtk*>::iterator item =
|
| - find(constrained_windows_.begin(), constrained_windows_.end(),
|
| - constrained_window);
|
| - DCHECK(item != constrained_windows_.end());
|
| + DCHECK(constrained_window == constrained_window_);
|
|
|
| + constrained_window_ = NULL;
|
| gtk_container_remove(GTK_CONTAINER(floating_.get()),
|
| constrained_window->widget());
|
| - constrained_windows_.erase(item);
|
| }
|
|
|
| void TabContentsViewGtk::CreateView(const gfx::Size& initial_size) {
|
| @@ -450,15 +447,11 @@ void TabContentsViewGtk::OnSetFloatingPosition(
|
| g_value_unset(&value);
|
| }
|
|
|
| - // Place each ConstrainedWindow in the center of the view.
|
| + // Place the ConstrainedWindow in the center of the view.
|
| int half_view_width = std::max((allocation->x + allocation->width) / 2, 0);
|
| int half_view_height = std::max((allocation->y + allocation->height) / 2, 0);
|
| - std::vector<ConstrainedWindowGtk*>::iterator it =
|
| - tab_contents_view->constrained_windows_.begin();
|
| - std::vector<ConstrainedWindowGtk*>::iterator end =
|
| - tab_contents_view->constrained_windows_.end();
|
| - for (; it != end; ++it) {
|
| - GtkWidget* widget = (*it)->widget();
|
| + if (tab_contents_view->constrained_window_) {
|
| + GtkWidget* widget = tab_contents_view->constrained_window_->widget();
|
| DCHECK(widget->parent == tab_contents_view->floating_.get());
|
|
|
| GtkRequisition requisition;
|
|
|