summaryrefslogtreecommitdiffstats
path: root/views
diff options
context:
space:
mode:
authorxiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-26 20:17:13 +0000
committerxiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-26 20:17:13 +0000
commit916dc1cd1eefef35cebad43129ff7d8c6f2ba98c (patch)
tree61f8a09ab9d425afeaf274b31692b39d51aaa0d1 /views
parentd8472d9319e50a399f20c7e9b54255450b46844d (diff)
downloadchromium_src-916dc1cd1eefef35cebad43129ff7d8c6f2ba98c.zip
chromium_src-916dc1cd1eefef35cebad43129ff7d8c6f2ba98c.tar.gz
chromium_src-916dc1cd1eefef35cebad43129ff7d8c6f2ba98c.tar.bz2
Move TooltipWindowGtk from views/widget to ui/base/gtk.
TooltipWidgetGtk is a gtk based helper class that replaces a widget's default tooltip with a RGBA friendly version. It's not closely coupled with views and ui/base/gtk seems to be a better home for it. This move gets rid of RenderWidgetHostViewGtk's dependency on views. BUG=none. TEST=Expect no change. ChromeOS's tooltip should still have rounded corners. Review URL: http://codereview.chromium.org/7753038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98475 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r--views/views.gyp2
-rw-r--r--views/widget/tooltip_manager_gtk.h6
-rw-r--r--views/widget/tooltip_window_gtk.cc95
-rw-r--r--views/widget/tooltip_window_gtk.h58
4 files changed, 3 insertions, 158 deletions
diff --git a/views/views.gyp b/views/views.gyp
index 9911f39..b3b5934 100644
--- a/views/views.gyp
+++ b/views/views.gyp
@@ -355,8 +355,6 @@
'widget/tooltip_manager_win.h',
'widget/tooltip_manager.cc',
'widget/tooltip_manager.h',
- 'widget/tooltip_window_gtk.cc',
- 'widget/tooltip_window_gtk.h',
'widget/monitor_win.cc',
'widget/monitor_win.h',
'widget/native_widget.h',
diff --git a/views/widget/tooltip_manager_gtk.h b/views/widget/tooltip_manager_gtk.h
index 7ced5f3..8273425 100644
--- a/views/widget/tooltip_manager_gtk.h
+++ b/views/widget/tooltip_manager_gtk.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
@@ -8,8 +8,8 @@
#include <gtk/gtk.h>
+#include "ui/base/gtk/tooltip_window_gtk.h"
#include "views/widget/tooltip_manager.h"
-#include "views/widget/tooltip_window_gtk.h"
namespace views {
@@ -43,7 +43,7 @@ class TooltipManagerGtk : public TooltipManager {
View* keyboard_view_;
// Customized tooltip window.
- TooltipWindowGtk tooltip_window_;
+ ui::TooltipWindowGtk tooltip_window_;
DISALLOW_COPY_AND_ASSIGN(TooltipManagerGtk);
};
diff --git a/views/widget/tooltip_window_gtk.cc b/views/widget/tooltip_window_gtk.cc
deleted file mode 100644
index 444e67e..0000000
--- a/views/widget/tooltip_window_gtk.cc
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright (c) 2010 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 "views/widget/tooltip_window_gtk.h"
-
-#include <gtk/gtk.h>
-
-#include "base/utf_string_conversions.h"
-
-namespace views {
-
-TooltipWindowGtk::TooltipWindowGtk(GtkWidget* widget)
- : host_(widget),
- window_(NULL),
- alignment_(NULL),
- label_(NULL) {
- Init();
-}
-
-TooltipWindowGtk::~TooltipWindowGtk() {
- if (window_)
- gtk_widget_destroy(window_);
-}
-
-void TooltipWindowGtk::SetTooltipText(const std::wstring& text) {
- const std::string& utf8 = WideToUTF8(text);
-
- gtk_label_set_text(label(), utf8.c_str());
-}
-
-GtkLabel* TooltipWindowGtk::label() {
- return GTK_LABEL(label_);
-}
-
-void TooltipWindowGtk::Init() {
- // Creates and setup tooltip window.
- window_ = gtk_window_new(GTK_WINDOW_POPUP);
- gtk_window_set_type_hint(GTK_WINDOW(window_), GDK_WINDOW_TYPE_HINT_TOOLTIP);
- gtk_widget_set_app_paintable(window_, TRUE);
- gtk_window_set_resizable(GTK_WINDOW(window_), FALSE);
- gtk_widget_set_name(window_, "gtk-tooltip");
-
- GdkColormap* rgba_colormap =
- gdk_screen_get_rgba_colormap(gdk_screen_get_default());
- if (rgba_colormap)
- gtk_widget_set_colormap(window_, rgba_colormap);
-
- g_signal_connect(G_OBJECT(window_), "expose-event",
- G_CALLBACK(&OnPaintThunk), this);
- g_signal_connect(G_OBJECT(window_), "style-set",
- G_CALLBACK(&OnStyleSetThunk), this);
-
- alignment_ = gtk_alignment_new(0.5, 0.5, 1.0, 1.0);
- gtk_container_add(GTK_CONTAINER(window_), alignment_);
- gtk_widget_show(alignment_);
-
- label_ = gtk_label_new("");
- gtk_label_set_line_wrap(GTK_LABEL(label_), TRUE);
- gtk_container_add(GTK_CONTAINER(alignment_), label_);
- gtk_widget_show(label_);
-
- // Associates the tooltip window with given widget
- gtk_widget_set_tooltip_window(host_, GTK_WINDOW(window_));
-}
-
-// Paints our customized tooltip window.
-gboolean TooltipWindowGtk::OnPaint(GtkWidget* widget, GdkEventExpose* event) {
- gtk_paint_flat_box(widget->style,
- widget->window,
- GTK_STATE_NORMAL,
- GTK_SHADOW_OUT,
- NULL,
- widget,
- "tooltip",
- 0, 0,
- widget->allocation.width,
- widget->allocation.height);
-
- return FALSE;
-}
-
-// Style change handler.
-void TooltipWindowGtk::OnStyleSet(GtkWidget* widget,
- GtkStyle* previous_style) {
- gtk_alignment_set_padding(GTK_ALIGNMENT(alignment_),
- widget->style->ythickness,
- widget->style->ythickness,
- widget->style->xthickness,
- widget->style->xthickness);
-
- gtk_widget_queue_draw(widget);
-}
-
-} // namespace views
diff --git a/views/widget/tooltip_window_gtk.h b/views/widget/tooltip_window_gtk.h
deleted file mode 100644
index 0ca234f..0000000
--- a/views/widget/tooltip_window_gtk.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2011 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.
-
-#ifndef VIEWS_WIDGET_TOOLTIP_WINDOW_GTK_H_
-#define VIEWS_WIDGET_TOOLTIP_WINDOW_GTK_H_
-#pragma once
-
-#include <string>
-
-#include "base/basictypes.h"
-#include "ui/base/gtk/gtk_integers.h"
-#include "ui/base/gtk/gtk_signal.h"
-#include "views/views_export.h"
-
-typedef struct _GdkEventExpose GdkEventExpose;
-typedef struct _GtkLabel GtkLabel;
-typedef struct _GtkWidget GtkWidget;
-typedef struct _GtkStyle GtkStyle;
-
-namespace views {
-
-// TooltipWindowGtk provides a customized tooltip window and gives us a
-// chance to apply RGBA colormap on it. This enables the GTK theme engine to
-// draw tooltip with nice shadow and rounded corner on ChromeOS.
-class VIEWS_EXPORT TooltipWindowGtk {
- public:
- explicit TooltipWindowGtk(GtkWidget* widget);
- virtual ~TooltipWindowGtk();
-
- // Sets tooltip text to display.
- void SetTooltipText(const std::wstring& text);
-
- GtkLabel* label();
-
- protected:
- CHROMEGTK_CALLBACK_1(TooltipWindowGtk, gboolean, OnPaint, GdkEventExpose*);
- CHROMEGTK_CALLBACK_1(TooltipWindowGtk, void, OnStyleSet, GtkStyle*);
-
- private:
- void Init();
-
- // Underlying widget of this tooltip window.
- GtkWidget* host_;
-
- // GtkWindow of this tooltip window.
- GtkWidget* window_;
-
- // The alignment and label widgets contained of the tooltip window.
- GtkWidget* alignment_;
- GtkWidget* label_;
-
- DISALLOW_COPY_AND_ASSIGN(TooltipWindowGtk);
-};
-
-} // namespace views
-
-#endif // VIEWS_WIDGET_TOOLTIP_WINDOW_GTK_H_