X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/50aee613a3d3235f24a68e6d4a4d2420225643fd..bcd846ea7191d33d86e28ee1927b461c54d2fb8f:/src/gtk/textctrl.cpp diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 9d6379854d..a6dfa4b31d 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -7,10 +7,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "textctrl.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -18,6 +14,7 @@ #include "wx/utils.h" #include "wx/intl.h" #include "wx/log.h" +#include "wx/math.h" #include "wx/settings.h" #include "wx/panel.h" #include "wx/strconv.h" @@ -168,7 +165,7 @@ extern "C" { static void wxGtkTextInsert(GtkWidget *text, GtkTextBuffer *text_buffer, const wxTextAttr& attr, - wxCharBuffer buffer) + const wxCharBuffer& buffer) { gint start_offset; @@ -1033,7 +1030,7 @@ void wxTextCtrl::WriteText( const wxString &text ) GtkAdjustment *adj = gtk_scrolled_window_get_vadjustment( GTK_SCROLLED_WINDOW(m_widget) ); // Scroll to cursor, but only if scrollbar thumb is at the very bottom - if ( adj->value == adj->upper - adj->page_size ) + if ( wxIsSameDouble(adj->value, adj->upper - adj->page_size) ) { gtk_text_view_scroll_to_mark( GTK_TEXT_VIEW(m_text), gtk_text_buffer_get_insert( m_buffer ), 0.0, FALSE, 0.0, 1.0 ); @@ -1210,8 +1207,14 @@ long wxTextCtrl::XYToPosition(long x, long y ) const #ifdef __WXGTK20__ GtkTextIter iter; - gtk_text_buffer_get_iter_at_line_offset(m_buffer, &iter, y, x); - return gtk_text_iter_get_offset(&iter); + if (y >= gtk_text_buffer_get_line_count (m_buffer)) + return -1; + + gtk_text_buffer_get_iter_at_line(m_buffer, &iter, y); + if (x >= gtk_text_iter_get_chars_in_line (&iter)) + return -1; + + return gtk_text_iter_get_offset(&iter) + x; #else long pos=0; for( int i=0; i