Corrected spin control, which ignored hand typed text.

Corrceted GetBestSize() etc of static text (displayed
    in tip dialog and elsewhere).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5194 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling 2000-01-03 11:42:49 +00:00
parent 312cd9e93d
commit 33720b2de5
8 changed files with 90 additions and 14 deletions

View File

@ -39,7 +39,6 @@ extern const wxChar *wxStaticTextNameStr;
class wxStaticText : public wxControl
{
public:
wxStaticText();
wxStaticText(wxWindow *parent,
wxWindowID id,
@ -60,10 +59,16 @@ public:
wxString GetLabel() const;
void SetLabel( const wxString &label );
bool SetFont( const wxFont &font );
// implementation
// --------------
void ApplyWidgetStyle();
protected:
virtual wxSize DoGetBestSize() const;
DECLARE_DYNAMIC_CLASS(wxStaticText)
};

View File

@ -39,7 +39,6 @@ extern const wxChar *wxStaticTextNameStr;
class wxStaticText : public wxControl
{
public:
wxStaticText();
wxStaticText(wxWindow *parent,
wxWindowID id,
@ -60,10 +59,16 @@ public:
wxString GetLabel() const;
void SetLabel( const wxString &label );
bool SetFont( const wxFont &font );
// implementation
// --------------
void ApplyWidgetStyle();
protected:
virtual wxSize DoGetBestSize() const;
DECLARE_DYNAMIC_CLASS(wxStaticText)
};

View File

@ -78,6 +78,8 @@ wxSize wxControl::DoGetBestSize() const
wxASSERT_MSG( m_widget, wxT("DoGetBestSize called before creation") );
GtkRequisition req;
req.width = 2;
req.height = 2;
(* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request )
(m_widget, &req );

View File

@ -149,6 +149,8 @@ int wxSpinCtrl::GetValue() const
{
wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
gtk_spin_button_update( GTK_SPIN_BUTTON(m_widget) );
return (int)ceil(m_adjust->value);
}

View File

@ -62,9 +62,7 @@ bool wxStaticText::Create(wxWindow *parent,
wxControl::SetLabel(label);
m_widget = gtk_label_new( m_label.mbc_str() );
gtk_label_set_line_wrap( GTK_LABEL(m_widget), FALSE );
SetFont( parent->GetFont() );
wxControl::SetFont( parent->GetFont() );
GtkJustification justify;
if ( style & wxALIGN_CENTER )
@ -79,6 +77,9 @@ bool wxStaticText::Create(wxWindow *parent,
static const float labelAlignments[] = { 0.0, 1.0, 0.5 };
gtk_misc_set_alignment(GTK_MISC(m_widget), labelAlignments[justify], 0.0);
// do not move this call elsewhere
gtk_label_set_line_wrap( GTK_LABEL(m_widget), FALSE );
SetSizeOrDefault( size );
m_parent->DoAddChild( this );
@ -107,10 +108,19 @@ void wxStaticText::SetLabel( const wxString &label )
gtk_label_set( GTK_LABEL(m_widget), m_label.mbc_str() );
// adjust the label size to the new label unless disabled
if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
{
if (!HasFlag(wxST_NO_AUTORESIZE))
SetSize( GetBestSize() );
}
}
bool wxStaticText::SetFont( const wxFont &font )
{
bool ret = wxControl::SetFont(font);
// adjust the label size to the new label unless disabled
if (!HasFlag(wxST_NO_AUTORESIZE))
SetSize( GetBestSize() );
return ret;
}
void wxStaticText::ApplyWidgetStyle()
@ -118,3 +128,22 @@ void wxStaticText::ApplyWidgetStyle()
SetWidgetStyle();
gtk_widget_set_style( m_widget, m_widgetStyle );
}
wxSize wxStaticText::DoGetBestSize() const
{
// Do not return any arbitrary default value...
wxASSERT_MSG( m_widget, wxT("wxStaticText::DoGetBestSize called before creation") );
// this invalidates the size request
gtk_label_set_line_wrap( GTK_LABEL(m_widget), TRUE );
gtk_label_set_line_wrap( GTK_LABEL(m_widget), FALSE );
GtkRequisition req;
req.width = 2;
req.height = 2;
(* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request )
(m_widget, &req );
return wxSize(req.width, req.height);
}

View File

@ -78,6 +78,8 @@ wxSize wxControl::DoGetBestSize() const
wxASSERT_MSG( m_widget, wxT("DoGetBestSize called before creation") );
GtkRequisition req;
req.width = 2;
req.height = 2;
(* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request )
(m_widget, &req );

View File

@ -149,6 +149,8 @@ int wxSpinCtrl::GetValue() const
{
wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
gtk_spin_button_update( GTK_SPIN_BUTTON(m_widget) );
return (int)ceil(m_adjust->value);
}

View File

@ -62,9 +62,7 @@ bool wxStaticText::Create(wxWindow *parent,
wxControl::SetLabel(label);
m_widget = gtk_label_new( m_label.mbc_str() );
gtk_label_set_line_wrap( GTK_LABEL(m_widget), FALSE );
SetFont( parent->GetFont() );
wxControl::SetFont( parent->GetFont() );
GtkJustification justify;
if ( style & wxALIGN_CENTER )
@ -79,6 +77,9 @@ bool wxStaticText::Create(wxWindow *parent,
static const float labelAlignments[] = { 0.0, 1.0, 0.5 };
gtk_misc_set_alignment(GTK_MISC(m_widget), labelAlignments[justify], 0.0);
// do not move this call elsewhere
gtk_label_set_line_wrap( GTK_LABEL(m_widget), FALSE );
SetSizeOrDefault( size );
m_parent->DoAddChild( this );
@ -107,10 +108,19 @@ void wxStaticText::SetLabel( const wxString &label )
gtk_label_set( GTK_LABEL(m_widget), m_label.mbc_str() );
// adjust the label size to the new label unless disabled
if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
{
if (!HasFlag(wxST_NO_AUTORESIZE))
SetSize( GetBestSize() );
}
}
bool wxStaticText::SetFont( const wxFont &font )
{
bool ret = wxControl::SetFont(font);
// adjust the label size to the new label unless disabled
if (!HasFlag(wxST_NO_AUTORESIZE))
SetSize( GetBestSize() );
return ret;
}
void wxStaticText::ApplyWidgetStyle()
@ -118,3 +128,22 @@ void wxStaticText::ApplyWidgetStyle()
SetWidgetStyle();
gtk_widget_set_style( m_widget, m_widgetStyle );
}
wxSize wxStaticText::DoGetBestSize() const
{
// Do not return any arbitrary default value...
wxASSERT_MSG( m_widget, wxT("wxStaticText::DoGetBestSize called before creation") );
// this invalidates the size request
gtk_label_set_line_wrap( GTK_LABEL(m_widget), TRUE );
gtk_label_set_line_wrap( GTK_LABEL(m_widget), FALSE );
GtkRequisition req;
req.width = 2;
req.height = 2;
(* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request )
(m_widget, &req );
return wxSize(req.width, req.height);
}