| Index: views/controls/textfield/native_textfield_gtk.cc
|
| ===================================================================
|
| --- views/controls/textfield/native_textfield_gtk.cc (revision 25765)
|
| +++ views/controls/textfield/native_textfield_gtk.cc (working copy)
|
| @@ -134,18 +134,48 @@
|
| return native_view();
|
| }
|
|
|
| +// static
|
| +gboolean NativeTextfieldGtk::OnKeyPressEventHandler(
|
| + GtkWidget* entry,
|
| + GdkEventKey* event,
|
| + NativeTextfieldGtk* textfield) {
|
| + return textfield->OnKeyPressEvent(event);
|
| +}
|
| +
|
| +gboolean NativeTextfieldGtk::OnKeyPressEvent(GdkEventKey* event) {
|
| + Textfield::Controller* controller = textfield_->GetController();
|
| + if (controller)
|
| + return controller->HandleKeystroke(textfield_, Textfield::Keystroke(event));
|
| + return false;
|
| +}
|
| +
|
| +// static
|
| +gboolean NativeTextfieldGtk::OnChangedHandler(
|
| + GtkWidget* entry,
|
| + NativeTextfieldGtk* textfield) {
|
| + return textfield->OnChanged();
|
| +}
|
| +
|
| +gboolean NativeTextfieldGtk::OnChanged() {
|
| + Textfield::Controller* controller = textfield_->GetController();
|
| + if (controller)
|
| + controller->ContentsChanged(textfield_, GetText());
|
| + return false;
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // NativeTextfieldGtk, NativeControlGtk overrides:
|
|
|
| void NativeTextfieldGtk::CreateNativeControl() {
|
| - // TODO(brettw) hook in an observer to get text change events so we can call
|
| - // the controller.
|
| NativeControlCreated(gtk_entry_new());
|
| }
|
|
|
| void NativeTextfieldGtk::NativeControlCreated(GtkWidget* widget) {
|
| NativeControlGtk::NativeControlCreated(widget);
|
| - // TODO(port): post-creation init
|
| + g_signal_connect(widget, "changed",
|
| + G_CALLBACK(OnChangedHandler), this);
|
| + g_signal_connect(widget, "key-press-event",
|
| + G_CALLBACK(OnKeyPressEventHandler), this);
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|