diff options
author | xiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-26 20:17:13 +0000 |
---|---|---|
committer | xiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-26 20:17:13 +0000 |
commit | 916dc1cd1eefef35cebad43129ff7d8c6f2ba98c (patch) | |
tree | 61f8a09ab9d425afeaf274b31692b39d51aaa0d1 /views/widget | |
parent | d8472d9319e50a399f20c7e9b54255450b46844d (diff) | |
download | chromium_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/widget')
-rw-r--r-- | views/widget/tooltip_manager_gtk.h | 6 | ||||
-rw-r--r-- | views/widget/tooltip_window_gtk.cc | 95 | ||||
-rw-r--r-- | views/widget/tooltip_window_gtk.h | 58 |
3 files changed, 3 insertions, 156 deletions
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_ |