crash in GTK 1.0 on multiline text ctrl creation fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2378 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -174,8 +174,8 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
|||||||
gtk_widget_show(hscrollbar);
|
gtk_widget_show(hscrollbar);
|
||||||
|
|
||||||
#if (GTK_MINOR_VERSION > 0)
|
#if (GTK_MINOR_VERSION > 0)
|
||||||
/* don't wrap lines, otherwise we wouldn't need the scrollbar */
|
/* don't wrap lines, otherwise we wouldn't need the scrollbar */
|
||||||
gtk_text_set_line_wrap( GTK_TEXT(m_text), FALSE );
|
gtk_text_set_line_wrap( GTK_TEXT(m_text), FALSE );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,19 +222,26 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
|||||||
if (!value.IsEmpty())
|
if (!value.IsEmpty())
|
||||||
{
|
{
|
||||||
gint tmp = 0;
|
gint tmp = 0;
|
||||||
|
|
||||||
|
#if GTK_MINOR_VERSION == 0
|
||||||
|
// if we don't realize it, GTK 1.0.6 dies with a SIGSEGV in
|
||||||
|
// gtk_editable_insert_text()
|
||||||
|
gtk_widget_realize(m_text);
|
||||||
|
#endif // GTK 1.0
|
||||||
|
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
wxWX2MBbuf val = value.mbc_str();
|
wxWX2MBbuf val = value.mbc_str();
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), val, strlen(val), &tmp );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), val, strlen(val), &tmp );
|
||||||
#else
|
#else // !Unicode
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &tmp );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &tmp );
|
||||||
#endif
|
#endif // Unicode/!Unicode
|
||||||
|
|
||||||
if (multi_line)
|
if (multi_line)
|
||||||
{
|
{
|
||||||
/* bring editable's cursor uptodate. bug in GTK. */
|
/* bring editable's cursor uptodate. bug in GTK. */
|
||||||
|
|
||||||
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (style & wxTE_PASSWORD)
|
if (style & wxTE_PASSWORD)
|
||||||
@@ -319,7 +326,7 @@ void wxTextCtrl::SetValue( const wxString &value )
|
|||||||
gtk_editable_delete_text( GTK_EDITABLE(m_text), 0, len );
|
gtk_editable_delete_text( GTK_EDITABLE(m_text), 0, len );
|
||||||
len = 0;
|
len = 0;
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
wxWX2MBbuf tmpbuf = tmp.mbc_str();
|
wxWX2MBbuf tmpbuf = tmp.mbc_str();
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), tmpbuf, strlen(tmpbuf), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), tmpbuf, strlen(tmpbuf), &len );
|
||||||
#else
|
#else
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), tmp.mbc_str(), tmp.Length(), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), tmp.mbc_str(), tmp.Length(), &len );
|
||||||
@@ -340,34 +347,34 @@ void wxTextCtrl::WriteText( const wxString &text )
|
|||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
{
|
{
|
||||||
/* this moves the cursor pos to behind the inserted text */
|
/* this moves the cursor pos to behind the inserted text */
|
||||||
gint len = GTK_EDITABLE(m_text)->current_pos;
|
gint len = GTK_EDITABLE(m_text)->current_pos;
|
||||||
|
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
wxWX2MBbuf buf = text.mbc_str();
|
wxWX2MBbuf buf = text.mbc_str();
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
||||||
#else
|
#else
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* bring editable's cursor uptodate. bug in GTK. */
|
/* bring editable's cursor uptodate. bug in GTK. */
|
||||||
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* this moves the cursor pos to behind the inserted text */
|
/* this moves the cursor pos to behind the inserted text */
|
||||||
gint len = GTK_EDITABLE(m_text)->current_pos;
|
gint len = GTK_EDITABLE(m_text)->current_pos;
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
wxWX2MBbuf buf = text.mbc_str();
|
wxWX2MBbuf buf = text.mbc_str();
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
||||||
#else
|
#else
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* bring editable's cursor uptodate. bug in GTK. */
|
/* bring editable's cursor uptodate. bug in GTK. */
|
||||||
GTK_EDITABLE(m_text)->current_pos += text.Len();
|
GTK_EDITABLE(m_text)->current_pos += text.Len();
|
||||||
|
|
||||||
/* bring entry's cursor uptodate. bug in GTK. */
|
/* bring entry's cursor uptodate. bug in GTK. */
|
||||||
gtk_entry_set_position( GTK_ENTRY(m_text), GTK_EDITABLE(m_text)->current_pos );
|
gtk_entry_set_position( GTK_ENTRY(m_text), GTK_EDITABLE(m_text)->current_pos );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -380,14 +387,14 @@ void wxTextCtrl::AppendText( const wxString &text )
|
|||||||
/* we'll insert at the last position */
|
/* we'll insert at the last position */
|
||||||
gint len = gtk_text_get_length( GTK_TEXT(m_text) );
|
gint len = gtk_text_get_length( GTK_TEXT(m_text) );
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
wxWX2MBbuf buf = text.mbc_str();
|
wxWX2MBbuf buf = text.mbc_str();
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
||||||
#else
|
#else
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* bring editable's cursor uptodate. bug in GTK. */
|
/* bring editable's cursor uptodate. bug in GTK. */
|
||||||
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -628,33 +635,33 @@ void wxTextCtrl::SetInsertionPoint( long pos )
|
|||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
{
|
{
|
||||||
/* seems to be broken in GTK 1.0.X:
|
/* seems to be broken in GTK 1.0.X:
|
||||||
gtk_text_set_point( GTK_TEXT(m_text), (int)pos ); */
|
gtk_text_set_point( GTK_TEXT(m_text), (int)pos ); */
|
||||||
|
|
||||||
gtk_signal_disconnect_by_func( GTK_OBJECT(m_text),
|
gtk_signal_disconnect_by_func( GTK_OBJECT(m_text),
|
||||||
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
||||||
|
|
||||||
/* we fake a set_point by inserting and deleting. as the user
|
/* we fake a set_point by inserting and deleting. as the user
|
||||||
isn't supposed to get to know about thos non-sense, we
|
isn't supposed to get to know about thos non-sense, we
|
||||||
disconnect so that no events are sent to the user program. */
|
disconnect so that no events are sent to the user program. */
|
||||||
|
|
||||||
gint tmp = (gint)pos;
|
gint tmp = (gint)pos;
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), " ", 1, &tmp );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), " ", 1, &tmp );
|
||||||
gtk_editable_delete_text( GTK_EDITABLE(m_text), tmp-1, tmp );
|
gtk_editable_delete_text( GTK_EDITABLE(m_text), tmp-1, tmp );
|
||||||
|
|
||||||
gtk_signal_connect( GTK_OBJECT(m_text), "changed",
|
gtk_signal_connect( GTK_OBJECT(m_text), "changed",
|
||||||
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
||||||
|
|
||||||
/* bring editable's cursor uptodate. another bug in GTK. */
|
/* bring editable's cursor uptodate. another bug in GTK. */
|
||||||
|
|
||||||
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gtk_entry_set_position( GTK_ENTRY(m_text), (int)pos );
|
gtk_entry_set_position( GTK_ENTRY(m_text), (int)pos );
|
||||||
|
|
||||||
/* bring editable's cursor uptodate. bug in GTK. */
|
/* bring editable's cursor uptodate. bug in GTK. */
|
||||||
|
|
||||||
GTK_EDITABLE(m_text)->current_pos = pos;
|
GTK_EDITABLE(m_text)->current_pos = pos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -976,7 +983,7 @@ void wxTextCtrl::SetBackgroundColour( const wxColour &colour )
|
|||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
{
|
{
|
||||||
GdkWindow *window = GTK_TEXT(m_text)->text_area;
|
GdkWindow *window = GTK_TEXT(m_text)->text_area;
|
||||||
if (!window) return;
|
if (!window) return;
|
||||||
m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) );
|
m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) );
|
||||||
gdk_window_set_background( window, m_backgroundColour.GetColor() );
|
gdk_window_set_background( window, m_backgroundColour.GetColor() );
|
||||||
gdk_window_clear( window );
|
gdk_window_clear( window );
|
||||||
|
@@ -174,8 +174,8 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
|||||||
gtk_widget_show(hscrollbar);
|
gtk_widget_show(hscrollbar);
|
||||||
|
|
||||||
#if (GTK_MINOR_VERSION > 0)
|
#if (GTK_MINOR_VERSION > 0)
|
||||||
/* don't wrap lines, otherwise we wouldn't need the scrollbar */
|
/* don't wrap lines, otherwise we wouldn't need the scrollbar */
|
||||||
gtk_text_set_line_wrap( GTK_TEXT(m_text), FALSE );
|
gtk_text_set_line_wrap( GTK_TEXT(m_text), FALSE );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,19 +222,26 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
|||||||
if (!value.IsEmpty())
|
if (!value.IsEmpty())
|
||||||
{
|
{
|
||||||
gint tmp = 0;
|
gint tmp = 0;
|
||||||
|
|
||||||
|
#if GTK_MINOR_VERSION == 0
|
||||||
|
// if we don't realize it, GTK 1.0.6 dies with a SIGSEGV in
|
||||||
|
// gtk_editable_insert_text()
|
||||||
|
gtk_widget_realize(m_text);
|
||||||
|
#endif // GTK 1.0
|
||||||
|
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
wxWX2MBbuf val = value.mbc_str();
|
wxWX2MBbuf val = value.mbc_str();
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), val, strlen(val), &tmp );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), val, strlen(val), &tmp );
|
||||||
#else
|
#else // !Unicode
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &tmp );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &tmp );
|
||||||
#endif
|
#endif // Unicode/!Unicode
|
||||||
|
|
||||||
if (multi_line)
|
if (multi_line)
|
||||||
{
|
{
|
||||||
/* bring editable's cursor uptodate. bug in GTK. */
|
/* bring editable's cursor uptodate. bug in GTK. */
|
||||||
|
|
||||||
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (style & wxTE_PASSWORD)
|
if (style & wxTE_PASSWORD)
|
||||||
@@ -319,7 +326,7 @@ void wxTextCtrl::SetValue( const wxString &value )
|
|||||||
gtk_editable_delete_text( GTK_EDITABLE(m_text), 0, len );
|
gtk_editable_delete_text( GTK_EDITABLE(m_text), 0, len );
|
||||||
len = 0;
|
len = 0;
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
wxWX2MBbuf tmpbuf = tmp.mbc_str();
|
wxWX2MBbuf tmpbuf = tmp.mbc_str();
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), tmpbuf, strlen(tmpbuf), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), tmpbuf, strlen(tmpbuf), &len );
|
||||||
#else
|
#else
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), tmp.mbc_str(), tmp.Length(), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), tmp.mbc_str(), tmp.Length(), &len );
|
||||||
@@ -340,34 +347,34 @@ void wxTextCtrl::WriteText( const wxString &text )
|
|||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
{
|
{
|
||||||
/* this moves the cursor pos to behind the inserted text */
|
/* this moves the cursor pos to behind the inserted text */
|
||||||
gint len = GTK_EDITABLE(m_text)->current_pos;
|
gint len = GTK_EDITABLE(m_text)->current_pos;
|
||||||
|
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
wxWX2MBbuf buf = text.mbc_str();
|
wxWX2MBbuf buf = text.mbc_str();
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
||||||
#else
|
#else
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* bring editable's cursor uptodate. bug in GTK. */
|
/* bring editable's cursor uptodate. bug in GTK. */
|
||||||
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* this moves the cursor pos to behind the inserted text */
|
/* this moves the cursor pos to behind the inserted text */
|
||||||
gint len = GTK_EDITABLE(m_text)->current_pos;
|
gint len = GTK_EDITABLE(m_text)->current_pos;
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
wxWX2MBbuf buf = text.mbc_str();
|
wxWX2MBbuf buf = text.mbc_str();
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
||||||
#else
|
#else
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* bring editable's cursor uptodate. bug in GTK. */
|
/* bring editable's cursor uptodate. bug in GTK. */
|
||||||
GTK_EDITABLE(m_text)->current_pos += text.Len();
|
GTK_EDITABLE(m_text)->current_pos += text.Len();
|
||||||
|
|
||||||
/* bring entry's cursor uptodate. bug in GTK. */
|
/* bring entry's cursor uptodate. bug in GTK. */
|
||||||
gtk_entry_set_position( GTK_ENTRY(m_text), GTK_EDITABLE(m_text)->current_pos );
|
gtk_entry_set_position( GTK_ENTRY(m_text), GTK_EDITABLE(m_text)->current_pos );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -380,14 +387,14 @@ void wxTextCtrl::AppendText( const wxString &text )
|
|||||||
/* we'll insert at the last position */
|
/* we'll insert at the last position */
|
||||||
gint len = gtk_text_get_length( GTK_TEXT(m_text) );
|
gint len = gtk_text_get_length( GTK_TEXT(m_text) );
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
wxWX2MBbuf buf = text.mbc_str();
|
wxWX2MBbuf buf = text.mbc_str();
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
|
||||||
#else
|
#else
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* bring editable's cursor uptodate. bug in GTK. */
|
/* bring editable's cursor uptodate. bug in GTK. */
|
||||||
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -628,33 +635,33 @@ void wxTextCtrl::SetInsertionPoint( long pos )
|
|||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
{
|
{
|
||||||
/* seems to be broken in GTK 1.0.X:
|
/* seems to be broken in GTK 1.0.X:
|
||||||
gtk_text_set_point( GTK_TEXT(m_text), (int)pos ); */
|
gtk_text_set_point( GTK_TEXT(m_text), (int)pos ); */
|
||||||
|
|
||||||
gtk_signal_disconnect_by_func( GTK_OBJECT(m_text),
|
gtk_signal_disconnect_by_func( GTK_OBJECT(m_text),
|
||||||
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
||||||
|
|
||||||
/* we fake a set_point by inserting and deleting. as the user
|
/* we fake a set_point by inserting and deleting. as the user
|
||||||
isn't supposed to get to know about thos non-sense, we
|
isn't supposed to get to know about thos non-sense, we
|
||||||
disconnect so that no events are sent to the user program. */
|
disconnect so that no events are sent to the user program. */
|
||||||
|
|
||||||
gint tmp = (gint)pos;
|
gint tmp = (gint)pos;
|
||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), " ", 1, &tmp );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), " ", 1, &tmp );
|
||||||
gtk_editable_delete_text( GTK_EDITABLE(m_text), tmp-1, tmp );
|
gtk_editable_delete_text( GTK_EDITABLE(m_text), tmp-1, tmp );
|
||||||
|
|
||||||
gtk_signal_connect( GTK_OBJECT(m_text), "changed",
|
gtk_signal_connect( GTK_OBJECT(m_text), "changed",
|
||||||
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
|
||||||
|
|
||||||
/* bring editable's cursor uptodate. another bug in GTK. */
|
/* bring editable's cursor uptodate. another bug in GTK. */
|
||||||
|
|
||||||
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gtk_entry_set_position( GTK_ENTRY(m_text), (int)pos );
|
gtk_entry_set_position( GTK_ENTRY(m_text), (int)pos );
|
||||||
|
|
||||||
/* bring editable's cursor uptodate. bug in GTK. */
|
/* bring editable's cursor uptodate. bug in GTK. */
|
||||||
|
|
||||||
GTK_EDITABLE(m_text)->current_pos = pos;
|
GTK_EDITABLE(m_text)->current_pos = pos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -976,7 +983,7 @@ void wxTextCtrl::SetBackgroundColour( const wxColour &colour )
|
|||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
{
|
{
|
||||||
GdkWindow *window = GTK_TEXT(m_text)->text_area;
|
GdkWindow *window = GTK_TEXT(m_text)->text_area;
|
||||||
if (!window) return;
|
if (!window) return;
|
||||||
m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) );
|
m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) );
|
||||||
gdk_window_set_background( window, m_backgroundColour.GetColor() );
|
gdk_window_set_background( window, m_backgroundColour.GetColor() );
|
||||||
gdk_window_clear( window );
|
gdk_window_clear( window );
|
||||||
|
Reference in New Issue
Block a user