From 059979d8481de8fb172b1272c6d10a005ffca3b3 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 11 Dec 2008 16:46:25 +0000 Subject: [PATCH] fix wxTextCtrl::Replace() under wxGTK; added unit test for it and describe its effect on the insertion point git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57253 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- interface/wx/textctrl.h | 6 ++++++ src/common/textentrycmn.cpp | 1 + tests/controls/textentrytest.cpp | 24 ++++++++++++++++++++++++ tests/controls/textentrytest.h | 4 +++- 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/interface/wx/textctrl.h b/interface/wx/textctrl.h index f5f35e670c..e6f3aae4ac 100644 --- a/interface/wx/textctrl.h +++ b/interface/wx/textctrl.h @@ -1476,6 +1476,9 @@ public: Removes the text starting at the first given position up to (but not including) the character at the last position. + This function puts the current insertion point position at @a to as a + side effect. + @param from The first position. @param to @@ -1487,6 +1490,9 @@ public: Replaces the text starting at the first position up to (but not including) the character at the last position with the given text. + This function puts the current insertion point position at @a to as a + side effect. + @param from The first position. @param to diff --git a/src/common/textentrycmn.cpp b/src/common/textentrycmn.cpp index 8e0551c3db..b179499381 100644 --- a/src/common/textentrycmn.cpp +++ b/src/common/textentrycmn.cpp @@ -73,6 +73,7 @@ void wxTextEntryBase::Replace(long from, long to, const wxString& value) Remove(from, to); } + SetInsertionPoint(from); WriteText(value); } diff --git a/tests/controls/textentrytest.cpp b/tests/controls/textentrytest.cpp index 03adf47680..9b5bf74f06 100644 --- a/tests/controls/textentrytest.cpp +++ b/tests/controls/textentrytest.cpp @@ -165,3 +165,27 @@ void TextEntryTestCase::InsertionPoint() CPPUNIT_ASSERT_EQUAL( 1, entry->GetInsertionPoint() ); } +void TextEntryTestCase::Replace() +{ + wxTextEntry * const entry = GetTestEntry(); + + entry->SetValue("Hello replace\n" + "0123456789012"); + entry->SetInsertionPoint(0); + + entry->Replace(6, 13, "changed"); + + CPPUNIT_ASSERT_EQUAL("Hello changed\n" + "0123456789012", + entry->GetValue()); + CPPUNIT_ASSERT_EQUAL(13, entry->GetInsertionPoint()); + + entry->Replace(13, -1, ""); + CPPUNIT_ASSERT_EQUAL("Hello changed", entry->GetValue()); + CPPUNIT_ASSERT_EQUAL(13, entry->GetInsertionPoint()); + + entry->Replace(0, 6, "Un"); + CPPUNIT_ASSERT_EQUAL("Unchanged", entry->GetValue()); + CPPUNIT_ASSERT_EQUAL(2, entry->GetInsertionPoint()); +} + diff --git a/tests/controls/textentrytest.h b/tests/controls/textentrytest.h index b8376ddde0..8814772020 100644 --- a/tests/controls/textentrytest.h +++ b/tests/controls/textentrytest.h @@ -37,12 +37,14 @@ protected: CPPUNIT_TEST( SetValue ); \ CPPUNIT_TEST( TextChangeEvents ); \ CPPUNIT_TEST( Selection ); \ - CPPUNIT_TEST( InsertionPoint ) + CPPUNIT_TEST( InsertionPoint ); \ + CPPUNIT_TEST( Replace ) void SetValue(); void TextChangeEvents(); void Selection(); void InsertionPoint(); + void Replace(); private: // Selection() test helper: verify that selection is as described by the -- 2.45.2