static void
gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
{
- if (g_isIdle) wxapp_install_idle_handler();
+ if (!win->m_hasVMT) return;
- if (!win->HasVMT()) return;
+ if (g_isIdle)
+ wxapp_install_idle_handler();
win->SetModified();
static void
gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
{
- if (g_isIdle) wxapp_install_idle_handler();
+ if (!win->m_hasVMT) return;
+
+ if (g_isIdle)
+ wxapp_install_idle_handler();
win->CalculateScrollbar();
-
- if (!win->HasVMT()) return;
}
//-----------------------------------------------------------------------------
PreCreation( parent, id, pos, size, style, name );
+#if wxUSE_VALIDATORS
SetValidator( validator );
+#endif // wxUSE_VALIDATORS
m_vScrollbarVisible = FALSE;
(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);
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 );
gtk_text_set_editable( GTK_TEXT(m_text), 1 );
}
- SetBackgroundColour( parent->GetBackgroundColour() );
+ SetBackgroundColour( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) );
SetForegroundColour( parent->GetForegroundColour() );
Show( TRUE );
if (m_vScrollbarVisible)
{
gtk_widget_hide( m_vScrollbar );
-
m_vScrollbarVisible = FALSE;
}
}
if (!m_vScrollbarVisible)
{
gtk_widget_show( m_vScrollbar );
-
m_vScrollbarVisible = TRUE;
}
}
{
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;
}
{
wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
+ gtk_signal_disconnect_by_func( GTK_OBJECT(m_text),
+ GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
+
wxString tmp = _T("");
if (!value.IsNull()) tmp = value;
if (m_windowStyle & wxTE_MULTILINE)
{
gtk_entry_set_text( GTK_ENTRY(m_text), tmp.mbc_str() );
}
+
+ gtk_signal_connect( GTK_OBJECT(m_text), "changed",
+ GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
}
void wxTextCtrl::WriteText( const wxString &text )
void wxTextCtrl::ShowPosition( long WXUNUSED(pos) )
{
- wxFAIL_MSG( _T("wxTextCtrl::ShowPosition not implemented") );
+// SetInsertionPoint( pos );
}
long wxTextCtrl::GetInsertionPoint() 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()