summaryrefslogtreecommitdiffstats
path: root/ui/views/widget
diff options
context:
space:
mode:
authorsadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-05 04:13:40 +0000
committersadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-05 04:13:40 +0000
commit709f92dc4a855b975f7400e207ac20ecf79cdb14 (patch)
treede17b9860b9beb062f4cc67daeeea61c149cce08 /ui/views/widget
parentfd7e9664ca6c3c84fac80f84ac4c07cdfbcf32e1 (diff)
downloadchromium_src-709f92dc4a855b975f7400e207ac20ecf79cdb14.zip
chromium_src-709f92dc4a855b975f7400e207ac20ecf79cdb14.tar.gz
chromium_src-709f92dc4a855b975f7400e207ac20ecf79cdb14.tar.bz2
views: Fix key-event regression.
A typo fix. But I have added a test to make sure future changes do not cause similar regressions. BUG=159109 Review URL: https://codereview.chromium.org/11275126 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165897 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views/widget')
-rw-r--r--ui/views/widget/root_view.cc2
-rw-r--r--ui/views/widget/widget.cc2
-rw-r--r--ui/views/widget/widget_unittest.cc27
3 files changed, 29 insertions, 2 deletions
diff --git a/ui/views/widget/root_view.cc b/ui/views/widget/root_view.cc
index b8cac10..e9e2729 100644
--- a/ui/views/widget/root_view.cc
+++ b/ui/views/widget/root_view.cc
@@ -129,7 +129,7 @@ ui::EventResult RootView::DispatchKeyEvent(const ui::KeyEvent& event) {
v->OnKeyPressed(event) : v->OnKeyReleased(event);
}
- return consumed ? ui::ER_CONSUMED : ui::ER_HANDLED;
+ return consumed ? ui::ER_CONSUMED : ui::ER_UNHANDLED;
}
ui::EventResult RootView::DispatchScrollEvent(ui::ScrollEvent* event) {
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc
index 41752a5..f263459 100644
--- a/ui/views/widget/widget.cc
+++ b/ui/views/widget/widget.cc
@@ -1091,7 +1091,7 @@ int Widget::GetNonClientComponent(const gfx::Point& point) {
bool Widget::OnKeyEvent(const ui::KeyEvent& event) {
ScopedEvent scoped(this, event);
return static_cast<internal::RootView*>(GetRootView())->
- DispatchKeyEvent(event) == ui::ER_UNHANDLED;
+ DispatchKeyEvent(event) != ui::ER_UNHANDLED;
}
bool Widget::OnMouseEvent(const ui::MouseEvent& event) {
diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc
index 4b75f51..4a1689a 100644
--- a/ui/views/widget/widget_unittest.cc
+++ b/ui/views/widget/widget_unittest.cc
@@ -5,10 +5,12 @@
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
+#include "base/utf_string_conversions.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/native_widget_types.h"
#include "ui/gfx/point.h"
#include "ui/views/bubble/bubble_delegate.h"
+#include "ui/views/controls/textfield/textfield.h"
#include "ui/views/test/test_views_delegate.h"
#include "ui/views/test/views_test_base.h"
#include "ui/views/views_delegate.h"
@@ -975,5 +977,30 @@ TEST_F(WidgetTest, ResetCaptureOnGestureEnd) {
RunPendingMessages();
}
+#if defined(USE_AURA)
+// The key-event propagation from Widget happens differently on aura and
+// non-aura systems because of the difference in IME. So this test works only on
+// aura.
+TEST_F(WidgetTest, KeyboardInputEvent) {
+ Widget* toplevel = CreateTopLevelPlatformWidget();
+ View* container = new View;
+ toplevel->SetContentsView(container);
+
+ Textfield* textfield = new Textfield();
+ textfield->SetText(ASCIIToUTF16("some text"));
+ container->AddChildView(textfield);
+ toplevel->Show();
+ textfield->RequestFocus();
+
+ // The press gets handled. The release doesn't have an effect.
+ ui::KeyEvent backspace_p(ui::ET_KEY_PRESSED, ui::VKEY_DELETE, 0, false);
+ EXPECT_TRUE(toplevel->OnKeyEvent(backspace_p));
+ ui::KeyEvent backspace_r(ui::ET_KEY_RELEASED, ui::VKEY_DELETE, 0, false);
+ EXPECT_FALSE(toplevel->OnKeyEvent(backspace_r));
+
+ toplevel->Close();
+}
+#endif // defined(USE_AURA)
+
} // namespace
} // namespace views