X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f92722960b2a15f813cc62a23ecb321bc0555099..0616b8382daeca5373484e5a22ec1f322c025c95:/src/gtk/textctrl.cpp diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index ccb6dce12b..c9c22b2e0f 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -35,7 +35,8 @@ extern bool g_isIdle; // data //----------------------------------------------------------------------------- -extern bool g_blockEventsOnDrag; +extern bool g_blockEventsOnDrag; +extern wxCursor g_globalCursor; //----------------------------------------------------------------------------- // "changed" @@ -114,11 +115,13 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, m_needParent = TRUE; m_acceptsFocus = TRUE; - PreCreation( parent, id, pos, size, style, name ); + if (!PreCreation( parent, pos, size ) || + !CreateBase( parent, id, pos, size, style, validator, name )) + { + wxFAIL_MSG( _T("wxTextCtrl creation failed") ); + return FALSE; + } -#if wxUSE_VALIDATORS - SetValidator( validator ); -#endif // wxUSE_VALIDATORS m_vScrollbarVisible = FALSE; @@ -246,6 +249,8 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, SetBackgroundColour( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ); SetForegroundColour( parent->GetForegroundColour() ); + m_cursor = wxCursor( wxCURSOR_IBEAM ); + Show( TRUE ); return TRUE; @@ -920,3 +925,30 @@ void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event) { event.Enable( CanRedo() ); } + +void wxTextCtrl::OnInternalIdle() +{ + wxCursor cursor = m_cursor; + if (g_globalCursor.Ok()) cursor = g_globalCursor; + + if (cursor.Ok() && m_currentGdkCursor != cursor) + { + m_currentGdkCursor = cursor; + + GdkWindow *window = (GdkWindow*) NULL; + if (HasFlag(wxTE_MULTILINE)) + window = GTK_TEXT(m_text)->text_area; + else + window = GTK_ENTRY(m_text)->text_area; + + if (window) + gdk_window_set_cursor( window, cursor.GetCursor() ); + + if (!g_globalCursor.Ok()) + cursor = *wxSTANDARD_CURSOR; + + window = m_widget->window; + if (window) + gdk_window_set_cursor( window, cursor.GetCursor() ); + } +}