Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2848)

Unified Diff: chrome/browser/ui/gtk/tab_contents_container_gtk.cc

Issue 231733005: Delete the GTK+ port of Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remerge to ToT Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/gtk/tab_contents_container_gtk.cc
diff --git a/chrome/browser/ui/gtk/tab_contents_container_gtk.cc b/chrome/browser/ui/gtk/tab_contents_container_gtk.cc
deleted file mode 100644
index 64f635a9e9764fb84b7fafa32be71619017985e1..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/gtk/tab_contents_container_gtk.cc
+++ /dev/null
@@ -1,212 +0,0 @@
-// Copyright 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/gtk/tab_contents_container_gtk.h"
-
-#include <algorithm>
-
-#include "base/i18n/rtl.h"
-#include "chrome/browser/ui/gtk/status_bubble_gtk.h"
-#include "content/public/browser/render_widget_host_view.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_contents_view.h"
-#include "ui/base/gtk/gtk_expanded_container.h"
-#include "ui/base/gtk/gtk_floating_container.h"
-#include "ui/gfx/native_widget_types.h"
-
-namespace {
-void HideWidget(GtkWidget* widget, gpointer ignored) {
- gtk_widget_hide(widget);
-}
-} // namespace
-
-TabContentsContainerGtk::TabContentsContainerGtk(StatusBubbleGtk* status_bubble,
- bool embed_fullscreen_widget)
- : status_bubble_(status_bubble),
- should_embed_fullscreen_widgets_(embed_fullscreen_widget),
- is_embedding_fullscreen_widget_(false) {
- // A high level overview of the TabContentsContainer:
- //
- // +- GtkFloatingContainer |floating_| -------------------------------+
- // |+- GtkExpandedContainer |expanded_| -----------------------------+|
- // || ||
- // || ||
- // || ||
- // || ||
- // |+- (StatusBubble) ------+ ||
- // |+ + ||
- // |+-----------------------+----------------------------------------+|
- // +------------------------------------------------------------------+
-
- floating_.Own(gtk_floating_container_new());
- gtk_widget_set_name(floating_.get(), "chrome-tab-contents-container");
-
- expanded_ = gtk_expanded_container_new();
- gtk_container_add(GTK_CONTAINER(floating_.get()), expanded_);
-
- if (status_bubble_) {
- gtk_floating_container_add_floating(GTK_FLOATING_CONTAINER(floating_.get()),
- status_bubble_->widget());
- g_signal_connect(floating_.get(), "set-floating-position",
- G_CALLBACK(OnSetFloatingPosition), this);
- }
-
- gtk_widget_show(expanded_);
- gtk_widget_show(floating_.get());
-
- ViewIDUtil::SetDelegateForWidget(widget(), this);
-}
-
-TabContentsContainerGtk::~TabContentsContainerGtk() {
- floating_.Destroy();
-}
-
-void TabContentsContainerGtk::SetTab(content::WebContents* tab) {
- if (tab == web_contents())
- return;
-
- HideTab();
- WebContentsObserver::Observe(tab);
- is_embedding_fullscreen_widget_ =
- should_embed_fullscreen_widgets_ &&
- tab && tab->GetFullscreenRenderWidgetHostView();
- PackTab();
-}
-
-void TabContentsContainerGtk::PackTab() {
- content::WebContents* const tab = web_contents();
- if (!tab)
- return;
-
- const gfx::NativeView widget = is_embedding_fullscreen_widget_ ?
- tab->GetFullscreenRenderWidgetHostView()->GetNativeView() :
- tab->GetView()->GetNativeView();
- if (widget) {
- if (gtk_widget_get_parent(widget) != expanded_)
- gtk_container_add(GTK_CONTAINER(expanded_), widget);
- gtk_widget_show(widget);
- }
-
- if (is_embedding_fullscreen_widget_)
- return;
-
- tab->WasShown();
-
- // Make sure that the tab is below the find bar. Sometimes the content
- // native view will be null.
- GtkWidget* const content_widget = tab->GetView()->GetContentNativeView();
- if (content_widget) {
- GdkWindow* const content_gdk_window = gtk_widget_get_window(content_widget);
- if (content_gdk_window)
- gdk_window_lower(content_gdk_window);
- }
-}
-
-void TabContentsContainerGtk::HideTab() {
- content::WebContents* const tab = web_contents();
- if (!tab)
- return;
-
- gtk_container_foreach(GTK_CONTAINER(expanded_), &HideWidget, NULL);
- if (is_embedding_fullscreen_widget_)
- return;
- tab->WasHidden();
-}
-
-void TabContentsContainerGtk::DetachTab(content::WebContents* tab) {
- if (!tab)
- return;
- if (tab == web_contents()) {
- HideTab();
- WebContentsObserver::Observe(NULL);
- }
-
- const gfx::NativeView widget = tab->GetView()->GetNativeView();
- const gfx::NativeView fs_widget =
- (should_embed_fullscreen_widgets_ &&
- tab->GetFullscreenRenderWidgetHostView()) ?
- tab->GetFullscreenRenderWidgetHostView()->GetNativeView() : NULL;
-
- // It is possible to detach an unrealized, unparented WebContents if you
- // slow things down enough in valgrind. Might happen in the real world, too.
- if (widget) {
- GtkWidget* const parent = gtk_widget_get_parent(widget);
- if (parent) {
- DCHECK_EQ(parent, expanded_);
- gtk_container_remove(GTK_CONTAINER(expanded_), widget);
- }
- }
- if (fs_widget) {
- GtkWidget* const parent = gtk_widget_get_parent(fs_widget);
- if (parent) {
- DCHECK_EQ(parent, expanded_);
- gtk_container_remove(GTK_CONTAINER(expanded_), fs_widget);
- }
- }
-}
-
-void TabContentsContainerGtk::WebContentsDestroyed(
- content::WebContents* contents) {
- // Sometimes, a WebContents is destroyed before we know about it. This allows
- // us to clean up our state in case this happens.
- DetachTab(contents);
-}
-
-// -----------------------------------------------------------------------------
-// ViewIDUtil::Delegate implementation
-
-GtkWidget* TabContentsContainerGtk::GetWidgetForViewID(ViewID view_id) {
- if (view_id == VIEW_ID_TAB_CONTAINER)
- return widget();
-
- return NULL;
-}
-
-// -----------------------------------------------------------------------------
-
-void TabContentsContainerGtk::DidShowFullscreenWidget(int routing_id) {
- if (!should_embed_fullscreen_widgets_)
- return;
- HideTab();
- is_embedding_fullscreen_widget_ =
- web_contents() && web_contents()->GetFullscreenRenderWidgetHostView();
- PackTab();
-}
-
-void TabContentsContainerGtk::DidDestroyFullscreenWidget(int routing_id) {
- if (!should_embed_fullscreen_widgets_)
- return;
- HideTab();
- is_embedding_fullscreen_widget_ = false;
- PackTab();
-}
-
-// static
-void TabContentsContainerGtk::OnSetFloatingPosition(
- GtkFloatingContainer* floating_container, GtkAllocation* allocation,
- TabContentsContainerGtk* tab_contents_container) {
- StatusBubbleGtk* status = tab_contents_container->status_bubble_;
-
- // Look at the size request of the status bubble and tell the
- // GtkFloatingContainer where we want it positioned.
- GtkRequisition requisition;
- gtk_widget_size_request(status->widget(), &requisition);
-
- bool ltr = !base::i18n::IsRTL();
-
- GValue value = { 0, };
- g_value_init(&value, G_TYPE_INT);
- if (ltr ^ status->flip_horizontally()) // Is it on the left?
- g_value_set_int(&value, 0);
- else
- g_value_set_int(&value, allocation->width - requisition.width);
- gtk_container_child_set_property(GTK_CONTAINER(floating_container),
- status->widget(), "x", &value);
-
- int child_y = std::max(allocation->height - requisition.height, 0);
- g_value_set_int(&value, child_y + status->y_offset());
- gtk_container_child_set_property(GTK_CONTAINER(floating_container),
- status->widget(), "y", &value);
- g_value_unset(&value);
-}

Powered by Google App Engine
This is Rietveld 408576698