| Index: chrome/browser/ui/gtk/validation_message_bubble_gtk.cc
|
| diff --git a/chrome/browser/ui/gtk/validation_message_bubble_gtk.cc b/chrome/browser/ui/gtk/validation_message_bubble_gtk.cc
|
| deleted file mode 100644
|
| index 2a22d9157a12378aed659cc7478208c5164d3427..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/gtk/validation_message_bubble_gtk.cc
|
| +++ /dev/null
|
| @@ -1,140 +0,0 @@
|
| -// Copyright (c) 2013 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/validation_message_bubble.h"
|
| -
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/ui/gtk/bubble/bubble_gtk.h"
|
| -#include "chrome/browser/ui/gtk/gtk_theme_service.h"
|
| -#include "chrome/browser/ui/gtk/gtk_util.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 "grit/theme_resources.h"
|
| -#include "ui/base/resource/resource_bundle.h"
|
| -#include "ui/gfx/gtk_util.h"
|
| -#include "ui/gfx/image/image_skia.h"
|
| -#include "ui/gfx/rect.h"
|
| -
|
| -namespace {
|
| -
|
| -const int kPadding = 4;
|
| -const int kIconTextMargin = 8;
|
| -const int kTextMargin = 4;
|
| -const int kTextMaxWidth = 256;
|
| -
|
| -// A GTK implementation of ValidationMessageBubble.
|
| -class ValidationMessageBubbleGtk : public chrome::ValidationMessageBubble,
|
| - public BubbleDelegateGtk {
|
| - public:
|
| - ValidationMessageBubbleGtk(content::RenderWidgetHost* widget_host,
|
| - const gfx::Rect& anchor_in_screen,
|
| - const base::string16& main_text,
|
| - const base::string16& sub_text);
|
| - virtual ~ValidationMessageBubbleGtk();
|
| - virtual void SetPositionRelativeToAnchor(
|
| - content::RenderWidgetHost* widget_host,
|
| - const gfx::Rect& anchor_in_root_view) OVERRIDE;
|
| -
|
| - // BubbleDelegateGtk override:
|
| - virtual void BubbleClosing(BubbleGtk*, bool) OVERRIDE;
|
| -
|
| - private:
|
| - static GtkWidget* ConstructContent(const base::string16& main_text,
|
| - const base::string16& sub_text);
|
| -
|
| - BubbleGtk* bubble_;
|
| -};
|
| -
|
| -ValidationMessageBubbleGtk::ValidationMessageBubbleGtk(
|
| - content::RenderWidgetHost* widget_host,
|
| - const gfx::Rect& anchor_in_root_view,
|
| - const base::string16& main_text,
|
| - const base::string16& sub_text)
|
| - : bubble_(NULL) {
|
| - if (!widget_host->IsRenderView())
|
| - return;
|
| - Profile* profile = Profile::FromBrowserContext(
|
| - content::WebContents::FromRenderViewHost(
|
| - content::RenderViewHost::From(widget_host))->GetBrowserContext());
|
| - bubble_ = BubbleGtk::Show(widget_host->GetView()->GetNativeView(),
|
| - &anchor_in_root_view,
|
| - ConstructContent(main_text, sub_text),
|
| - BubbleGtk::ANCHOR_TOP_LEFT,
|
| - BubbleGtk::POPUP_WINDOW,
|
| - GtkThemeService::GetFrom(profile),
|
| - this);
|
| -}
|
| -
|
| -ValidationMessageBubbleGtk::~ValidationMessageBubbleGtk() {
|
| - if (bubble_)
|
| - bubble_->Close();
|
| -}
|
| -
|
| -void ValidationMessageBubbleGtk::SetPositionRelativeToAnchor(
|
| - content::RenderWidgetHost* widget_host,
|
| - const gfx::Rect& anchor_in_root_view) {
|
| - if (bubble_)
|
| - bubble_->SetPositionRelativeToAnchor(&anchor_in_root_view);
|
| -}
|
| -
|
| -void ValidationMessageBubbleGtk::BubbleClosing(BubbleGtk*, bool) {
|
| - bubble_ = NULL;
|
| -}
|
| -
|
| -// static
|
| -GtkWidget* ValidationMessageBubbleGtk::ConstructContent(
|
| - const base::string16& main_text, const base::string16& sub_text) {
|
| - GtkWidget* icon = gtk_image_new();
|
| - gtk_misc_set_alignment(GTK_MISC(icon), 0.5, 0);
|
| - gtk_misc_set_padding(GTK_MISC(icon), kPadding, kPadding);
|
| - ResourceBundle& bundle = ResourceBundle::GetSharedInstance();
|
| - GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(
|
| - *bundle.GetImageSkiaNamed(IDR_INPUT_ALERT)->bitmap());
|
| - gtk_image_set_from_pixbuf(GTK_IMAGE(icon), pixbuf);
|
| - g_object_unref(pixbuf);
|
| - GtkWidget* icon_text_box = gtk_hbox_new(FALSE, kIconTextMargin);
|
| - gtk_container_add(GTK_CONTAINER(icon_text_box), icon);
|
| -
|
| - GtkWidget* text_box = gtk_vbox_new(FALSE, kTextMargin);
|
| - GtkWidget* label = gtk_label_new(base::UTF16ToUTF8(main_text).c_str());
|
| - const gfx::Font& main_font = bundle.GetFont(ResourceBundle::MediumFont);
|
| - gtk_util::ForceFontSizePixels(label, main_font.GetHeight());
|
| - gtk_box_pack_start(
|
| - GTK_BOX(text_box), gtk_util::LeftAlignMisc(label), TRUE, TRUE, 0);
|
| -
|
| - if (!sub_text.empty()) {
|
| - GtkWidget* sub_label = gtk_label_new(base::UTF16ToUTF8(sub_text).c_str());
|
| - const gfx::Font& sub_font = bundle.GetFont(ResourceBundle::BaseFont);
|
| - gtk_util::ForceFontSizePixels(sub_label, sub_font.GetHeight());
|
| - int max_characters = kTextMaxWidth / sub_font.GetExpectedTextWidth(1);
|
| - if (sub_text.length() > static_cast<size_t>(max_characters))
|
| - gtk_util::SetLabelWidth(sub_label, kTextMaxWidth);
|
| - gtk_box_pack_start(
|
| - GTK_BOX(text_box), gtk_util::LeftAlignMisc(sub_label), TRUE, TRUE, 0);
|
| - }
|
| - gtk_container_add(GTK_CONTAINER(icon_text_box), text_box);
|
| -
|
| - GtkWidget* content = gtk_alignment_new(0, 0, 0, 0);
|
| - gtk_alignment_set_padding(
|
| - GTK_ALIGNMENT(content), kPadding, kPadding, kPadding, kPadding);
|
| - gtk_container_add(GTK_CONTAINER(content), icon_text_box);
|
| - return content;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace chrome {
|
| -
|
| -scoped_ptr<ValidationMessageBubble> ValidationMessageBubble::CreateAndShow(
|
| - content::RenderWidgetHost* widget_host,
|
| - const gfx::Rect& anchor_in_root_view,
|
| - const base::string16& main_text,
|
| - const base::string16& sub_text) {
|
| - return scoped_ptr<ValidationMessageBubble>(new ValidationMessageBubbleGtk(
|
| - widget_host, anchor_in_root_view, main_text, sub_text)).Pass();
|
| -}
|
| -
|
| -} // namespace chrome
|
|
|