From 28051eb04df0865d5b6b3e1ca3dc88fa7f6ed993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Fri, 1 Jan 2010 23:57:27 +0000 Subject: [PATCH] Always apply the changes to a property in the text editor when changing focus. Fixes #2749. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34847 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../generic/gui/InputTextView.cpp | 32 ++++++++++--------- .../icon-o-matic/generic/gui/InputTextView.h | 11 +++---- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/apps/icon-o-matic/generic/gui/InputTextView.cpp b/src/apps/icon-o-matic/generic/gui/InputTextView.cpp index 965bd55d35..d1901d06e8 100644 --- a/src/apps/icon-o-matic/generic/gui/InputTextView.cpp +++ b/src/apps/icon-o-matic/generic/gui/InputTextView.cpp @@ -1,9 +1,6 @@ /* - * Copyright 2006, Haiku. - * Distributed under the terms of the MIT License. - * - * Authors: - * Stephan Aßmus + * Copyright 2006-2009, Stephan Aßmus . + * All rights reserved. Distributed under the terms of the MIT License. */ #include "InputTextView.h" @@ -69,10 +66,6 @@ InputTextView::KeyDown(const char* bytes, int32 numBytes) // revert any typing changes RevertChanges(); break; - case B_TAB: - // skip BTextView implementation - BView::KeyDown(bytes, numBytes); - // fall through case B_RETURN: ApplyChanges(); break; @@ -89,12 +82,21 @@ InputTextView::KeyDown(const char* bytes, int32 numBytes) void InputTextView::MakeFocus(bool focus) { - if (focus != IsFocus()) { - if (BView* view = Parent()) - view->Invalidate(); - BTextView::MakeFocus(focus); - if (focus) - SelectAll(); + if (focus == IsFocus()) + return; + + if (BView* view = Parent()) + view->Invalidate(); + BTextView::MakeFocus(focus); + if (focus) { + SelectAll(); + fTextBeforeFocus = Text(); + } else { + // Only pressing ESC is supposed to revert to the previous + // value and not invoke, but in that case, the text will already + // be the previous value when we lose focus here. + if (fTextBeforeFocus != Text()) + Invoke(); } } diff --git a/src/apps/icon-o-matic/generic/gui/InputTextView.h b/src/apps/icon-o-matic/generic/gui/InputTextView.h index d99aa2403a..dbf44e4234 100644 --- a/src/apps/icon-o-matic/generic/gui/InputTextView.h +++ b/src/apps/icon-o-matic/generic/gui/InputTextView.h @@ -1,15 +1,12 @@ /* - * Copyright 2006, Haiku. - * Distributed under the terms of the MIT License. - * - * Authors: - * Stephan Aßmus + * Copyright 2006-2009, Stephan Aßmus . + * All rights reserved. Distributed under the terms of the MIT License. */ - #ifndef INPUT_TEXT_VIEW_H #define INPUT_TEXT_VIEW_H #include +#include #include class InputTextView : public BTextView, @@ -50,6 +47,8 @@ protected: void _CheckTextRect(); bool fWasFocus; + BString fTextBeforeFocus; + }; #endif // INPUT_TEXT_VIEW_H