From 273109e0048442ba5f6361d6e683e5b4a69a472b Mon Sep 17 00:00:00 2001 From: Kacper Kasper Date: Mon, 28 Apr 2014 10:26:51 +0000 Subject: [PATCH] Fix window behavior when default button is present * Don't intercept Enter key press in a window when there is default button and another BControl focused. * Current behavior was basically breaking every window using default button. Even if there was a button focused (using Tab key), when Enter was hit, default button handled the message, therefore instead of i.e. 'Revert' 'Apply' was pressed. * Fixes #10792. Signed-off-by: Jessica Hamilton --- src/kits/interface/Window.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/kits/interface/Window.cpp b/src/kits/interface/Window.cpp index f23681f23d..f315dacf94 100644 --- a/src/kits/interface/Window.cpp +++ b/src/kits/interface/Window.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2011, Haiku. + * Copyright 2001-2014, Haiku. * Distributed under the terms of the MIT License. * * Authors: @@ -3287,9 +3287,11 @@ BWindow::_DetermineTarget(BMessage* message, BHandler* target) case B_KEY_UP: { // if we have a default button, it might want to hear - // about pressing the key + // about pressing the key, but it shouldn't + // intercept it if another BControl is focused int32 rawChar; if (DefaultButton() != NULL + && dynamic_cast(CurrentFocus()) == NULL && message->FindInt32("raw_char", &rawChar) == B_OK && rawChar == B_ENTER) return DefaultButton();