wxControl::wxControl()
{
m_needParent = TRUE;
- m_createComplete = false;
}
bool wxControl::Create( wxWindow *parent,
const wxValidator& validator,
const wxString &name )
{
- m_createComplete = false;
bool ret = wxWindow::Create(parent, id, pos, size, style, name);
#if wxUSE_VALIDATORS
}
m_label << *pc;
}
-}
-
-void wxControl::PostSetLabel()
-{
- // make sure the widget has been created, and that PostCreate has already
- // been called
- if (m_widget && m_createComplete && GetAdjustMinSizeFlag())
- SetBestSize(wxDefaultSize);
+ InvalidateBestSize();
}
wxString wxControl::GetLabel() const
(* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_widget) )->size_request )
(m_widget, &req );
- return wxSize(req.width, req.height);
+ wxSize best(req.width, req.height);
+ CacheBestSize(best);
+ return best;
}
// GetBestSize is called.
gtk_widget_ensure_style(m_widget);
- InheritAttributes();
ApplyWidgetStyle();
SetInitialBestSize(size);
- m_createComplete = true;
}
if ( style && style->font_desc )
{
wxNativeFontInfo info;
- info.description = style->font_desc;
+ info.description = pango_font_description_copy(style->font_desc);
attr.font = wxFont(info);
}
else
//static
wxVisualAttributes
-wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(void),
+wxControl::GetDefaultAttributesFromGTKWidget(wxGtkWidgetNew_t widget_new,
bool useBase,
int state)
{
wxVisualAttributes attr;
+ // NB: we need toplevel window so that GTK+ can find the right style
+ GtkWidget *wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget* widget = widget_new();
+ gtk_container_add(GTK_CONTAINER(wnd), widget);
attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
- gtk_widget_destroy(widget);
+ gtk_widget_destroy(wnd);
return attr;
}
//static
wxVisualAttributes
-wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(const gchar*),
+wxControl::GetDefaultAttributesFromGTKWidget(wxGtkWidgetNewFromStr_t widget_new,
bool useBase,
int state)
{
wxVisualAttributes attr;
+ // NB: we need toplevel window so that GTK+ can find the right style
+ GtkWidget *wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget* widget = widget_new("");
+ gtk_container_add(GTK_CONTAINER(wnd), widget);
attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
- gtk_widget_destroy(widget);
+ gtk_widget_destroy(wnd);
return attr;
}
//static
wxVisualAttributes
-wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(GtkAdjustment*),
+wxControl::GetDefaultAttributesFromGTKWidget(wxGtkWidgetNewFromAdj_t widget_new,
bool useBase,
int state)
{
wxVisualAttributes attr;
+ // NB: we need toplevel window so that GTK+ can find the right style
+ GtkWidget *wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget* widget = widget_new(NULL);
+ gtk_container_add(GTK_CONTAINER(wnd), widget);
attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
- gtk_widget_destroy(widget);
+ gtk_widget_destroy(wnd);
return attr;
}