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 <algorithm> | 10 #include <algorithm> |
(...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
652 static guint signal_id = | 652 static guint signal_id = |
653 g_signal_lookup("key-press-event", GTK_TYPE_WIDGET); | 653 g_signal_lookup("key-press-event", GTK_TYPE_WIDGET); |
654 g_signal_stop_emission(widget, signal_id, 0); | 654 g_signal_stop_emission(widget, signal_id, 0); |
655 } | 655 } |
656 | 656 |
657 return result; | 657 return result; |
658 } | 658 } |
659 | 659 |
660 gboolean AutocompleteEditViewGtk::HandleKeyRelease(GtkWidget* widget, | 660 gboolean AutocompleteEditViewGtk::HandleKeyRelease(GtkWidget* widget, |
661 GdkEventKey* event) { | 661 GdkEventKey* event) { |
662 // Omnibox2 can switch its contents while pressing a control key. To switch | |
663 // the contents of omnibox2, we notify the AutocompleteEditModel class when | |
664 // the control-key state is changed. | |
662 if (event->keyval == GDK_Control_L || event->keyval == GDK_Control_R) { | 665 if (event->keyval == GDK_Control_L || event->keyval == GDK_Control_R) { |
663 // Omnibox2 can switch its contents while pressing a control key. To switch | 666 // Round trip to query the control state after the release. This allows |
Evan Martin
2009/08/25 01:03:50
Maybe mention that |event| still thinks control is
| |
664 // the contents of omnibox2, we notify the AutocompleteEditModel class when | 667 // you to release one control key while still holding another control key. |
665 // the control-key state is changed. | 668 GdkDisplay* display = gdk_drawable_get_display(event->window); |
666 model_->OnControlKeyChanged(false); | 669 GdkModifierType mod; |
670 gdk_display_get_pointer(display, NULL, NULL, NULL, &mod); | |
671 if (!(mod & GDK_CONTROL_MASK)) | |
672 model_->OnControlKeyChanged(false); | |
667 } | 673 } |
668 | 674 |
669 // Even though we handled the press ourselves, let GtkTextView handle the | 675 // Even though we handled the press ourselves, let GtkTextView handle the |
670 // release. It shouldn't do anything particularly interesting, but it will | 676 // release. It shouldn't do anything particularly interesting, but it will |
671 // handle the IME work for us. | 677 // handle the IME work for us. |
672 return FALSE; // Propagate into GtkTextView. | 678 return FALSE; // Propagate into GtkTextView. |
673 } | 679 } |
674 | 680 |
675 gboolean AutocompleteEditViewGtk::HandleViewButtonPress(GdkEventButton* event) { | 681 gboolean AutocompleteEditViewGtk::HandleViewButtonPress(GdkEventButton* event) { |
676 if (event->button == 1) { | 682 if (event->button == 1) { |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1105 const std::string& selected_text) { | 1111 const std::string& selected_text) { |
1106 GtkClipboard* clipboard = | 1112 GtkClipboard* clipboard = |
1107 gtk_widget_get_clipboard(text_view_, GDK_SELECTION_PRIMARY); | 1113 gtk_widget_get_clipboard(text_view_, GDK_SELECTION_PRIMARY); |
1108 DCHECK(clipboard); | 1114 DCHECK(clipboard); |
1109 if (!clipboard) | 1115 if (!clipboard) |
1110 return; | 1116 return; |
1111 | 1117 |
1112 gtk_clipboard_set_text( | 1118 gtk_clipboard_set_text( |
1113 clipboard, selected_text.data(), selected_text.size()); | 1119 clipboard, selected_text.data(), selected_text.size()); |
1114 } | 1120 } |
OLD | NEW |