OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/autocomplete/autocomplete_edit_view_gtk.h" | 5 #include "chrome/browser/autocomplete/autocomplete_edit_view_gtk.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 #include <gdk/gdkkeysyms.h> | 8 #include <gdk/gdkkeysyms.h> |
9 | 9 |
10 #include "base/gfx/gtk_util.h" | 10 #include "base/gfx/gtk_util.h" |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 NULL, "foreground", kInsecureSchemeColor, NULL); | 81 NULL, "foreground", kInsecureSchemeColor, NULL); |
82 | 82 |
83 // NOTE: This code used to connect to "changed", however this was fired too | 83 // NOTE: This code used to connect to "changed", however this was fired too |
84 // often and during bad times (our own buffer changes?). It works out much | 84 // often and during bad times (our own buffer changes?). It works out much |
85 // better to listen to end-user-action, which should be fired whenever the | 85 // better to listen to end-user-action, which should be fired whenever the |
86 // user makes some sort of change to the buffer. | 86 // user makes some sort of change to the buffer. |
87 g_signal_connect(text_buffer_, "begin-user-action", | 87 g_signal_connect(text_buffer_, "begin-user-action", |
88 G_CALLBACK(&HandleBeginUserActionThunk), this); | 88 G_CALLBACK(&HandleBeginUserActionThunk), this); |
89 g_signal_connect(text_buffer_, "end-user-action", | 89 g_signal_connect(text_buffer_, "end-user-action", |
90 G_CALLBACK(&HandleEndUserActionThunk), this); | 90 G_CALLBACK(&HandleEndUserActionThunk), this); |
91 // We connect to key press and release for special handling of the enter key. | 91 // We connect to key press and release for special handling of a few keys. |
92 g_signal_connect(text_view_, "key-press-event", | 92 g_signal_connect(text_view_, "key-press-event", |
93 G_CALLBACK(&HandleKeyPressThunk), this); | 93 G_CALLBACK(&HandleKeyPressThunk), this); |
94 g_signal_connect(text_view_, "key-release-event", | 94 g_signal_connect(text_view_, "key-release-event", |
95 G_CALLBACK(&HandleKeyReleaseThunk), this); | 95 G_CALLBACK(&HandleKeyReleaseThunk), this); |
96 g_signal_connect(text_view_, "size-request", | 96 g_signal_connect(text_view_, "size-request", |
97 G_CALLBACK(&HandleViewSizeRequest), this); | 97 G_CALLBACK(&HandleViewSizeRequest), this); |
98 g_signal_connect(text_view_, "button-press-event", | 98 g_signal_connect(text_view_, "button-press-event", |
99 G_CALLBACK(&HandleViewButtonPressThunk), this); | 99 G_CALLBACK(&HandleViewButtonPressThunk), this); |
100 g_signal_connect(text_view_, "focus-in-event", | 100 g_signal_connect(text_view_, "focus-in-event", |
101 G_CALLBACK(&HandleViewFocusInThunk), this); | 101 G_CALLBACK(&HandleViewFocusInThunk), this); |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 // GtkTextView key_press default handler. TODO(deanm): We do however omit | 329 // GtkTextView key_press default handler. TODO(deanm): We do however omit |
330 // some IME related code, this might become a problem if an IME wants to | 330 // some IME related code, this might become a problem if an IME wants to |
331 // handle enter. We can get at the im_context and do it ourselves if needed. | 331 // handle enter. We can get at the im_context and do it ourselves if needed. |
332 if (event->keyval == GDK_Return || | 332 if (event->keyval == GDK_Return || |
333 event->keyval == GDK_ISO_Enter || | 333 event->keyval == GDK_ISO_Enter || |
334 event->keyval == GDK_KP_Enter) { | 334 event->keyval == GDK_KP_Enter) { |
335 bool alt_held = (event->state & GDK_MOD1_MASK); | 335 bool alt_held = (event->state & GDK_MOD1_MASK); |
336 model_->AcceptInput(alt_held ? NEW_FOREGROUND_TAB : CURRENT_TAB, false); | 336 model_->AcceptInput(alt_held ? NEW_FOREGROUND_TAB : CURRENT_TAB, false); |
337 return TRUE; // Don't propagate into GtkTextView. | 337 return TRUE; // Don't propagate into GtkTextView. |
338 } | 338 } |
| 339 if (event->keyval == GDK_Escape && event->state == 0) { |
| 340 model_->OnEscapeKeyPressed(); |
| 341 return TRUE; // Don't propagate into GtkTextView. |
| 342 } |
339 return FALSE; // Propagate into GtkTextView. | 343 return FALSE; // Propagate into GtkTextView. |
340 } | 344 } |
341 | 345 |
342 gboolean AutocompleteEditViewGtk::HandleKeyRelease(GtkWidget* widget, | 346 gboolean AutocompleteEditViewGtk::HandleKeyRelease(GtkWidget* widget, |
343 GdkEventKey* event) { | 347 GdkEventKey* event) { |
344 // We ate the press, might as well eat the release. | 348 // We ate the press, might as well eat the release. |
345 if (event->keyval == GDK_Return || | 349 if (event->keyval == GDK_Return || |
346 event->keyval == GDK_ISO_Enter || | 350 event->keyval == GDK_ISO_Enter || |
347 event->keyval == GDK_KP_Enter) { | 351 event->keyval == GDK_KP_Enter || |
| 352 (event->keyval == GDK_Escape && event->state == 0)) { |
348 return TRUE; // Don't propagate into GtkTextView. | 353 return TRUE; // Don't propagate into GtkTextView. |
349 } | 354 } |
350 return FALSE; // Propagate into GtkTextView. | 355 return FALSE; // Propagate into GtkTextView. |
351 } | 356 } |
352 | 357 |
353 // static | 358 // static |
354 void AutocompleteEditViewGtk::HandleViewSizeRequest(GtkWidget* view, | 359 void AutocompleteEditViewGtk::HandleViewSizeRequest(GtkWidget* view, |
355 GtkRequisition* req, | 360 GtkRequisition* req, |
356 gpointer unused) { | 361 gpointer unused) { |
357 // Don't force a minimum size, allow our embedder to size us better. | 362 // Don't force a minimum size, allow our embedder to size us better. |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
494 &start, &end); | 499 &start, &end); |
495 } | 500 } |
496 gtk_widget_modify_base(text_view_, GTK_STATE_NORMAL, background); | 501 gtk_widget_modify_base(text_view_, GTK_STATE_NORMAL, background); |
497 } | 502 } |
498 } | 503 } |
499 | 504 |
500 void AutocompleteEditViewGtk::TextChanged() { | 505 void AutocompleteEditViewGtk::TextChanged() { |
501 EmphasizeURLComponents(); | 506 EmphasizeURLComponents(); |
502 controller_->OnChanged(); | 507 controller_->OnChanged(); |
503 } | 508 } |
OLD | NEW |