From e3ca08dd1219d427e20dc15170e8b7a81c46b456 Mon Sep 17 00:00:00 2001 From: Mart Raudsepp Date: Thu, 26 Nov 1998 16:05:23 +0000 Subject: [PATCH] insert member funcs PositionToXY and XYToPosition git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1064 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/textctrl.cpp | 39 ++++++++++++++++++++++++++++++++------- src/gtk1/textctrl.cpp | 39 ++++++++++++++++++++++++++++++++------- 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index b6033cce3a..e1dd7eafc6 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -348,18 +348,43 @@ void wxTextCtrl::OnDropFiles( wxDropFilesEvent &WXUNUSED(event) ) wxFAIL_MSG( "wxTextCtrl::OnDropFiles not implemented" ); } -long wxTextCtrl::PositionToXY( long WXUNUSED(pos), long *WXUNUSED(x), long *WXUNUSED(y) ) const -{ - wxFAIL_MSG( "wxTextCtrl::XYToPosition not implemented" ); +long wxTextCtrl::PositionToXY(long pos, long *x, long *y ) const +{ + if (!(m_windowStyle & wxTE_MULTILINE)) + return 0; + gint len = gtk_text_get_length( GTK_TEXT(m_text) ); + char *text = gtk_editable_get_chars( GTK_EDITABLE(m_text), 0, len ); + if(!text) + return 0; + if( pos >= len) + return pos=len-1; - return 0; + *x=1; // Col 1 + *y=1; // Line 1 + for (int i = 0; i < pos; i++ ) + { + if (text[i] == '\n') + { + (*y)++; + *x=1; + } + else + (*x)++; + } + g_free( text ); + return 1; } -long wxTextCtrl::XYToPosition( long WXUNUSED(x), long WXUNUSED(y) ) const +long wxTextCtrl::XYToPosition(long x, long y ) const { - wxFAIL_MSG( "wxTextCtrl::XYToPosition not implemented" ); + if (!(m_windowStyle & wxTE_MULTILINE)) + return 0; + long pos=0; - return 0; + for(int i=1;i= len) + return pos=len-1; - return 0; + *x=1; // Col 1 + *y=1; // Line 1 + for (int i = 0; i < pos; i++ ) + { + if (text[i] == '\n') + { + (*y)++; + *x=1; + } + else + (*x)++; + } + g_free( text ); + return 1; } -long wxTextCtrl::XYToPosition( long WXUNUSED(x), long WXUNUSED(y) ) const +long wxTextCtrl::XYToPosition(long x, long y ) const { - wxFAIL_MSG( "wxTextCtrl::XYToPosition not implemented" ); + if (!(m_windowStyle & wxTE_MULTILINE)) + return 0; + long pos=0; - return 0; + for(int i=1;i