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

Unified Diff: chrome/browser/ui/gtk/fullscreen_exit_bubble_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/fullscreen_exit_bubble_gtk.cc
diff --git a/chrome/browser/ui/gtk/fullscreen_exit_bubble_gtk.cc b/chrome/browser/ui/gtk/fullscreen_exit_bubble_gtk.cc
deleted file mode 100644
index 9df207c2147954ae7610b650be2fe79f20674141..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/gtk/fullscreen_exit_bubble_gtk.cc
+++ /dev/null
@@ -1,277 +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/fullscreen_exit_bubble_gtk.h"
-
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/gtk/gtk_chrome_link_button.h"
-#include "chrome/browser/ui/gtk/gtk_theme_service.h"
-#include "chrome/browser/ui/gtk/gtk_util.h"
-#include "chrome/browser/ui/gtk/rounded_window.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/render_widget_host_view.h"
-#include "grit/generated_resources.h"
-#include "grit/ui_strings.h"
-#include "ui/base/gtk/gtk_floating_container.h"
-#include "ui/base/gtk/gtk_hig_constants.h"
-#include "ui/base/l10n/l10n_util.h"
-
-namespace {
-
-const GdkColor kBackgroundColor = GDK_COLOR_RGB(0xff, 0xff, 0xff);
-const GdkColor kFrameColor = GDK_COLOR_RGB(0x63, 0x63, 0x63);
-
-} // namespace
-
-FullscreenExitBubbleGtk::FullscreenExitBubbleGtk(
- GtkFloatingContainer* container,
- Browser* browser,
- const GURL& url,
- FullscreenExitBubbleType bubble_type)
- : FullscreenExitBubble(browser, url, bubble_type),
- theme_service_(NULL),
- bubble_(NULL),
- container_(container) {
- InitWidgets();
-}
-
-FullscreenExitBubbleGtk::~FullscreenExitBubbleGtk() {
-}
-
-void FullscreenExitBubbleGtk::UpdateContent(
- const GURL& url,
- FullscreenExitBubbleType bubble_type) {
- if (bubble_type == FEB_TYPE_NONE) {
- NOTREACHED();
- bubble_type = FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION;
- }
-
- url_ = url;
- bubble_type_ = bubble_type;
-
- gtk_label_set_text(GTK_LABEL(message_label_),
- base::UTF16ToUTF8(GetCurrentMessageText()).c_str());
- if (fullscreen_bubble::ShowButtonsForType(bubble_type)) {
- gtk_widget_hide(link_);
- gtk_widget_hide(instruction_label_);
- gtk_widget_show(allow_button_);
- gtk_button_set_label(GTK_BUTTON(deny_button_),
- base::UTF16ToUTF8(GetCurrentDenyButtonText()).c_str());
- gtk_widget_show(deny_button_);
- } else {
- bool link_visible = true;
- base::string16 accelerator;
- if (bubble_type == FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION ||
- bubble_type ==
- FEB_TYPE_BROWSER_EXTENSION_FULLSCREEN_EXIT_INSTRUCTION) {
- accelerator = l10n_util::GetStringUTF16(IDS_APP_F11_KEY);
- } else if (bubble_type == FEB_TYPE_FULLSCREEN_EXIT_INSTRUCTION) {
- accelerator = l10n_util::GetStringUTF16(IDS_APP_ESC_KEY);
- } else {
- link_visible = false;
- }
- if (link_visible) {
- std::string exit_link_text(
- l10n_util::GetStringUTF8(IDS_EXIT_FULLSCREEN_MODE) + " " +
- l10n_util::GetStringFUTF8(IDS_EXIT_FULLSCREEN_MODE_ACCELERATOR,
- accelerator));
- gtk_chrome_link_button_set_label(GTK_CHROME_LINK_BUTTON(link_),
- exit_link_text.c_str());
- gtk_widget_show(link_);
- gtk_widget_hide(instruction_label_);
- } else {
- gtk_widget_hide(link_);
- gtk_widget_show(instruction_label_);
- }
- gtk_widget_hide(allow_button_);
- gtk_widget_hide(deny_button_);
- }
-
- Show();
- StopWatchingMouse();
- StartWatchingMouseIfNecessary();
-}
-
-void FullscreenExitBubbleGtk::InitWidgets() {
- theme_service_ = GtkThemeService::GetFrom(browser_->profile());
-
- hbox_ = gtk_hbox_new(false, ui::kControlSpacing);
-
- message_label_ = theme_service_->BuildLabel(GetMessage(url_).c_str(),
- ui::kGdkBlack);
- gtk_box_pack_start(GTK_BOX(hbox_), message_label_, FALSE, FALSE, 0);
-
- allow_button_ = gtk_button_new_with_label(
- l10n_util::GetStringUTF8(IDS_FULLSCREEN_ALLOW).c_str());
- gtk_widget_set_can_focus(allow_button_, FALSE);
- gtk_widget_set_no_show_all(allow_button_, FALSE);
- gtk_box_pack_start(GTK_BOX(hbox_), allow_button_, FALSE, FALSE, 0);
-
- deny_button_ = gtk_button_new_with_label(
- l10n_util::GetStringUTF8(IDS_FULLSCREEN_DENY).c_str());
- gtk_widget_set_can_focus(deny_button_, FALSE);
- gtk_widget_set_no_show_all(deny_button_, FALSE);
- gtk_box_pack_start(GTK_BOX(hbox_), deny_button_, FALSE, FALSE, 0);
-
- link_ = gtk_chrome_link_button_new("");
- gtk_widget_set_can_focus(link_, FALSE);
- gtk_widget_set_no_show_all(link_, FALSE);
- gtk_chrome_link_button_set_use_gtk_theme(GTK_CHROME_LINK_BUTTON(link_),
- FALSE);
- gtk_box_pack_start(GTK_BOX(hbox_), link_, FALSE, FALSE, 0);
-
- instruction_label_ =
- gtk_label_new(base::UTF16ToUTF8(GetInstructionText()).c_str());
- gtk_widget_set_no_show_all(instruction_label_, FALSE);
- gtk_box_pack_start(GTK_BOX(hbox_), instruction_label_, FALSE, FALSE, 0);
-
- bubble_ = gtk_util::CreateGtkBorderBin(
- hbox_, &ui::kGdkWhite,
- kPaddingPx, kPaddingPx, kPaddingPx, kPaddingPx);
- gtk_util::ActAsRoundedWindow(bubble_, kFrameColor, 3,
- gtk_util::ROUNDED_ALL, gtk_util::BORDER_ALL);
- GtkWidget* alignment = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
- gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 5, 0, 0, 0);
- gtk_container_add(GTK_CONTAINER(alignment), bubble_);
- ui_container_.Own(alignment);
-
- slide_widget_.reset(new SlideAnimatorGtk(ui_container_.get(),
- SlideAnimatorGtk::DOWN, kSlideOutDurationMs, false, false, NULL));
- gtk_widget_set_name(widget(), "exit-fullscreen-bubble");
- gtk_widget_show_all(ui_container_.get());
- gtk_widget_show(widget());
- slide_widget_->OpenWithoutAnimation();
-
- gtk_floating_container_add_floating(GTK_FLOATING_CONTAINER(container_),
- widget());
-
- signals_.Connect(container_, "set-floating-position",
- G_CALLBACK(OnSetFloatingPositionThunk), this);
- signals_.Connect(link_, "clicked", G_CALLBACK(OnLinkClickedThunk), this);
- signals_.Connect(allow_button_, "clicked",
- G_CALLBACK(&OnAllowClickedThunk), this);
- signals_.Connect(deny_button_, "clicked",
- G_CALLBACK(&OnDenyClickedThunk), this);
-
- UpdateContent(url_, bubble_type_);
-
- theme_service_->InitThemesFor(this);
- registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
- content::Source<ThemeService>(theme_service_));
-}
-
-std::string FullscreenExitBubbleGtk::GetMessage(const GURL& url) {
- if (url.is_empty())
- return l10n_util::GetStringUTF8(IDS_FULLSCREEN_USER_ENTERED_FULLSCREEN);
-
- if (url.SchemeIsFile())
- return l10n_util::GetStringUTF8(IDS_FULLSCREEN_ENTERED_FULLSCREEN);
- return l10n_util::GetStringFUTF8(IDS_FULLSCREEN_SITE_ENTERED_FULLSCREEN,
- base::UTF8ToUTF16(url.host()));
-}
-
-gfx::Rect FullscreenExitBubbleGtk::GetPopupRect(
- bool ignore_animation_state) const {
- GtkRequisition bubble_size;
- if (ignore_animation_state) {
- gtk_widget_size_request(ui_container_.get(), &bubble_size);
- } else {
- gtk_widget_size_request(widget(), &bubble_size);
- }
- return gfx::Rect(bubble_size.width, bubble_size.height);
-}
-
-gfx::Point FullscreenExitBubbleGtk::GetCursorScreenPoint() {
- GdkDisplay* display = gtk_widget_get_display(widget());
-
- // Get cursor position.
- // TODO: this hits the X server, so we may want to consider decreasing
- // kPositionCheckHz if we detect that we're running remotely.
- int x, y;
- gdk_display_get_pointer(display, NULL, &x, &y, NULL);
-
- return gfx::Point(x, y);
-}
-
-bool FullscreenExitBubbleGtk::WindowContainsPoint(gfx::Point pos) {
- GtkWindow* window = GTK_WINDOW(
- gtk_widget_get_ancestor(widget(), GTK_TYPE_WINDOW));
- int width, height, x, y;
- gtk_window_get_size(window, &width, &height);
- gtk_window_get_position(window, &x, &y);
- return gfx::Rect(x, y, width, height).Contains(pos);
-}
-
-bool FullscreenExitBubbleGtk::IsWindowActive() {
- if (!gtk_widget_get_parent(widget()))
- return false;
- GtkWindow* window = GTK_WINDOW(
- gtk_widget_get_ancestor(widget(), GTK_TYPE_WINDOW));
- return gtk_window_is_active(window);
-}
-
-void FullscreenExitBubbleGtk::Hide() {
- slide_widget_->Close();
-}
-
-void FullscreenExitBubbleGtk::Show() {
- slide_widget_->Open();
-}
-
-bool FullscreenExitBubbleGtk::IsAnimating() {
- return slide_widget_->IsAnimating();
-}
-
-bool FullscreenExitBubbleGtk::CanMouseTriggerSlideIn() const {
- return true;
-}
-
-void FullscreenExitBubbleGtk::StartWatchingMouseIfNecessary() {
- if (!fullscreen_bubble::ShowButtonsForType(bubble_type_))
- StartWatchingMouse();
-}
-
-void FullscreenExitBubbleGtk::OnSetFloatingPosition(
- GtkWidget* floating_container,
- GtkAllocation* allocation) {
- GtkRequisition bubble_size;
- gtk_widget_size_request(widget(), &bubble_size);
-
- // Position the bubble at the top center of the screen.
- GValue value = { 0, };
- g_value_init(&value, G_TYPE_INT);
- g_value_set_int(&value, (allocation->width - bubble_size.width) / 2);
- gtk_container_child_set_property(GTK_CONTAINER(floating_container),
- widget(), "x", &value);
-
- g_value_set_int(&value, 0);
- gtk_container_child_set_property(GTK_CONTAINER(floating_container),
- widget(), "y", &value);
- g_value_unset(&value);
-}
-
-void FullscreenExitBubbleGtk::OnLinkClicked(GtkWidget* link) {
- ToggleFullscreen();
-}
-
-void FullscreenExitBubbleGtk::OnAllowClicked(GtkWidget* button) {
- Accept();
-}
-
-void FullscreenExitBubbleGtk::OnDenyClicked(GtkWidget* button) {
- Cancel();
-}
-
-void FullscreenExitBubbleGtk::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- DCHECK_EQ(type, chrome::NOTIFICATION_BROWSER_THEME_CHANGED);
- if (theme_service_->UsingNativeTheme())
- gtk_widget_modify_bg(bubble_, GTK_STATE_NORMAL, NULL);
- else
- gtk_widget_modify_bg(bubble_, GTK_STATE_NORMAL, &kBackgroundColor);
-}

Powered by Google App Engine
This is Rietveld 408576698