1. wxTextControl::SetFont() does something (good or bad - for you to judge)
2. tip dialog modified slightly to look a bit prettier under GTK 3. notebook test demonstrates the wxGTK radiobox-in-notebook-pages-constraints bug git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2989 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -96,22 +96,26 @@ void MyApp::InitTabView(wxNotebook* notebook, wxWindow* window)
|
|||||||
panel2->SetBackgroundColour(wxColour("BLUE"));
|
panel2->SetBackgroundColour(wxColour("BLUE"));
|
||||||
|
|
||||||
wxString animals[] = { "Fox", "Hare", "Rabbit", "Sabre-toothed tiger", "T Rex" };
|
wxString animals[] = { "Fox", "Hare", "Rabbit", "Sabre-toothed tiger", "T Rex" };
|
||||||
wxListBox *listbox = new wxListBox(panel2, -1, wxPoint(5, 5), wxSize(170, 80), 5, animals);
|
wxRadioBox *radiobox = new wxRadioBox(panel2, -1, "Choose one",
|
||||||
|
wxDefaultPosition, wxDefaultSize, 5, animals);
|
||||||
|
|
||||||
c = new wxLayoutConstraints;
|
c = new wxLayoutConstraints;
|
||||||
c->left.SameAs(panel2, wxLeft, 4);
|
c->left.SameAs(panel2, wxLeft, 4);
|
||||||
c->top.SameAs(panel2, wxTop, 4);
|
c->top.SameAs(panel2, wxTop, 4);
|
||||||
c->height.PercentOf(panel2, wxHeight, 50);
|
c->height.PercentOf(panel2, wxHeight, 50);
|
||||||
c->right.SameAs(panel2, wxRight, 4);
|
c->right.SameAs(panel2, wxRight, 4);
|
||||||
listbox->SetConstraints(c);
|
radiobox->SetConstraints(c);
|
||||||
|
|
||||||
wxTextCtrl *text = new wxTextCtrl(panel2, -1, "Some notes about the animals in this house", wxPoint(5, 100), wxSize(170, 100), wxTE_MULTILINE);
|
wxRadioBox *radiobox2 = new wxRadioBox(panel2, -1, "Choose one",
|
||||||
|
wxDefaultPosition, wxDefaultSize,
|
||||||
|
5, animals,
|
||||||
|
2, wxRA_SPECIFY_ROWS);
|
||||||
c = new wxLayoutConstraints;
|
c = new wxLayoutConstraints;
|
||||||
c->left.SameAs(panel2, wxLeft, 4);
|
c->left.SameAs(radiobox, wxLeft);
|
||||||
c->bottom.SameAs(panel2, wxBottom, 4);
|
c->height.AsIs();
|
||||||
c->top.Below(listbox, 4);
|
c->top.Below(radiobox, 4);
|
||||||
c->right.SameAs(panel2, wxRight, 4);
|
c->right.SameAs(radiobox, wxRight);
|
||||||
text->SetConstraints(c);
|
radiobox2->SetConstraints(c);
|
||||||
|
|
||||||
notebook->AddPage(panel2, "Dog");
|
notebook->AddPage(panel2, "Dog");
|
||||||
|
|
||||||
@@ -170,7 +174,7 @@ void MyDialog::Init(void)
|
|||||||
SetAutoLayout(TRUE);
|
SetAutoLayout(TRUE);
|
||||||
Layout();
|
Layout();
|
||||||
|
|
||||||
this->Centre(wxBOTH);
|
Centre(wxBOTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||||
|
@@ -82,7 +82,7 @@ public:
|
|||||||
MyTextCtrl *m_tab;
|
MyTextCtrl *m_tab;
|
||||||
MyTextCtrl *m_entertab;
|
MyTextCtrl *m_entertab;
|
||||||
MyTextCtrl *m_readonly;
|
MyTextCtrl *m_readonly;
|
||||||
|
|
||||||
MyTextCtrl *m_multitext;
|
MyTextCtrl *m_multitext;
|
||||||
MyTextCtrl *m_horizontal;
|
MyTextCtrl *m_horizontal;
|
||||||
MyTextCtrl *m_multitab;
|
MyTextCtrl *m_multitab;
|
||||||
@@ -387,37 +387,38 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
|
|||||||
|
|
||||||
// single line text controls
|
// single line text controls
|
||||||
|
|
||||||
m_text = new MyTextCtrl( this, -1, "Single line.",
|
m_text = new MyTextCtrl( this, -1, "Single line.",
|
||||||
wxPoint(10,10), wxSize(140,-1), 0);
|
wxPoint(10,10), wxSize(140,-1), 0);
|
||||||
(*m_text) << " Appended.";
|
(*m_text) << " Appended.";
|
||||||
m_text->SetInsertionPoint(0);
|
m_text->SetInsertionPoint(0);
|
||||||
m_text->WriteText( "Prepended. " );
|
m_text->WriteText( "Prepended. " );
|
||||||
|
|
||||||
m_password = new MyTextCtrl( this, -1, "",
|
m_password = new MyTextCtrl( this, -1, "",
|
||||||
wxPoint(10,50), wxSize(140,-1), wxTE_PASSWORD );
|
wxPoint(10,50), wxSize(140,-1), wxTE_PASSWORD );
|
||||||
|
|
||||||
m_readonly = new MyTextCtrl( this, -1, "Read only",
|
m_readonly = new MyTextCtrl( this, -1, "Read only",
|
||||||
wxPoint(10,90), wxSize(140,-1), wxTE_READONLY );
|
wxPoint(10,90), wxSize(140,-1), wxTE_READONLY );
|
||||||
|
|
||||||
// multi line text controls
|
// multi line text controls
|
||||||
|
|
||||||
m_horizontal = new MyTextCtrl( this, -1, "Multiline text control with a horizontal scrollbar.",
|
m_horizontal = new MyTextCtrl( this, -1, "Multiline text control with a horizontal scrollbar.",
|
||||||
wxPoint(10,170), wxSize(140,70), wxTE_MULTILINE | wxHSCROLL );
|
wxPoint(10,170), wxSize(140,70), wxTE_MULTILINE | wxHSCROLL );
|
||||||
|
m_horizontal->SetFont(wxFont(18, wxSWISS, wxNORMAL, wxBOLD));
|
||||||
m_multitext = new MyTextCtrl( this, ID_TEXT, "Multi line.",
|
|
||||||
|
m_multitext = new MyTextCtrl( this, ID_TEXT, "Multi line.",
|
||||||
wxPoint(180,10), wxSize(240,70), wxTE_MULTILINE );
|
wxPoint(180,10), wxSize(240,70), wxTE_MULTILINE );
|
||||||
(*m_multitext) << " Appended.";
|
(*m_multitext) << " Appended.";
|
||||||
m_multitext->SetInsertionPoint(0);
|
m_multitext->SetInsertionPoint(0);
|
||||||
m_multitext->WriteText( "Prepended. " );
|
m_multitext->WriteText( "Prepended. " );
|
||||||
|
|
||||||
#if wxUSE_TOOLTIPS
|
#if wxUSE_TOOLTIPS
|
||||||
m_multitext->SetToolTip("Press F1 here.");
|
m_multitext->SetToolTip("Press F1 here.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_tab = new MyTextCtrl( this, -1, "Multiline, allow <TAB> processing.",
|
m_tab = new MyTextCtrl( this, -1, "Multiline, allow <TAB> processing.",
|
||||||
wxPoint(180,90), wxSize(240,70), wxTE_MULTILINE | wxTE_PROCESS_TAB );
|
wxPoint(180,90), wxSize(240,70), wxTE_MULTILINE | wxTE_PROCESS_TAB );
|
||||||
|
|
||||||
m_enter = new MyTextCtrl( this, -1, "Multiline, allow <ENTER> processing.",
|
m_enter = new MyTextCtrl( this, -1, "Multiline, allow <ENTER> processing.",
|
||||||
wxPoint(180,170), wxSize(240,70), wxTE_MULTILINE | wxTE_PROCESS_ENTER );
|
wxPoint(180,170), wxSize(240,70), wxTE_MULTILINE | wxTE_PROCESS_ENTER );
|
||||||
|
|
||||||
wxButton *button;
|
wxButton *button;
|
||||||
@@ -431,7 +432,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
|
|||||||
#if wxUSE_TOOLTIPS
|
#if wxUSE_TOOLTIPS
|
||||||
button->SetToolTip("Move cursor in multi-line text control to end of first line.");
|
button->SetToolTip("Move cursor in multi-line text control to end of first line.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
(void)new wxStaticBox( this, -1, "wx&Clipboard", wxPoint(445,130), wxSize(160,100) );
|
(void)new wxStaticBox( this, -1, "wx&Clipboard", wxPoint(445,130), wxSize(160,100) );
|
||||||
button = new wxButton( this, ID_COPY_TEXT, "C&opy line 1", wxPoint(470,150), wxSize(110,30) );
|
button = new wxButton( this, ID_COPY_TEXT, "C&opy line 1", wxPoint(470,150), wxSize(110,30) );
|
||||||
#if wxUSE_TOOLTIPS
|
#if wxUSE_TOOLTIPS
|
||||||
@@ -581,11 +582,11 @@ void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) )
|
|||||||
wxBeginBusyCursor();
|
wxBeginBusyCursor();
|
||||||
|
|
||||||
wxMessageDialog dialog(this, "This is a text control sample. It demonstrates the many different text control\n"
|
wxMessageDialog dialog(this, "This is a text control sample. It demonstrates the many different text control\n"
|
||||||
"styles, the use of the clipboard, setting and handling tooltips and intercepting\n"
|
"styles, the use of the clipboard, setting and handling tooltips and intercepting\n"
|
||||||
"key and char events.\n"
|
"key and char events.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Copyright (c) 1999, Robert Roebling, Julian Smart, Vadim Zeitlin",
|
"Copyright (c) 1999, Robert Roebling, Julian Smart, Vadim Zeitlin",
|
||||||
"About Text Controls", wxOK );
|
"About Text Controls", wxOK );
|
||||||
dialog.ShowModal();
|
dialog.ShowModal();
|
||||||
|
|
||||||
wxEndBusyCursor();
|
wxEndBusyCursor();
|
||||||
@@ -600,9 +601,9 @@ void MyFrame::OnSetTooltipDelay(wxCommandEvent& event)
|
|||||||
delay.Printf( _T("%ld"), s_delay);
|
delay.Printf( _T("%ld"), s_delay);
|
||||||
|
|
||||||
delay = wxGetTextFromUser("Enter delay (in milliseconds)",
|
delay = wxGetTextFromUser("Enter delay (in milliseconds)",
|
||||||
"Set tooltip delay",
|
"Set tooltip delay",
|
||||||
delay,
|
delay,
|
||||||
this);
|
this);
|
||||||
if ( !delay )
|
if ( !delay )
|
||||||
return; // cancelled
|
return; // cancelled
|
||||||
|
|
||||||
|
@@ -46,7 +46,7 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
|
|||||||
{
|
{
|
||||||
if (!win->m_hasVMT) return;
|
if (!win->m_hasVMT) return;
|
||||||
|
|
||||||
if (g_isIdle)
|
if (g_isIdle)
|
||||||
wxapp_install_idle_handler();
|
wxapp_install_idle_handler();
|
||||||
|
|
||||||
win->SetModified();
|
win->SetModified();
|
||||||
@@ -65,8 +65,8 @@ static void
|
|||||||
gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
|
gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
|
||||||
{
|
{
|
||||||
if (!win->m_hasVMT) return;
|
if (!win->m_hasVMT) return;
|
||||||
|
|
||||||
if (g_isIdle)
|
if (g_isIdle)
|
||||||
wxapp_install_idle_handler();
|
wxapp_install_idle_handler();
|
||||||
|
|
||||||
win->CalculateScrollbar();
|
win->CalculateScrollbar();
|
||||||
@@ -160,10 +160,10 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
|||||||
(GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
|
(GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
|
||||||
(GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
|
(GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
|
||||||
0, 0);
|
0, 0);
|
||||||
|
|
||||||
/* always wrap words */
|
/* always wrap words */
|
||||||
gtk_text_set_word_wrap( GTK_TEXT(m_text), TRUE );
|
gtk_text_set_word_wrap( GTK_TEXT(m_text), TRUE );
|
||||||
|
|
||||||
/* put the horizontal scrollbar in the lower left hand corner */
|
/* put the horizontal scrollbar in the lower left hand corner */
|
||||||
if (bHasHScrollbar)
|
if (bHasHScrollbar)
|
||||||
{
|
{
|
||||||
@@ -180,7 +180,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
|||||||
gtk_text_set_line_wrap( GTK_TEXT(m_text), FALSE );
|
gtk_text_set_line_wrap( GTK_TEXT(m_text), FALSE );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* finally, put the vertical scrollbar in the upper right corner */
|
/* finally, put the vertical scrollbar in the upper right corner */
|
||||||
m_vScrollbar = gtk_vscrollbar_new( GTK_TEXT(m_text)->vadj );
|
m_vScrollbar = gtk_vscrollbar_new( GTK_TEXT(m_text)->vadj );
|
||||||
GTK_WIDGET_UNSET_FLAGS( m_vScrollbar, GTK_CAN_FOCUS );
|
GTK_WIDGET_UNSET_FLAGS( m_vScrollbar, GTK_CAN_FOCUS );
|
||||||
@@ -317,7 +317,7 @@ void wxTextCtrl::SetValue( const wxString &value )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
wxString tmp = _T("");
|
wxString tmp = _T("");
|
||||||
if (!value.IsNull()) tmp = value;
|
if (!value.IsNull()) tmp = value;
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
@@ -336,7 +336,7 @@ void wxTextCtrl::SetValue( const wxString &value )
|
|||||||
{
|
{
|
||||||
gtk_entry_set_text( GTK_ENTRY(m_text), tmp.mbc_str() );
|
gtk_entry_set_text( GTK_ENTRY(m_text), tmp.mbc_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -349,7 +349,7 @@ void wxTextCtrl::WriteText( const wxString &text )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
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 */
|
||||||
@@ -382,7 +382,7 @@ void wxTextCtrl::WriteText( const wxString &text )
|
|||||||
/* 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 );
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -395,17 +395,32 @@ void wxTextCtrl::AppendText( const wxString &text )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
{
|
{
|
||||||
/* we'll insert at the last position */
|
bool hasSpecialAttributes = m_font.Ok() ||
|
||||||
gint len = gtk_text_get_length( GTK_TEXT(m_text) );
|
m_foregroundColour.Ok() ||
|
||||||
|
m_backgroundColour.Ok();
|
||||||
|
if ( hasSpecialAttributes )
|
||||||
|
{
|
||||||
|
gtk_text_insert( GTK_TEXT(m_text),
|
||||||
|
m_font.GetInternalFont(),
|
||||||
|
m_foregroundColour.GetColor(),
|
||||||
|
m_backgroundColour.GetColor(),
|
||||||
|
text, text.length());
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* we'll insert at the last position */
|
||||||
|
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) );
|
||||||
@@ -414,7 +429,7 @@ void wxTextCtrl::AppendText( const wxString &text )
|
|||||||
{
|
{
|
||||||
gtk_entry_append_text( GTK_ENTRY(m_text), text.mbc_str() );
|
gtk_entry_append_text( GTK_ENTRY(m_text), text.mbc_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -453,7 +468,7 @@ bool wxTextCtrl::LoadFile( const wxString &file )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
{
|
{
|
||||||
gint pos = 0;
|
gint pos = 0;
|
||||||
@@ -463,10 +478,10 @@ bool wxTextCtrl::LoadFile( const wxString &file )
|
|||||||
{
|
{
|
||||||
gtk_entry_set_text( GTK_ENTRY(m_text), text );
|
gtk_entry_set_text( GTK_ENTRY(m_text), text );
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
free (text);
|
free (text);
|
||||||
m_modified = FALSE;
|
m_modified = FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -746,9 +761,9 @@ void wxTextCtrl::Remove( long from, long to )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to );
|
gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to );
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -759,9 +774,9 @@ void wxTextCtrl::Replace( long from, long to, const wxString &value )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to );
|
gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to );
|
||||||
|
|
||||||
if (!value.IsEmpty())
|
if (!value.IsEmpty())
|
||||||
{
|
{
|
||||||
gint pos = (gint)from;
|
gint pos = (gint)from;
|
||||||
@@ -772,7 +787,7 @@ void wxTextCtrl::Replace( long from, long to, const wxString &value )
|
|||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &pos );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &pos );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -783,13 +798,13 @@ void wxTextCtrl::Cut()
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
#if (GTK_MINOR_VERSION > 0)
|
#if (GTK_MINOR_VERSION > 0)
|
||||||
gtk_editable_cut_clipboard( GTK_EDITABLE(m_text) );
|
gtk_editable_cut_clipboard( GTK_EDITABLE(m_text) );
|
||||||
#else
|
#else
|
||||||
gtk_editable_cut_clipboard( GTK_EDITABLE(m_text), 0 );
|
gtk_editable_cut_clipboard( GTK_EDITABLE(m_text), 0 );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -811,13 +826,13 @@ void wxTextCtrl::Paste()
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
#if (GTK_MINOR_VERSION > 0)
|
#if (GTK_MINOR_VERSION > 0)
|
||||||
gtk_editable_paste_clipboard( GTK_EDITABLE(m_text) );
|
gtk_editable_paste_clipboard( GTK_EDITABLE(m_text) );
|
||||||
#else
|
#else
|
||||||
gtk_editable_paste_clipboard( GTK_EDITABLE(m_text), 0 );
|
gtk_editable_paste_clipboard( GTK_EDITABLE(m_text), 0 );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -875,14 +890,14 @@ bool wxTextCtrl::CanRedo() const
|
|||||||
void wxTextCtrl::GetSelection(long* from, long* to) const
|
void wxTextCtrl::GetSelection(long* from, long* to) const
|
||||||
{
|
{
|
||||||
wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
|
wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
|
||||||
|
|
||||||
if (!(GTK_EDITABLE(m_text)->has_selection))
|
if (!(GTK_EDITABLE(m_text)->has_selection))
|
||||||
{
|
{
|
||||||
if (from) *from = 0;
|
if (from) *from = 0;
|
||||||
if (to) *to = 0;
|
if (to) *to = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (from) *from = (long) GTK_EDITABLE(m_text)->selection_start_pos;
|
if (from) *from = (long) GTK_EDITABLE(m_text)->selection_start_pos;
|
||||||
if (to) *to = (long) GTK_EDITABLE(m_text)->selection_end_pos;
|
if (to) *to = (long) GTK_EDITABLE(m_text)->selection_end_pos;
|
||||||
}
|
}
|
||||||
@@ -1005,12 +1020,31 @@ bool wxTextCtrl::IsOwnGtkWindow( GdkWindow *window )
|
|||||||
return (window == GTK_ENTRY(m_text)->text_area);
|
return (window == GTK_ENTRY(m_text)->text_area);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxTextCtrl::SetFont( const wxFont &WXUNUSED(font) )
|
// the font will change for subsequent text insertiongs
|
||||||
|
bool wxTextCtrl::SetFont( const wxFont &font )
|
||||||
{
|
{
|
||||||
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );
|
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );
|
||||||
|
|
||||||
// doesn't work
|
if ( !wxWindowBase::SetFont(font) )
|
||||||
return FALSE;
|
{
|
||||||
|
// font didn't change, nothing to do
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( m_windowStyle & wxTE_MULTILINE )
|
||||||
|
{
|
||||||
|
// for compatibility with other ports: the font is a global controls
|
||||||
|
// characteristic, so change the font globally
|
||||||
|
wxString value = GetValue();
|
||||||
|
if ( !value.IsEmpty() )
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
|
||||||
|
AppendText(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) )
|
bool wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) )
|
||||||
|
@@ -46,7 +46,7 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
|
|||||||
{
|
{
|
||||||
if (!win->m_hasVMT) return;
|
if (!win->m_hasVMT) return;
|
||||||
|
|
||||||
if (g_isIdle)
|
if (g_isIdle)
|
||||||
wxapp_install_idle_handler();
|
wxapp_install_idle_handler();
|
||||||
|
|
||||||
win->SetModified();
|
win->SetModified();
|
||||||
@@ -65,8 +65,8 @@ static void
|
|||||||
gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
|
gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
|
||||||
{
|
{
|
||||||
if (!win->m_hasVMT) return;
|
if (!win->m_hasVMT) return;
|
||||||
|
|
||||||
if (g_isIdle)
|
if (g_isIdle)
|
||||||
wxapp_install_idle_handler();
|
wxapp_install_idle_handler();
|
||||||
|
|
||||||
win->CalculateScrollbar();
|
win->CalculateScrollbar();
|
||||||
@@ -160,10 +160,10 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
|||||||
(GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
|
(GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
|
||||||
(GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
|
(GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
|
||||||
0, 0);
|
0, 0);
|
||||||
|
|
||||||
/* always wrap words */
|
/* always wrap words */
|
||||||
gtk_text_set_word_wrap( GTK_TEXT(m_text), TRUE );
|
gtk_text_set_word_wrap( GTK_TEXT(m_text), TRUE );
|
||||||
|
|
||||||
/* put the horizontal scrollbar in the lower left hand corner */
|
/* put the horizontal scrollbar in the lower left hand corner */
|
||||||
if (bHasHScrollbar)
|
if (bHasHScrollbar)
|
||||||
{
|
{
|
||||||
@@ -180,7 +180,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
|
|||||||
gtk_text_set_line_wrap( GTK_TEXT(m_text), FALSE );
|
gtk_text_set_line_wrap( GTK_TEXT(m_text), FALSE );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* finally, put the vertical scrollbar in the upper right corner */
|
/* finally, put the vertical scrollbar in the upper right corner */
|
||||||
m_vScrollbar = gtk_vscrollbar_new( GTK_TEXT(m_text)->vadj );
|
m_vScrollbar = gtk_vscrollbar_new( GTK_TEXT(m_text)->vadj );
|
||||||
GTK_WIDGET_UNSET_FLAGS( m_vScrollbar, GTK_CAN_FOCUS );
|
GTK_WIDGET_UNSET_FLAGS( m_vScrollbar, GTK_CAN_FOCUS );
|
||||||
@@ -317,7 +317,7 @@ void wxTextCtrl::SetValue( const wxString &value )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
wxString tmp = _T("");
|
wxString tmp = _T("");
|
||||||
if (!value.IsNull()) tmp = value;
|
if (!value.IsNull()) tmp = value;
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
@@ -336,7 +336,7 @@ void wxTextCtrl::SetValue( const wxString &value )
|
|||||||
{
|
{
|
||||||
gtk_entry_set_text( GTK_ENTRY(m_text), tmp.mbc_str() );
|
gtk_entry_set_text( GTK_ENTRY(m_text), tmp.mbc_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -349,7 +349,7 @@ void wxTextCtrl::WriteText( const wxString &text )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
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 */
|
||||||
@@ -382,7 +382,7 @@ void wxTextCtrl::WriteText( const wxString &text )
|
|||||||
/* 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 );
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -395,17 +395,32 @@ void wxTextCtrl::AppendText( const wxString &text )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
{
|
{
|
||||||
/* we'll insert at the last position */
|
bool hasSpecialAttributes = m_font.Ok() ||
|
||||||
gint len = gtk_text_get_length( GTK_TEXT(m_text) );
|
m_foregroundColour.Ok() ||
|
||||||
|
m_backgroundColour.Ok();
|
||||||
|
if ( hasSpecialAttributes )
|
||||||
|
{
|
||||||
|
gtk_text_insert( GTK_TEXT(m_text),
|
||||||
|
m_font.GetInternalFont(),
|
||||||
|
m_foregroundColour.GetColor(),
|
||||||
|
m_backgroundColour.GetColor(),
|
||||||
|
text, text.length());
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* we'll insert at the last position */
|
||||||
|
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) );
|
||||||
@@ -414,7 +429,7 @@ void wxTextCtrl::AppendText( const wxString &text )
|
|||||||
{
|
{
|
||||||
gtk_entry_append_text( GTK_ENTRY(m_text), text.mbc_str() );
|
gtk_entry_append_text( GTK_ENTRY(m_text), text.mbc_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -453,7 +468,7 @@ bool wxTextCtrl::LoadFile( const wxString &file )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
if (m_windowStyle & wxTE_MULTILINE)
|
if (m_windowStyle & wxTE_MULTILINE)
|
||||||
{
|
{
|
||||||
gint pos = 0;
|
gint pos = 0;
|
||||||
@@ -463,10 +478,10 @@ bool wxTextCtrl::LoadFile( const wxString &file )
|
|||||||
{
|
{
|
||||||
gtk_entry_set_text( GTK_ENTRY(m_text), text );
|
gtk_entry_set_text( GTK_ENTRY(m_text), text );
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
free (text);
|
free (text);
|
||||||
m_modified = FALSE;
|
m_modified = FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -746,9 +761,9 @@ void wxTextCtrl::Remove( long from, long to )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to );
|
gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to );
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -759,9 +774,9 @@ void wxTextCtrl::Replace( long from, long to, const wxString &value )
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to );
|
gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to );
|
||||||
|
|
||||||
if (!value.IsEmpty())
|
if (!value.IsEmpty())
|
||||||
{
|
{
|
||||||
gint pos = (gint)from;
|
gint pos = (gint)from;
|
||||||
@@ -772,7 +787,7 @@ void wxTextCtrl::Replace( long from, long to, const wxString &value )
|
|||||||
gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &pos );
|
gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &pos );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -783,13 +798,13 @@ void wxTextCtrl::Cut()
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
#if (GTK_MINOR_VERSION > 0)
|
#if (GTK_MINOR_VERSION > 0)
|
||||||
gtk_editable_cut_clipboard( GTK_EDITABLE(m_text) );
|
gtk_editable_cut_clipboard( GTK_EDITABLE(m_text) );
|
||||||
#else
|
#else
|
||||||
gtk_editable_cut_clipboard( GTK_EDITABLE(m_text), 0 );
|
gtk_editable_cut_clipboard( GTK_EDITABLE(m_text), 0 );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -811,13 +826,13 @@ void wxTextCtrl::Paste()
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
#if (GTK_MINOR_VERSION > 0)
|
#if (GTK_MINOR_VERSION > 0)
|
||||||
gtk_editable_paste_clipboard( GTK_EDITABLE(m_text) );
|
gtk_editable_paste_clipboard( GTK_EDITABLE(m_text) );
|
||||||
#else
|
#else
|
||||||
gtk_editable_paste_clipboard( GTK_EDITABLE(m_text), 0 );
|
gtk_editable_paste_clipboard( GTK_EDITABLE(m_text), 0 );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -875,14 +890,14 @@ bool wxTextCtrl::CanRedo() const
|
|||||||
void wxTextCtrl::GetSelection(long* from, long* to) const
|
void wxTextCtrl::GetSelection(long* from, long* to) const
|
||||||
{
|
{
|
||||||
wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
|
wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
|
||||||
|
|
||||||
if (!(GTK_EDITABLE(m_text)->has_selection))
|
if (!(GTK_EDITABLE(m_text)->has_selection))
|
||||||
{
|
{
|
||||||
if (from) *from = 0;
|
if (from) *from = 0;
|
||||||
if (to) *to = 0;
|
if (to) *to = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (from) *from = (long) GTK_EDITABLE(m_text)->selection_start_pos;
|
if (from) *from = (long) GTK_EDITABLE(m_text)->selection_start_pos;
|
||||||
if (to) *to = (long) GTK_EDITABLE(m_text)->selection_end_pos;
|
if (to) *to = (long) GTK_EDITABLE(m_text)->selection_end_pos;
|
||||||
}
|
}
|
||||||
@@ -1005,12 +1020,31 @@ bool wxTextCtrl::IsOwnGtkWindow( GdkWindow *window )
|
|||||||
return (window == GTK_ENTRY(m_text)->text_area);
|
return (window == GTK_ENTRY(m_text)->text_area);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxTextCtrl::SetFont( const wxFont &WXUNUSED(font) )
|
// the font will change for subsequent text insertiongs
|
||||||
|
bool wxTextCtrl::SetFont( const wxFont &font )
|
||||||
{
|
{
|
||||||
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );
|
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );
|
||||||
|
|
||||||
// doesn't work
|
if ( !wxWindowBase::SetFont(font) )
|
||||||
return FALSE;
|
{
|
||||||
|
// font didn't change, nothing to do
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( m_windowStyle & wxTE_MULTILINE )
|
||||||
|
{
|
||||||
|
// for compatibility with other ports: the font is a global controls
|
||||||
|
// characteristic, so change the font globally
|
||||||
|
wxString value = GetValue();
|
||||||
|
if ( !value.IsEmpty() )
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
|
||||||
|
AppendText(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) )
|
bool wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) )
|
||||||
|
Reference in New Issue
Block a user