]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/textctrl.cpp
removed unused local variable; converted tabs to spaces
[wxWidgets.git] / src / gtk / textctrl.cpp
index 9d6379854de690e36d58bfd2ff79072a92180d68..a6dfa4b31d8ea355fa7eef3aba8aad31ed399b36 100644 (file)
@@ -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<y; i++ ) pos += GetLineLength(i) + 1; // one for '\n'