[wxGTK2] wxTextCtrl::XYToPosition(): Return -1 if x or y is out of range
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35147 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -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}
|
||||||
|
@@ -1210,8 +1210,14 @@ long wxTextCtrl::XYToPosition(long x, long y ) const
|
|||||||
|
|
||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
GtkTextIter iter;
|
GtkTextIter iter;
|
||||||
gtk_text_buffer_get_iter_at_line_offset(m_buffer, &iter, y, x);
|
if (y >= gtk_text_buffer_get_line_count (m_buffer))
|
||||||
return gtk_text_iter_get_offset(&iter);
|
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
|
#else
|
||||||
long pos=0;
|
long pos=0;
|
||||||
for( int i=0; i<y; i++ ) pos += GetLineLength(i) + 1; // one for '\n'
|
for( int i=0; i<y; i++ ) pos += GetLineLength(i) + 1; // one for '\n'
|
||||||
|
@@ -1210,8 +1210,14 @@ long wxTextCtrl::XYToPosition(long x, long y ) const
|
|||||||
|
|
||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
GtkTextIter iter;
|
GtkTextIter iter;
|
||||||
gtk_text_buffer_get_iter_at_line_offset(m_buffer, &iter, y, x);
|
if (y >= gtk_text_buffer_get_line_count (m_buffer))
|
||||||
return gtk_text_iter_get_offset(&iter);
|
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
|
#else
|
||||||
long pos=0;
|
long pos=0;
|
||||||
for( int i=0; i<y; i++ ) pos += GetLineLength(i) + 1; // one for '\n'
|
for( int i=0; i<y; i++ ) pos += GetLineLength(i) + 1; // one for '\n'
|
||||||
|
Reference in New Issue
Block a user