X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/581ee8a9c5cc369e556b6749fe106fe2f95ce7bc..be6577566570876c0c00621ff98c786d7c6de80e:/src/gtk/textctrl.cpp diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index c91af21b5e..95ba64e948 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -994,7 +994,14 @@ void wxTextCtrl::SetSelection( long from, long to ) if (m_windowStyle & wxTE_MULTILINE) { #ifdef __WXGTK20__ - // ???? + GtkTextBuffer *buf = gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_text) ); + + GtkTextIter fromi, toi; + gtk_text_buffer_get_iter_at_offset( buf, &fromi, from ); + gtk_text_buffer_get_iter_at_offset( buf, &toi, to ); + + gtk_text_buffer_place_cursor( buf, &toi ); + gtk_text_buffer_move_mark_by_name( buf, "selection_bound", &fromi ); #else gtk_editable_select_region( GTK_EDITABLE(m_text), (gint)from, (gint)to ); #endif @@ -1180,7 +1187,9 @@ void wxTextCtrl::GetSelection(long* fromOut, long* toOut) const gint from, to; #ifdef __WXGTK20__ - if ( !gtk_editable_get_selection_bounds(GTK_EDITABLE(m_text), &from, &to) ) + GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (m_text)); + GtkTextIter ifrom, ito; + if (!gtk_text_buffer_get_selection_bounds(buffer, &ifrom, &ito)) #else if ( !(GTK_EDITABLE(m_text)->has_selection) ) #endif @@ -1190,7 +1199,10 @@ void wxTextCtrl::GetSelection(long* fromOut, long* toOut) const } else // got selection { -#ifndef __WXGTK20__ +#ifdef __WXGTK20__ + from = gtk_text_iter_get_offset(&ifrom); + to = gtk_text_iter_get_offset(&ito); +#else from = (long) GTK_EDITABLE(m_text)->selection_start_pos; to = (long) GTK_EDITABLE(m_text)->selection_end_pos; #endif