gtk_text_iter_get_line and get_line_offset work fine on the end iter. Don't bail if we are at the end of buffer.
Fixes one part of bug #1516281, the other part is controversial and probably not reasonable to change. Also deal with NULL being passed as the x or y pointer, as is done also on wxMSW (this was done on 2.6 branch as well, but not noted). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40089 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -944,18 +944,20 @@ bool wxTextCtrl::PositionToXY(long pos, long *x, long *y ) const
|
|||||||
{
|
{
|
||||||
GtkTextIter iter;
|
GtkTextIter iter;
|
||||||
gtk_text_buffer_get_iter_at_offset(m_buffer, &iter, pos);
|
gtk_text_buffer_get_iter_at_offset(m_buffer, &iter, pos);
|
||||||
if (gtk_text_iter_is_end(&iter))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
*y = gtk_text_iter_get_line(&iter);
|
if ( y )
|
||||||
*x = gtk_text_iter_get_line_offset(&iter);
|
*y = gtk_text_iter_get_line(&iter);
|
||||||
|
if ( x )
|
||||||
|
*x = gtk_text_iter_get_line_offset(&iter);
|
||||||
}
|
}
|
||||||
else // single line control
|
else // single line control
|
||||||
{
|
{
|
||||||
if ( pos <= GTK_ENTRY(m_text)->text_length )
|
if ( pos <= GTK_ENTRY(m_text)->text_length )
|
||||||
{
|
{
|
||||||
*y = 0;
|
if ( y )
|
||||||
*x = pos;
|
*y = 0;
|
||||||
|
if ( x )
|
||||||
|
*x = pos;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user