From 702fe1fccfd42a12b2b3ddd1e7468b372ef9b87d Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Wed, 18 Sep 2002 18:47:39 +0000 Subject: [PATCH] Delete the selection before inserting text in WriteText. Also, fix bug in repositioning of the caret after the insertion. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17252 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/textctrl.cpp | 8 +++++--- src/gtk1/textctrl.cpp | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 980ef79142..eec8c86a86 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -552,6 +552,7 @@ void wxTextCtrl::WriteText( const wxString &text ) wxCharBuffer buffer( wxConvUTF8.cWC2MB( wxConvLocal.cWX2WC( text ) ) ); #endif GtkTextBuffer *text_buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_text) ); + // TODO: call wahtever is needed to delete the selection gtk_text_buffer_insert_at_cursor( text_buffer, buffer, strlen(buffer) ); #else // GTK 1.x @@ -561,6 +562,7 @@ void wxTextCtrl::WriteText( const wxString &text ) // always use m_defaultStyle, even if it is empty as otherwise // resetting the style and appending some more text wouldn't work: if // we don't specify the style explicitly, the old style would be used + gtk_editable_delete_selection( GTK_EDITABLE(m_text) ); wxGtkTextInsert(m_text, m_defaultStyle, text.c_str(), text.Len()); // Bring editable's cursor back uptodate. @@ -569,6 +571,9 @@ void wxTextCtrl::WriteText( const wxString &text ) } else // single line { + // First remove the selection if there is one + gtk_editable_delete_selection( GTK_EDITABLE(m_text) ); + // This moves the cursor pos to behind the inserted text. gint len = GET_EDITABLE_POS(m_text); @@ -585,9 +590,6 @@ void wxTextCtrl::WriteText( const wxString &text ) gtk_editable_insert_text( GTK_EDITABLE(m_text), text.c_str(), text.Len(), &len ); #endif - // Bring editable's cursor uptodate. - len += text.Len(); - // Bring entry's cursor uptodate. gtk_entry_set_position( GTK_ENTRY(m_text), len ); } diff --git a/src/gtk1/textctrl.cpp b/src/gtk1/textctrl.cpp index 980ef79142..eec8c86a86 100644 --- a/src/gtk1/textctrl.cpp +++ b/src/gtk1/textctrl.cpp @@ -552,6 +552,7 @@ void wxTextCtrl::WriteText( const wxString &text ) wxCharBuffer buffer( wxConvUTF8.cWC2MB( wxConvLocal.cWX2WC( text ) ) ); #endif GtkTextBuffer *text_buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_text) ); + // TODO: call wahtever is needed to delete the selection gtk_text_buffer_insert_at_cursor( text_buffer, buffer, strlen(buffer) ); #else // GTK 1.x @@ -561,6 +562,7 @@ void wxTextCtrl::WriteText( const wxString &text ) // always use m_defaultStyle, even if it is empty as otherwise // resetting the style and appending some more text wouldn't work: if // we don't specify the style explicitly, the old style would be used + gtk_editable_delete_selection( GTK_EDITABLE(m_text) ); wxGtkTextInsert(m_text, m_defaultStyle, text.c_str(), text.Len()); // Bring editable's cursor back uptodate. @@ -569,6 +571,9 @@ void wxTextCtrl::WriteText( const wxString &text ) } else // single line { + // First remove the selection if there is one + gtk_editable_delete_selection( GTK_EDITABLE(m_text) ); + // This moves the cursor pos to behind the inserted text. gint len = GET_EDITABLE_POS(m_text); @@ -585,9 +590,6 @@ void wxTextCtrl::WriteText( const wxString &text ) gtk_editable_insert_text( GTK_EDITABLE(m_text), text.c_str(), text.Len(), &len ); #endif - // Bring editable's cursor uptodate. - len += text.Len(); - // Bring entry's cursor uptodate. gtk_entry_set_position( GTK_ENTRY(m_text), len ); }