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

Unified Diff: chrome/browser/ui/gtk/tab_contents/chrome_web_contents_view_delegate_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/chrome_web_contents_view_delegate_gtk.cc
diff --git a/chrome/browser/ui/gtk/tab_contents/chrome_web_contents_view_delegate_gtk.cc b/chrome/browser/ui/gtk/tab_contents/chrome_web_contents_view_delegate_gtk.cc
deleted file mode 100644
index 71dab10f0b501c060d5bf526c0e7666c9422dead..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/gtk/tab_contents/chrome_web_contents_view_delegate_gtk.cc
+++ /dev/null
@@ -1,206 +0,0 @@
-// Copyright (c) 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/chrome_web_contents_view_delegate_gtk.h"
-
-#include <map>
-
-#include "base/lazy_instance.h"
-#include "chrome/browser/browser_shutdown.h"
-#include "chrome/browser/ui/gtk/constrained_window_gtk.h"
-#include "chrome/browser/ui/gtk/renderer_context_menu/render_view_context_menu_gtk.h"
-#include "chrome/browser/ui/gtk/tab_contents/web_drag_bookmark_handler_gtk.h"
-#include "chrome/browser/ui/tab_contents/chrome_web_contents_view_delegate.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/render_view_host.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/focus_store_gtk.h"
-#include "ui/base/gtk/gtk_floating_container.h"
-
-namespace {
-
-const char kViewDelegateUserDataKey[] = "ChromeWebContentsViewDelegateGtk";
-
-class ViewDelegateUserData : public base::SupportsUserData::Data {
- public:
- explicit ViewDelegateUserData(ChromeWebContentsViewDelegateGtk* view_delegate)
- : view_delegate_(view_delegate) {}
- virtual ~ViewDelegateUserData() {}
- ChromeWebContentsViewDelegateGtk* view_delegate() { return view_delegate_; }
-
- private:
- ChromeWebContentsViewDelegateGtk* view_delegate_; // unowned
-};
-
-} // namespace
-
-ChromeWebContentsViewDelegateGtk* ChromeWebContentsViewDelegateGtk::GetFor(
- content::WebContents* web_contents) {
- ViewDelegateUserData* user_data = static_cast<ViewDelegateUserData*>(
- web_contents->GetUserData(&kViewDelegateUserDataKey));
-
- return user_data ? user_data->view_delegate() : NULL;
-}
-
-ChromeWebContentsViewDelegateGtk::ChromeWebContentsViewDelegateGtk(
- content::WebContents* web_contents)
- : floating_(gtk_floating_container_new()),
- web_contents_modal_dialog_(NULL),
- web_contents_(web_contents),
- expanded_container_(NULL),
- focus_store_(NULL) {
- g_object_ref_sink(floating_.get());
- gtk_widget_set_name(floating_.get(), "chrome-tab-contents-view");
- g_signal_connect(floating_.get(), "set-floating-position",
- G_CALLBACK(OnSetFloatingPositionThunk), this);
-
- // Stash this in the WebContents.
- web_contents->SetUserData(&kViewDelegateUserDataKey,
- new ViewDelegateUserData(this));
-}
-
-ChromeWebContentsViewDelegateGtk::~ChromeWebContentsViewDelegateGtk() {
-}
-
-void ChromeWebContentsViewDelegateGtk::AttachWebContentsModalDialog(
- GtkWidget* web_contents_modal_dialog) {
- DCHECK(web_contents_modal_dialog_ == NULL);
-
- web_contents_modal_dialog_ = web_contents_modal_dialog;
- gtk_floating_container_add_floating(GTK_FLOATING_CONTAINER(floating_.get()),
- web_contents_modal_dialog);
-}
-
-void ChromeWebContentsViewDelegateGtk::RemoveWebContentsModalDialog(
- GtkWidget* web_contents_modal_dialog) {
- DCHECK(web_contents_modal_dialog == web_contents_modal_dialog_);
-
- web_contents_modal_dialog_ = NULL;
-}
-
-void ChromeWebContentsViewDelegateGtk::Initialize(
- GtkWidget* expanded_container, ui::FocusStoreGtk* focus_store) {
- expanded_container_ = expanded_container;
- focus_store_ = focus_store;
- // We install a chrome specific handler to intercept bookmark drags for the
- // bookmark manager/extension API.
- bookmark_handler_gtk_.reset(new WebDragBookmarkHandlerGtk);
-
- gtk_container_add(GTK_CONTAINER(floating_.get()), expanded_container);
- gtk_widget_show(floating_.get());
-}
-
-gfx::NativeView ChromeWebContentsViewDelegateGtk::GetNativeView() const {
- return floating_.get();
-}
-
-void ChromeWebContentsViewDelegateGtk::Focus() {
- if (!web_contents_modal_dialog_) {
- GtkWidget* widget = web_contents_->GetView()->GetContentNativeView();
- if (widget)
- gtk_widget_grab_focus(widget);
- }
-}
-
-gboolean ChromeWebContentsViewDelegateGtk::OnNativeViewFocusEvent(
- GtkWidget* widget,
- GtkDirectionType type,
- gboolean* return_value) {
- // If we are showing a web contents modal dialog, don't allow the native view
- // to take focus.
- if (web_contents_modal_dialog_) {
- // If we return false, it will revert to the default handler, which will
- // take focus. We don't want that. But if we return true, the event will
- // stop being propagated, leaving focus wherever it is currently. That is
- // also bad. So we return false to let the default handler run, but take
- // focus first so as to trick it into thinking the view was already focused
- // and allowing the event to propagate.
- gtk_widget_grab_focus(widget);
- *return_value = FALSE;
- return TRUE;
- }
-
- // Let the default WebContentsViewGtk::OnFocus() behaviour run.
- return FALSE;
-}
-
-void ChromeWebContentsViewDelegateGtk::ShowContextMenu(
- content::RenderFrameHost* render_frame_host,
- const content::ContextMenuParams& params) {
- // Find out the RenderWidgetHostView that corresponds to the render widget on
- // which this context menu is showed, so that we can retrieve the last mouse
- // down event on the render widget and use it as the timestamp of the
- // activation event to show the context menu.
- content::RenderWidgetHostView* view = NULL;
- if (params.custom_context.render_widget_id !=
- content::CustomContextMenuContext::kCurrentRenderWidget) {
- content::RenderWidgetHost* host = content::RenderWidgetHost::FromID(
- web_contents_->GetRenderProcessHost()->GetID(),
- params.custom_context.render_widget_id);
- if (!host) {
- NOTREACHED();
- return;
- }
- view = host->GetView();
- } else {
- view = web_contents_->GetRenderWidgetHostView();
- }
-
- context_menu_.reset(
- new RenderViewContextMenuGtk(render_frame_host, params, view));
- context_menu_->Init();
-
- // Don't show empty menus.
- if (context_menu_->menu_model().GetItemCount() == 0)
- return;
-
- gfx::Rect bounds;
- web_contents_->GetView()->GetContainerBounds(&bounds);
- gfx::Point point = bounds.origin();
- point.Offset(params.x, params.y);
- context_menu_->Popup(point);
-}
-
-content::WebDragDestDelegate*
- ChromeWebContentsViewDelegateGtk::GetDragDestDelegate() {
- return bookmark_handler_gtk_.get();
-}
-
-void ChromeWebContentsViewDelegateGtk::OnSetFloatingPosition(
- GtkWidget* floating_container, GtkAllocation* allocation) {
- if (!web_contents_modal_dialog_)
- return;
-
- // Place each web contents modal dialog in the center of the view.
- GtkWidget* widget = web_contents_modal_dialog_;
- DCHECK(gtk_widget_get_parent(widget) == floating_.get());
-
- GtkRequisition requisition;
- gtk_widget_size_request(widget, &requisition);
-
- GValue value = { 0, };
- g_value_init(&value, G_TYPE_INT);
-
- int child_x = std::max((allocation->width - requisition.width) / 2, 0);
- g_value_set_int(&value, child_x);
- gtk_container_child_set_property(GTK_CONTAINER(floating_container),
- widget, "x", &value);
-
- int child_y = std::max((allocation->height - requisition.height) / 2, 0);
- g_value_set_int(&value, child_y);
- gtk_container_child_set_property(GTK_CONTAINER(floating_container),
- widget, "y", &value);
- g_value_unset(&value);
-}
-
-namespace chrome {
-
-content::WebContentsViewDelegate* CreateWebContentsViewDelegate(
- content::WebContents* web_contents) {
- return new ChromeWebContentsViewDelegateGtk(web_contents);
-}
-
-} // namespace chrome

Powered by Google App Engine
This is Rietveld 408576698