X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c679789bdbc8b42b7b71828b0f02f97614ee574..e66474166b164b9e11f9881e79d531bc5182ea31:/src/gtk/textctrl.cpp?ds=sidebyside diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index de650285b7..fb10ca0a24 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -137,7 +137,9 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, PreCreation( parent, id, pos, size, style, name ); +#if wxUSE_VALIDATORS SetValidator( validator ); +#endif // wxUSE_VALIDATORS m_vScrollbarVisible = FALSE; @@ -158,16 +160,17 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK), (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK), 0, 0); - + /* always wrap words */ gtk_text_set_word_wrap( GTK_TEXT(m_text), TRUE ); + /* put the horizontal scrollbar in the lower left hand corner */ if (bHasHScrollbar) { GtkWidget *hscrollbar = gtk_hscrollbar_new(GTK_TEXT(m_text)->hadj); GTK_WIDGET_UNSET_FLAGS( hscrollbar, GTK_CAN_FOCUS ); gtk_table_attach(GTK_TABLE(m_widget), hscrollbar, 0, 1, 1, 2, - (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), + (GtkAttachOptions)(GTK_EXPAND | GTK_FILL | GTK_SHRINK), GTK_FILL, 0, 0); gtk_widget_show(hscrollbar); @@ -177,6 +180,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, gtk_text_set_line_wrap( GTK_TEXT(m_text), FALSE ); #endif } + /* finally, put the vertical scrollbar in the upper right corner */ m_vScrollbar = gtk_vscrollbar_new( GTK_TEXT(m_text)->vadj ); GTK_WIDGET_UNSET_FLAGS( m_vScrollbar, GTK_CAN_FOCUS ); @@ -256,7 +260,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, gtk_text_set_editable( GTK_TEXT(m_text), 1 ); } - SetBackgroundColour( parent->GetBackgroundColour() ); + SetBackgroundColour( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ); SetForegroundColour( parent->GetForegroundColour() ); Show( TRUE ); @@ -297,12 +301,12 @@ wxString wxTextCtrl::GetValue() const { gint len = gtk_text_get_length( GTK_TEXT(m_text) ); char *text = gtk_editable_get_chars( GTK_EDITABLE(m_text), 0, len ); - tmp = wxString(text,*wxConv_current); + tmp = wxString(text,*wxConvCurrent); g_free( text ); } else { - tmp = wxString(gtk_entry_get_text( GTK_ENTRY(m_text) ),*wxConv_current); + tmp = wxString(gtk_entry_get_text( GTK_ENTRY(m_text) ),*wxConvCurrent); } return tmp; } @@ -693,7 +697,7 @@ void wxTextCtrl::SetSelection( long from, long to ) void wxTextCtrl::ShowPosition( long WXUNUSED(pos) ) { - wxFAIL_MSG( _T("wxTextCtrl::ShowPosition not implemented") ); +// SetInsertionPoint( pos ); } long wxTextCtrl::GetInsertionPoint() const @@ -823,17 +827,24 @@ bool wxTextCtrl::CanRedo() const // selection. void wxTextCtrl::GetSelection(long* from, long* to) const { - // TODO - *from = 0; - *to = 0; - wxFAIL_MSG( _T("wxTextCtrl::GetSelection not implemented") ); + wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") ); + + if (!(GTK_EDITABLE(m_text)->has_selection)) + { + if (from) *from = 0; + if (to) *to = 0; + return; + } + + if (from) *from = (long) GTK_EDITABLE(m_text)->selection_start_pos; + if (to) *to = (long) GTK_EDITABLE(m_text)->selection_end_pos; } bool wxTextCtrl::IsEditable() const { - // TODO - wxFAIL_MSG( _T("wxTextCtrl::IsEditable not implemented") ); - return FALSE; + wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") ); + + return GTK_EDITABLE(m_text)->editable; } void wxTextCtrl::Clear()