Fix for listbox problem, when created on invisible
window. Shown in wxWizard sample. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31726 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
ad975781eb
commit
f2e935373d
@ -30,6 +30,7 @@
|
||||
#include "wx/log.h"
|
||||
#include "wx/app.h"
|
||||
#include "wx/checkbox.h"
|
||||
#include "wx/checklst.h"
|
||||
#include "wx/msgdlg.h"
|
||||
#include "wx/radiobox.h"
|
||||
#include "wx/menu.h"
|
||||
@ -177,6 +178,7 @@ public:
|
||||
wxALL,
|
||||
5 // Border
|
||||
);
|
||||
|
||||
SetSizer(mainSizer);
|
||||
mainSizer->Fit(this);
|
||||
}
|
||||
@ -246,6 +248,23 @@ public:
|
||||
wxALL,
|
||||
5 // Border width
|
||||
);
|
||||
|
||||
static const wxChar *aszChoices[] =
|
||||
{ _T("Zeroth"), _T("First"), _T("Second"), _T("Third"), _T("Fourth"), _T("Fifth"), _T("Sixth"), _T("Seventh"), _T("Eighth"), _T("Nineth") };
|
||||
wxString *astrChoices = new wxString[WXSIZEOF(aszChoices)];
|
||||
unsigned int ui;
|
||||
for ( ui = 0; ui < WXSIZEOF(aszChoices); ui++ )
|
||||
astrChoices[ui] = aszChoices[ui];
|
||||
m_checklistbox = new wxCheckListBox(this, wxID_ANY, wxDefaultPosition, wxSize(100,100),
|
||||
WXSIZEOF(aszChoices), astrChoices);
|
||||
|
||||
mainSizer->Add(
|
||||
m_checklistbox,
|
||||
0, // No vertical stretching
|
||||
wxALL,
|
||||
5 // Border width
|
||||
);
|
||||
|
||||
|
||||
SetSizer(mainSizer);
|
||||
mainSizer->Fit(this);
|
||||
@ -263,6 +282,7 @@ private:
|
||||
*m_next;
|
||||
|
||||
wxCheckBox *m_checkbox;
|
||||
wxCheckListBox *m_checklistbox;
|
||||
};
|
||||
|
||||
// ============================================================================
|
||||
|
@ -404,6 +404,23 @@ static void gtk_listitem_select_cb( GtkWidget *widget,
|
||||
// wxListBox
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static gint
|
||||
gtk_listbox_realized_callback( GtkWidget *m_widget, wxListBox *win )
|
||||
{
|
||||
if (g_isIdle)
|
||||
wxapp_install_idle_handler();
|
||||
|
||||
GList *child = win->m_list->children;
|
||||
for (child = win->m_list->children; child != NULL; child = child->next)
|
||||
gtk_widget_show( GTK_WIDGET(child->data) );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxListBox
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxListBox,wxControl)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -490,6 +507,9 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
|
||||
|
||||
gtk_widget_show( GTK_WIDGET(m_list) );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(m_list), "realize",
|
||||
GTK_SIGNAL_FUNC(gtk_listbox_realized_callback), (gpointer) this );
|
||||
|
||||
if ( style & wxLB_SORT )
|
||||
{
|
||||
// this will change DoAppend() behaviour
|
||||
@ -678,13 +698,12 @@ void wxListBox::GtkAddItem( const wxString &item, int pos )
|
||||
gtk_signal_connect( GTK_OBJECT(list_item), "focus_out_event",
|
||||
GTK_SIGNAL_FUNC(gtk_listitem_focus_out_callback), (gpointer)this );
|
||||
|
||||
|
||||
ConnectWidget( list_item );
|
||||
|
||||
gtk_widget_show( list_item );
|
||||
|
||||
if (GTK_WIDGET_REALIZED(m_widget))
|
||||
{
|
||||
gtk_widget_show( list_item );
|
||||
|
||||
gtk_widget_realize( list_item );
|
||||
gtk_widget_realize( GTK_BIN(list_item)->child );
|
||||
|
||||
|
@ -404,6 +404,23 @@ static void gtk_listitem_select_cb( GtkWidget *widget,
|
||||
// wxListBox
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static gint
|
||||
gtk_listbox_realized_callback( GtkWidget *m_widget, wxListBox *win )
|
||||
{
|
||||
if (g_isIdle)
|
||||
wxapp_install_idle_handler();
|
||||
|
||||
GList *child = win->m_list->children;
|
||||
for (child = win->m_list->children; child != NULL; child = child->next)
|
||||
gtk_widget_show( GTK_WIDGET(child->data) );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxListBox
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxListBox,wxControl)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -490,6 +507,9 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
|
||||
|
||||
gtk_widget_show( GTK_WIDGET(m_list) );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(m_list), "realize",
|
||||
GTK_SIGNAL_FUNC(gtk_listbox_realized_callback), (gpointer) this );
|
||||
|
||||
if ( style & wxLB_SORT )
|
||||
{
|
||||
// this will change DoAppend() behaviour
|
||||
@ -678,13 +698,12 @@ void wxListBox::GtkAddItem( const wxString &item, int pos )
|
||||
gtk_signal_connect( GTK_OBJECT(list_item), "focus_out_event",
|
||||
GTK_SIGNAL_FUNC(gtk_listitem_focus_out_callback), (gpointer)this );
|
||||
|
||||
|
||||
ConnectWidget( list_item );
|
||||
|
||||
gtk_widget_show( list_item );
|
||||
|
||||
if (GTK_WIDGET_REALIZED(m_widget))
|
||||
{
|
||||
gtk_widget_show( list_item );
|
||||
|
||||
gtk_widget_realize( list_item );
|
||||
gtk_widget_realize( GTK_BIN(list_item)->child );
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user