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

Unified Diff: ui/views/controls/textfield/native_textfield_gtk.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/controls/textfield/native_textfield_gtk.h ('k') | ui/views/events/event_gtk.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/controls/textfield/native_textfield_gtk.cc
diff --git a/ui/views/controls/textfield/native_textfield_gtk.cc b/ui/views/controls/textfield/native_textfield_gtk.cc
deleted file mode 100644
index dd45344f8a22b88b4f8a515aac473cdef2de1c7f..0000000000000000000000000000000000000000
--- a/ui/views/controls/textfield/native_textfield_gtk.cc
+++ /dev/null
@@ -1,447 +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 <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-
-#include "ui/views/controls/textfield/native_textfield_gtk.h"
-
-#include "base/logging.h"
-#include "base/utf_string_conversions.h"
-#include "ui/base/range/range.h"
-#include "ui/gfx/gtk_util.h"
-#include "ui/gfx/insets.h"
-#include "ui/gfx/selection_model.h"
-#include "ui/gfx/skia_utils_gtk.h"
-#include "ui/views/controls/textfield/gtk_views_entry.h"
-#include "ui/views/controls/textfield/gtk_views_textview.h"
-#include "ui/views/controls/textfield/native_textfield_views.h"
-#include "ui/views/controls/textfield/textfield.h"
-#include "ui/views/controls/textfield/textfield_controller.h"
-#include "ui/views/widget/native_widget_gtk.h"
-
-namespace views {
-
-// A character used to hide a text in obscured mode.
-static const char kObscuredChar = '*';
-
-// Border width for GtkTextView.
-const int kTextViewBorderWidth = 4;
-
-////////////////////////////////////////////////////////////////////////////////
-// NativeTextfieldGtk, public:
-
-NativeTextfieldGtk::NativeTextfieldGtk(Textfield* textfield)
- : textfield_(textfield),
- paste_clipboard_requested_(false) {
- // Make |textfield| the focused view, so that when we get focused the focus
- // manager sees |textfield| as the focused view (since we are just a wrapper
- // view).
- set_focus_view(textfield);
-}
-
-NativeTextfieldGtk::~NativeTextfieldGtk() {
-}
-
-// Returns the inner border of an entry.
-// static
-gfx::Insets NativeTextfieldGtk::GetEntryInnerBorder(GtkEntry* entry) {
- const GtkBorder* inner_border = gtk_entry_get_inner_border(entry);
- if (inner_border)
- return gfx::Insets(*inner_border);
-
- // No explicit border set, try the style.
- GtkBorder* style_border;
- gtk_widget_style_get(GTK_WIDGET(entry), "inner-border", &style_border, NULL);
- if (style_border) {
- gfx::Insets insets = gfx::Insets(*style_border);
- gtk_border_free(style_border);
- return insets;
- }
-
- // If border is null, Gtk uses 2 on all sides.
- return gfx::Insets(2, 2, 2, 2);
-}
-
-gfx::Insets NativeTextfieldGtk::GetTextViewInnerBorder(GtkTextView* text_view) {
- return gfx::Insets(kTextViewBorderWidth / 2, kTextViewBorderWidth / 2,
- kTextViewBorderWidth / 2, kTextViewBorderWidth / 2);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// NativeTextfieldGtk, NativeTextfieldWrapper implementation:
-
-string16 NativeTextfieldGtk::GetText() const {
- return UTF8ToUTF16(gtk_entry_get_text(GTK_ENTRY(native_view())));
-}
-
-void NativeTextfieldGtk::UpdateText() {
- if (!native_view())
- return;
- gtk_entry_set_text(GTK_ENTRY(native_view()),
- UTF16ToUTF8(textfield_->text()).c_str());
-}
-
-void NativeTextfieldGtk::AppendText(const string16& text) {
- if (!native_view())
- return;
- gtk_entry_append_text(GTK_ENTRY(native_view()), UTF16ToUTF8(text).c_str());
-}
-
-string16 NativeTextfieldGtk::GetSelectedText() const {
- if (!native_view())
- return string16();
-
- string16 result;
-
- gint start_pos;
- gint end_pos;
- if (!gtk_editable_get_selection_bounds(GTK_EDITABLE(native_view()),
- &start_pos, &end_pos))
- return result; // No selection.
-
- UTF8ToUTF16(gtk_editable_get_chars(GTK_EDITABLE(native_view()),
- start_pos, end_pos),
- end_pos - start_pos, &result);
-
- return result;
-}
-
-void NativeTextfieldGtk::SelectAll() {
- if (!native_view())
- return;
- // -1 as the end position selects to the end of the text.
- gtk_editable_select_region(GTK_EDITABLE(native_view()), 0, -1);
-}
-
-void NativeTextfieldGtk::ClearSelection() {
- if (!native_view())
- return;
- gtk_editable_select_region(GTK_EDITABLE(native_view()), 0, 0);
-}
-
-void NativeTextfieldGtk::UpdateBorder() {
- if (!native_view())
- return;
-
- if (!textfield_->draw_border())
- gtk_entry_set_has_frame(GTK_ENTRY(native_view()), false);
-}
-
-void NativeTextfieldGtk::UpdateTextColor() {
- if (textfield_->use_default_text_color()) {
- // Passing NULL as the color undoes the effect of previous calls to
- // gtk_widget_modify_text.
- gtk_widget_modify_text(native_view(), GTK_STATE_NORMAL, NULL);
- return;
- }
- GdkColor gdk_color = gfx::SkColorToGdkColor(textfield_->text_color());
- gtk_widget_modify_text(native_view(), GTK_STATE_NORMAL, &gdk_color);
-}
-
-void NativeTextfieldGtk::UpdateBackgroundColor() {
- if (textfield_->use_default_background_color()) {
- // Passing NULL as the color undoes the effect of previous calls to
- // gtk_widget_modify_base.
- gtk_widget_modify_base(native_view(), GTK_STATE_NORMAL, NULL);
- return;
- }
- GdkColor gdk_color = gfx::SkColorToGdkColor(textfield_->background_color());
- gtk_widget_modify_base(native_view(), GTK_STATE_NORMAL, &gdk_color);
-}
-
-void NativeTextfieldGtk::UpdateCursorColor() {
- if (!textfield_->use_default_cursor_color())
- NOTIMPLEMENTED();
-}
-
-void NativeTextfieldGtk::UpdateReadOnly() {
- if (!native_view())
- return;
- gtk_editable_set_editable(GTK_EDITABLE(native_view()),
- !textfield_->read_only());
-}
-
-void NativeTextfieldGtk::UpdateFont() {
- if (!native_view())
- return;
- PangoFontDescription* pfd = textfield_->font().GetNativeFont();
- gtk_widget_modify_font(native_view(), pfd);
- pango_font_description_free(pfd);
-}
-
-void NativeTextfieldGtk::UpdateIsObscured() {
- if (!native_view())
- return;
- gtk_entry_set_visibility(GTK_ENTRY(native_view()), !textfield_->IsObscured());
-}
-
-void NativeTextfieldGtk::UpdateEnabled() {
- if (!native_view())
- return;
- SetEnabled(textfield_->enabled());
-}
-
-gfx::Insets NativeTextfieldGtk::CalculateInsets() {
- if (!native_view())
- return gfx::Insets();
-
- GtkWidget* widget = native_view();
- gfx::Insets insets;
-
- GtkEntry* entry = GTK_ENTRY(widget);
- insets += GetEntryInnerBorder(entry);
- if (entry->has_frame) {
- insets += gfx::Insets(widget->style->ythickness,
- widget->style->xthickness,
- widget->style->ythickness,
- widget->style->xthickness);
- }
-
- gboolean interior_focus;
- gint focus_width;
- gtk_widget_style_get(widget,
- "focus-line-width", &focus_width,
- "interior-focus", &interior_focus,
- NULL);
- if (!interior_focus)
- insets += gfx::Insets(focus_width, focus_width, focus_width, focus_width);
-
- return insets;
-}
-
-void NativeTextfieldGtk::UpdateHorizontalMargins() {
- if (!native_view())
- return;
-
- int left, right;
- if (!textfield_->GetHorizontalMargins(&left, &right))
- return;
-
- gfx::Insets insets = GetEntryInnerBorder(GTK_ENTRY(native_view()));
- GtkBorder border = {left, right, insets.top(), insets.bottom()};
- gtk_entry_set_inner_border(GTK_ENTRY(native_view()), &border);
-}
-
-void NativeTextfieldGtk::UpdateVerticalMargins() {
- if (!native_view())
- return;
-
- int top, bottom;
- if (!textfield_->GetVerticalMargins(&top, &bottom))
- return;
-
- gfx::Insets insets = GetEntryInnerBorder(GTK_ENTRY(native_view()));
- GtkBorder border = {insets.left(), insets.right(), top, bottom};
- gtk_entry_set_inner_border(GTK_ENTRY(native_view()), &border);
-}
-
-bool NativeTextfieldGtk::SetFocus() {
- OnFocus();
- return true;
-}
-
-View* NativeTextfieldGtk::GetView() {
- return this;
-}
-
-gfx::NativeView NativeTextfieldGtk::GetTestingHandle() const {
- return native_view();
-}
-
-bool NativeTextfieldGtk::IsIMEComposing() const {
- return false;
-}
-
-void NativeTextfieldGtk::GetSelectedRange(ui::Range* range) const {
- gint start_pos;
- gint end_pos;
- gtk_editable_get_selection_bounds(
- GTK_EDITABLE(native_view()), &start_pos, &end_pos);
- *range = ui::Range(start_pos, end_pos);
-}
-
-void NativeTextfieldGtk::SelectRange(const ui::Range& range) {
- NOTREACHED();
-}
-
-void NativeTextfieldGtk::GetSelectionModel(gfx::SelectionModel* sel) const {
- NOTREACHED();
-}
-
-void NativeTextfieldGtk::SelectSelectionModel(const gfx::SelectionModel& sel) {
- NOTREACHED();
-}
-
-size_t NativeTextfieldGtk::GetCursorPosition() const {
- NOTREACHED();
- return 0U;
-}
-
-bool NativeTextfieldGtk::HandleKeyPressed(const views::KeyEvent& e) {
- return false;
-}
-
-bool NativeTextfieldGtk::HandleKeyReleased(const views::KeyEvent& e) {
- return false;
-}
-
-void NativeTextfieldGtk::HandleFocus() {
-}
-
-void NativeTextfieldGtk::HandleBlur() {
-}
-
-ui::TextInputClient* NativeTextfieldGtk::GetTextInputClient() {
- return NULL;
-}
-
-void NativeTextfieldGtk::ApplyStyleRange(const gfx::StyleRange& style) {
- NOTREACHED();
-}
-
-void NativeTextfieldGtk::ApplyDefaultStyle() {
- NOTREACHED();
-}
-
-void NativeTextfieldGtk::ClearEditHistory() {
- NOTREACHED();
-}
-
-int NativeTextfieldGtk::GetFontHeight() {
- return textfield_->font().GetHeight();
-}
-
-void NativeTextfieldGtk::OnActivate(GtkWidget* native_widget) {
- GdkEvent* event = gtk_get_current_event();
- if (!event || event->type != GDK_KEY_PRESS)
- return;
-
- KeyEvent views_key_event(event);
- gboolean handled = false;
-
- TextfieldController* controller = textfield_->GetController();
- if (controller)
- handled = controller->HandleKeyEvent(textfield_, views_key_event);
-
- Widget* widget = GetWidget();
- if (!handled && widget) {
- NativeWidgetGtk* native_widget =
- static_cast<NativeWidgetGtk*>(widget->native_widget());
- handled = native_widget->HandleKeyboardEvent(views_key_event);
- }
-
- // Stop signal emission if the key event is handled by us.
- if (handled) {
- // Only GtkEntry has "activate" signal.
- static guint signal_id = g_signal_lookup("activate", GTK_TYPE_ENTRY);
- g_signal_stop_emission(native_widget, signal_id, 0);
- }
-}
-
-void NativeTextfieldGtk::OnChanged(GObject* object) {
- // We need to call TextfieldController::ContentsChanged() explicitly if the
- // paste action didn't change the content at all. See http://crbug.com/79002
- const bool call_contents_changed =
- paste_clipboard_requested_ && GetText() == textfield_->text();
- textfield_->SyncText();
- textfield_->GetWidget()->NotifyAccessibilityEvent(
- textfield_, ui::AccessibilityTypes::EVENT_TEXT_CHANGED, true);
- if (call_contents_changed) {
- TextfieldController* controller = textfield_->GetController();
- if (controller)
- controller->ContentsChanged(textfield_, textfield_->text());
- }
- paste_clipboard_requested_ = false;
-}
-
-gboolean NativeTextfieldGtk::OnButtonPressEvent(GtkWidget* widget,
- GdkEventButton* event) {
- paste_clipboard_requested_ = false;
- return false;
-}
-
-gboolean NativeTextfieldGtk::OnButtonReleaseEventAfter(GtkWidget* widget,
- GdkEventButton* event) {
- textfield_->GetWidget()->NotifyAccessibilityEvent(
- textfield_, ui::AccessibilityTypes::EVENT_TEXT_CHANGED, true);
- return false;
-}
-
-gboolean NativeTextfieldGtk::OnKeyPressEvent(GtkWidget* widget,
- GdkEventKey* event) {
- paste_clipboard_requested_ = false;
- return false;
-}
-
-gboolean NativeTextfieldGtk::OnKeyPressEventAfter(GtkWidget* widget,
- GdkEventKey* event) {
- TextfieldController* controller = textfield_->GetController();
- if (controller) {
- KeyEvent key_event(reinterpret_cast<GdkEvent*>(event));
- return controller->HandleKeyEvent(textfield_, key_event);
- }
- return false;
-}
-
-void NativeTextfieldGtk::OnMoveCursor(GtkWidget* widget,
- GtkMovementStep step,
- gint count,
- gboolean extend_selection) {
- textfield_->GetWidget()->NotifyAccessibilityEvent(
- textfield_, ui::AccessibilityTypes::EVENT_TEXT_CHANGED, true);
-}
-
-void NativeTextfieldGtk::OnPasteClipboard(GtkWidget* widget) {
- if (!textfield_->read_only())
- paste_clipboard_requested_ = true;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// NativeTextfieldGtk, NativeControlGtk overrides:
-
-void NativeTextfieldGtk::CreateNativeControl() {
- NativeControlCreated(gtk_views_entry_new(this));
- gtk_entry_set_invisible_char(GTK_ENTRY(native_view()),
- static_cast<gunichar>(kObscuredChar));
- textfield_->UpdateAllProperties();
-}
-
-void NativeTextfieldGtk::NativeControlCreated(GtkWidget* widget) {
- NativeControlGtk::NativeControlCreated(widget);
-
- g_signal_connect(widget, "changed", G_CALLBACK(OnChangedThunk), this);
- // In order to properly trigger Accelerators bound to VKEY_RETURN, we need
- // to send an event when the widget gets the activate signal.
- g_signal_connect(widget, "activate", G_CALLBACK(OnActivateThunk), this);
- g_signal_connect(widget, "move-cursor", G_CALLBACK(OnMoveCursorThunk), this);
- g_signal_connect(widget, "button-press-event",
- G_CALLBACK(OnButtonPressEventThunk), this);
- g_signal_connect(widget, "key-press-event",
- G_CALLBACK(OnKeyPressEventThunk), this);
- g_signal_connect(widget, "paste-clipboard",
- G_CALLBACK(OnPasteClipboardThunk), this);
-
- g_signal_connect_after(widget, "button-release-event",
- G_CALLBACK(OnButtonReleaseEventAfterThunk), this);
- g_signal_connect_after(widget, "key-press-event",
- G_CALLBACK(OnKeyPressEventAfterThunk), this);
-}
-
-bool NativeTextfieldGtk::IsObscured() {
- return textfield_->IsObscured();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// NativeTextfieldWrapper:
-
-// static
-NativeTextfieldWrapper* NativeTextfieldWrapper::CreateWrapper(
- Textfield* field) {
- if (Widget::IsPureViews())
- return new NativeTextfieldViews(field);
- return new NativeTextfieldGtk(field);
-}
-
-} // namespace views
« no previous file with comments | « ui/views/controls/textfield/native_textfield_gtk.h ('k') | ui/views/events/event_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698