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:
Vadim Zeitlin
1999-07-12 14:02:01 +00:00
parent a8b96c3dd8
commit bb69661b05
4 changed files with 177 additions and 104 deletions

View File

@@ -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)

View File

@@ -403,6 +403,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
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 );

View File

@@ -397,6 +397,20 @@ void wxTextCtrl::AppendText( const wxString &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)
{
bool hasSpecialAttributes = m_font.Ok() ||
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 */ /* 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) );
@@ -406,6 +420,7 @@ void wxTextCtrl::AppendText( const wxString &text )
#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) );
@@ -1005,14 +1020,33 @@ 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) )
{
// font didn't change, nothing to do
return FALSE; 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) )
{ {
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") ); wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );

View File

@@ -397,6 +397,20 @@ void wxTextCtrl::AppendText( const wxString &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)
{
bool hasSpecialAttributes = m_font.Ok() ||
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 */ /* 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) );
@@ -406,6 +420,7 @@ void wxTextCtrl::AppendText( const wxString &text )
#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) );
@@ -1005,14 +1020,33 @@ 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) )
{
// font didn't change, nothing to do
return FALSE; 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) )
{ {
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") ); wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );