Added bitmaps and icons to samples

Fixed event handling in all controls
  Add some missing functions to wxRadioBox
  Fixed clientData stuff to Choice (Combo?)
  No more gtk warning in Combo
  Fixed toolbar sample and mdi sample
  Fixed bug in AddChild resulting from mdi changes
  Fixed wxFrame::GetPosition()
  Changed order of notification calls in wxListCtrl
  to prevent what I think is a reentry bug
  The usual compile fixes here and there


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1998-07-31 20:04:04 +00:00
parent 110f32055e
commit 47908e25f9
62 changed files with 1352 additions and 194 deletions

View File

@@ -14,20 +14,54 @@
#include "wx/combobox.h"
//-----------------------------------------------------------------------------
// data
//-----------------------------------------------------------------------------
extern bool g_blockEventsOnDrag;
//-----------------------------------------------------------------------------
// wxComboBox
//-----------------------------------------------------------------------------
void gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
//-----------------------------------------------------------------------------
// clicked
static void gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
{
if (combo->m_alreadySent)
{
combo->m_alreadySent = FALSE;
return;
}
combo->m_alreadySent = TRUE;
wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, combo->GetId());
event.SetInt( combo->GetSelection() );
wxString tmp( combo->GetStringSelection() );
event.SetString( WXSTRINGCAST(tmp) );
event.SetEventObject(combo);
combo->ProcessEvent(event);
combo->GetEventHandler()->ProcessEvent(event);
};
//-----------------------------------------------------------------------------
// size
/*
static gint gtk_combo_size_callback( GtkCombo *widget, GtkAllocation* alloc, wxComboBox *win )
{
if (!win->HasVMT()) return FALSE;
if (g_blockEventsOnDrag) return FALSE;
if (!widget->button) return FALSE;
widget->button->allocation.x =
alloc->width - widget->button->allocation.width;
return FALSE;
};
*/
//-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxComboBox,wxControl)
@@ -37,6 +71,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, const wxString& value,
int n, const wxString choices[],
long style, const wxString& name )
{
m_alreadySent = FALSE;
m_needParent = TRUE;
PreCreation( parent, id, pos, size, style, name );
@@ -60,11 +95,18 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, const wxString& value,
gtk_container_add( GTK_CONTAINER(list), list_item );
m_clientData.Append( (wxObject*)NULL );
gtk_widget_show( list_item );
};
PostCreation();
/*
gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate",
GTK_SIGNAL_FUNC(gtk_combo_size_callback), (gpointer)this );
*/
if (!value.IsNull()) SetValue( value );
Show( TRUE );
@@ -76,31 +118,44 @@ void wxComboBox::Clear(void)
{
GtkWidget *list = GTK_COMBO(m_widget)->list;
gtk_list_clear_items( GTK_LIST(list), 0, Number() );
m_clientData.Clear();
};
void wxComboBox::Append( const wxString &item )
{
Append( item, (char*)NULL );
};
void wxComboBox::Append( const wxString &item, char *clientData )
{
GtkWidget *list = GTK_COMBO(m_widget)->list;
GtkWidget *list_item;
list_item = gtk_list_item_new_with_label( item );
gtk_signal_connect( GTK_OBJECT(list_item), "select",
gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this );
gtk_container_add( GTK_CONTAINER(list), list_item );
gtk_widget_show( list_item );
};
void wxComboBox::Append( const wxString &WXUNUSED(item), char* WXUNUSED(clientData) )
{
m_clientData.Append( (wxObject*)clientData );
};
void wxComboBox::Delete( int n )
{
GtkWidget *list = GTK_COMBO(m_widget)->list;
gtk_list_clear_items( GTK_LIST(list), n, n );
wxNode *node = m_clientData.Nth( n );
if (!node)
{
wxFAIL_MSG("wxComboBox::Delete wrong index");
}
else
m_clientData.DeleteNode( node );
};
int wxComboBox::FindString( const wxString &item )
@@ -196,6 +251,13 @@ void wxComboBox::SetSelection( int n )
gtk_list_select_item( GTK_LIST(list), n );
};
void wxComboBox::SetStringSelection( const wxString &string )
{
int res = FindString( string );
if (res == -1) return;
SetSelection( res );
};
wxString wxComboBox::GetValue(void) const
{
GtkWidget *entry = GTK_COMBO(m_widget)->entry;