| 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);
|
| -}
|
|
|