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

Side by Side Diff: ui/views/controls/textfield/gtk_views_entry.cc

Issue 9728002: Removing deprecated GTK-Views code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/views/controls/textfield/gtk_views_entry.h"
6
7 #include "base/utf_string_conversions.h"
8 #include "ui/gfx/canvas_skia_paint.h"
9 #include "ui/gfx/insets.h"
10 #include "ui/gfx/skia_utils_gtk.h"
11 #include "ui/views/controls/textfield/native_textfield_gtk.h"
12 #include "ui/views/controls/textfield/textfield.h"
13
14 G_BEGIN_DECLS
15
16 G_DEFINE_TYPE(GtkViewsEntry, gtk_views_entry, GTK_TYPE_ENTRY)
17
18 static gint gtk_views_entry_expose_event(GtkWidget *widget,
19 GdkEventExpose *event) {
20 views::NativeTextfieldGtk* host = GTK_VIEWS_ENTRY(widget)->host;
21 #if defined(OS_CHROMEOS)
22 // Draw textfield background over the default white rectangle.
23 if (event->window == widget->window) {
24 gfx::CanvasSkiaPaint canvas(event);
25 if (!canvas.is_empty() && host) {
26 host->textfield()->OnPaintBackground(&canvas);
27 }
28 }
29 #endif
30
31 gint result = GTK_WIDGET_CLASS(gtk_views_entry_parent_class)->expose_event(
32 widget, event);
33
34 GtkEntry* entry = GTK_ENTRY(widget);
35
36 // Internally GtkEntry creates an additional window (text_area) that the
37 // text is drawn to. We only need paint after that window has painted.
38 if (host && event->window == entry->text_area &&
39 !host->textfield()->text_to_display_when_empty().empty() &&
40 g_utf8_strlen(gtk_entry_get_text(entry), -1) == 0) {
41 gfx::CanvasSkiaPaint canvas(event);
42 if (!canvas.is_empty()) {
43 gfx::Insets insets =
44 views::NativeTextfieldGtk::GetEntryInnerBorder(entry);
45 gfx::Font font = host->textfield()->font();
46 const string16 text = host->textfield()->text_to_display_when_empty();
47 canvas.DrawStringInt(
48 text, font,
49 gfx::GdkColorToSkColor(widget->style->text[GTK_STATE_INSENSITIVE]),
50 insets.left(), insets.top(),
51 widget->allocation.width - insets.width(), font.GetHeight());
52 }
53 }
54
55 return result;
56 }
57
58 static void gtk_views_entry_class_init(GtkViewsEntryClass* views_entry_class) {
59 GtkWidgetClass* widget_class =
60 reinterpret_cast<GtkWidgetClass*>(views_entry_class);
61 widget_class->expose_event = gtk_views_entry_expose_event;
62 }
63
64 static void gtk_views_entry_init(GtkViewsEntry* entry) {
65 entry->host = NULL;
66 }
67
68 GtkWidget* gtk_views_entry_new(views::NativeTextfieldGtk* host) {
69 gpointer entry = g_object_new(GTK_TYPE_VIEWS_ENTRY, NULL);
70 GTK_VIEWS_ENTRY(entry)->host = host;
71 return GTK_WIDGET(entry);
72 }
73
74 G_END_DECLS
OLDNEW
« no previous file with comments | « ui/views/controls/textfield/gtk_views_entry.h ('k') | ui/views/controls/textfield/gtk_views_textview.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698