]> git.saurik.com Git - wxWidgets.git/commitdiff
[wxGTK2] wxTextCtrl::XYToPosition(): Return -1 if x or y is out of range
authorMart Raudsepp <leio@gentoo.org>
Mon, 8 Aug 2005 08:53:48 +0000 (08:53 +0000)
committerMart Raudsepp <leio@gentoo.org>
Mon, 8 Aug 2005 08:53:48 +0000 (08:53 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35147 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/text.tex
src/gtk/textctrl.cpp
src/gtk1/textctrl.cpp

index 0da0113a0ff38db0ef1a7cfccb1ff96162800145..a3413657ec34bbd663d24260c7cc3fa8a1f55714 100644 (file)
@@ -1247,7 +1247,7 @@ Converts the given zero based column and line number to a position.
 
 \wxheading{Return value}
 
 
 \wxheading{Return value}
 
-The position value.
+The position value, or -1 if {\tt x} or {\tt y} was invalid.
 
 
 \membersection{wxTextCtrl::operator \cinsert}\label{wxtextctrlinsert}
 
 
 \membersection{wxTextCtrl::operator \cinsert}\label{wxtextctrlinsert}
index 9d6379854de690e36d58bfd2ff79072a92180d68..9f5e5be54f808a8038d6087b13aa87b72f45e026 100644 (file)
@@ -1210,8 +1210,14 @@ long wxTextCtrl::XYToPosition(long x, long y ) const
 
 #ifdef __WXGTK20__
     GtkTextIter iter;
 
 #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'
 #else
     long pos=0;
     for( int i=0; i<y; i++ ) pos += GetLineLength(i) + 1; // one for '\n'
index 9d6379854de690e36d58bfd2ff79072a92180d68..9f5e5be54f808a8038d6087b13aa87b72f45e026 100644 (file)
@@ -1210,8 +1210,14 @@ long wxTextCtrl::XYToPosition(long x, long y ) const
 
 #ifdef __WXGTK20__
     GtkTextIter iter;
 
 #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'
 #else
     long pos=0;
     for( int i=0; i<y; i++ ) pos += GetLineLength(i) + 1; // one for '\n'