X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/11e62fe658531aaa2891351f19bd0a4c076717ae..9e15c718b3a9da121a2c5ca0b490959e5d472046:/src/gtk1/listbox.cpp diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index 40fb0c0a0c..ca9fb3016c 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/gtk/listbox.cpp +// Name: src/gtk1/listbox.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ @@ -10,21 +10,23 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -#include "wx/defs.h" - #if wxUSE_LISTBOX #include "wx/listbox.h" -#include "wx/dynarray.h" -#include "wx/arrstr.h" -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/checklst.h" -#include "wx/settings.h" -#include "wx/gtk/private.h" + +#ifndef WX_PRECOMP + #include "wx/dynarray.h" + #include "wx/intl.h" + #include "wx/utils.h" + #include "wx/settings.h" + #include "wx/checklst.h" + #include "wx/arrstr.h" +#endif + +#include "wx/gtk1/private.h" #if wxUSE_TOOLTIPS -#include "wx/tooltip.h" + #include "wx/tooltip.h" #endif #include @@ -49,7 +51,7 @@ extern wxWindowGTK *g_delayedFocus; extern wxWindowGTK *g_focusWindow; extern wxWindowGTK *g_focusWindowLast; -static bool g_hasDoubleClicked = FALSE; +static bool g_hasDoubleClicked = false; //----------------------------------------------------------------------------- // idle callback for SetFirstItem @@ -73,7 +75,7 @@ static gint wxlistbox_idle_callback( gpointer gdata ) // check that the items haven't been deleted from the listbox since we had // installed this callback wxListBox *lbox = data->m_listbox; - if ( data->m_item < lbox->GetCount() ) + if ( data->m_item < (int)lbox->GetCount() ) { lbox->SetFirstItem( data->m_item ); } @@ -105,7 +107,7 @@ static gint gtk_listitem_focus_in_callback( GtkWidget *widget, if ( !win->m_hasFocus ) { // not yet, notify it - win->m_hasFocus = TRUE; + win->m_hasFocus = true; wxChildFocusEvent eventChildFocus(win); (void)win->GetEventHandler()->ProcessEvent(eventChildFocus); @@ -136,7 +138,7 @@ static gint gtk_listitem_focus_out_callback( GtkWidget *widget, GdkEventFocus *g // have focus already if ( win->m_hasFocus ) { - win->m_hasFocus = FALSE; + win->m_hasFocus = false; wxFocusEvent event( wxEVT_KILL_FOCUS, win->GetId() ); event.SetEventObject( win ); @@ -241,14 +243,14 @@ gtk_listbox_button_press_callback( GtkWidget *widget, (((listbox->GetWindowStyleFlag() & wxLB_MULTIPLE) != 0) || ((listbox->GetWindowStyleFlag() & wxLB_EXTENDED) != 0)) ) { - listbox->m_blockEvent = TRUE; + listbox->m_blockEvent = true; int i; for (i = 0; i < (int)listbox->GetCount(); i++) if (i != sel) gtk_list_unselect_item( GTK_LIST(listbox->m_list), i ); - listbox->m_blockEvent = FALSE; + listbox->m_blockEvent = false; return false; } @@ -274,7 +276,7 @@ gtk_listbox_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxLis if (g_blockEventsOnDrag) return FALSE; - bool ret = FALSE; + bool ret = false; if ((gdk_event->keyval == GDK_Tab) || (gdk_event->keyval == GDK_ISO_Left_Tab)) { @@ -290,7 +292,7 @@ gtk_listbox_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxLis if ((gdk_event->keyval == GDK_Return) && (!ret)) { // eat return in all modes - ret = TRUE; + ret = true; } #if wxUSE_CHECKLISTBOX @@ -318,7 +320,7 @@ gtk_listbox_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxLis if (sel != -1) { - ret = TRUE; + ret = true; if (listbox->IsSelected( sel )) gtk_list_unselect_item( listbox->m_list, sel ); @@ -458,7 +460,7 @@ wxListBox::wxListBox() { m_list = (GtkList *) NULL; #if wxUSE_CHECKLISTBOX - m_hasCheckBoxes = FALSE; + m_hasCheckBoxes = false; #endif // wxUSE_CHECKLISTBOX } @@ -480,16 +482,16 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id, long style, const wxValidator& validator, const wxString &name ) { - m_needParent = TRUE; - m_acceptsFocus = TRUE; + m_needParent = true; + m_acceptsFocus = true; m_prevSelection = 0; // or -1 ?? - m_blockEvent = FALSE; + m_blockEvent = false; if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, validator, name )) { wxFAIL_MSG( wxT("wxListBox creation failed") ); - return FALSE; + return false; } m_widget = gtk_scrolled_window_new( (GtkAdjustment*) NULL, (GtkAdjustment*) NULL ); @@ -558,12 +560,12 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id, PostCreation(size); SetBestSize(size); // need this too because this is a wxControlWithItems - return TRUE; + return true; } wxListBox::~wxListBox() { - m_hasVMT = FALSE; + m_hasVMT = false; Clear(); @@ -575,7 +577,7 @@ wxListBox::~wxListBox() // adding items // ---------------------------------------------------------------------------- -void wxListBox::DoInsertItems(const wxArrayString& items, int pos) +void wxListBox::DoInsertItems(const wxArrayString& items, unsigned int pos) { wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); @@ -585,26 +587,26 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos) // code elsewhere supposes we have as many items in m_clientList as items // in the listbox - wxASSERT_MSG( m_clientList.GetCount() == (size_t)GetCount(), + wxASSERT_MSG( m_clientList.GetCount() == GetCount(), wxT("bug in client data management") ); InvalidateBestSize(); GList *children = m_list->children; - int length = g_list_length(children); + unsigned int length = g_list_length(children); wxCHECK_RET( pos <= length, wxT("invalid index in wxListBox::InsertItems") ); - size_t nItems = items.GetCount(); + unsigned int nItems = items.GetCount(); int index; if (m_strings) { - for (size_t n = 0; n < nItems; n++) + for (unsigned int n = 0; n < nItems; n++) { index = m_strings->Add( items[n] ); - if (index != GetCount()) + if (index != (int)GetCount()) { GtkAddItem( items[n], index ); wxList::compatibility_iterator node = m_clientList.Item( index ); @@ -621,7 +623,7 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos) { if (pos == length) { - for ( size_t n = 0; n < nItems; n++ ) + for ( unsigned int n = 0; n < nItems; n++ ) { GtkAddItem( items[n] ); @@ -631,7 +633,7 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos) else { wxList::compatibility_iterator node = m_clientList.Item( pos ); - for ( size_t n = 0; n < nItems; n++ ) + for ( unsigned int n = 0; n < nItems; n++ ) { GtkAddItem( items[n], pos+n ); @@ -640,7 +642,7 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos) } } - wxASSERT_MSG( m_clientList.GetCount() == (size_t)GetCount(), + wxASSERT_MSG( m_clientList.GetCount() == GetCount(), wxT("bug in client data management") ); } @@ -654,7 +656,7 @@ int wxListBox::DoAppend( const wxString& item ) int index = m_strings->Add( item ); // only if not at the end anyway - if (index != GetCount()) + if (index != (int)GetCount()) { GtkAddItem( item, index ); @@ -759,8 +761,8 @@ void wxListBox::DoSetItems( const wxArrayString& items, if ( clientData ) { - size_t count = items.GetCount(); - for ( size_t n = 0; n < count; n++ ) + unsigned int count = items.GetCount(); + for ( unsigned int n = 0; n < count; n++ ) { SetClientData(n, clientData[n]); } @@ -775,7 +777,7 @@ void wxListBox::Clear() { wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); - gtk_list_clear_items( m_list, 0, GetCount() ); + gtk_list_clear_items( m_list, 0, (int)GetCount() ); if ( GTK_LIST(m_list)->last_focus_child != NULL ) { @@ -787,7 +789,7 @@ void wxListBox::Clear() { // destroy the data (due to Robert's idea of using wxList // and not wxList we can't just say - // m_clientList.DeleteContents(TRUE) - this would crash! + // m_clientList.DeleteContents(true) - this would crash! wxList::compatibility_iterator node = m_clientList.GetFirst(); while ( node ) { @@ -801,7 +803,7 @@ void wxListBox::Clear() m_strings->Clear(); } -void wxListBox::Delete( int n ) +void wxListBox::Delete(unsigned int n) { wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); @@ -833,7 +835,7 @@ void wxListBox::Delete( int n ) // client data // ---------------------------------------------------------------------------- -void wxListBox::DoSetItemClientData( int n, void* clientData ) +void wxListBox::DoSetItemClientData(unsigned int n, void* clientData) { wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") ); @@ -843,7 +845,7 @@ void wxListBox::DoSetItemClientData( int n, void* clientData ) node->SetData( (wxObject*) clientData ); } -void* wxListBox::DoGetItemClientData( int n ) const +void* wxListBox::DoGetItemClientData(unsigned int n) const { wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid listbox control") ); @@ -853,7 +855,7 @@ void* wxListBox::DoGetItemClientData( int n ) const return node->GetData(); } -void wxListBox::DoSetItemClientObject( int n, wxClientData* clientData ) +void wxListBox::DoSetItemClientObject(unsigned int n, wxClientData* clientData) { wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") ); @@ -865,7 +867,7 @@ void wxListBox::DoSetItemClientObject( int n, wxClientData* clientData ) node->SetData( (wxObject*) clientData ); } -wxClientData* wxListBox::DoGetItemClientObject( int n ) const +wxClientData* wxListBox::DoGetItemClientObject(unsigned int n) const { wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid listbox control") ); @@ -887,16 +889,12 @@ wxString wxListBox::GetRealLabel(GList *item) const wxString str; -#ifdef __WXGTK20__ - str = wxGTK_CONV_BACK( gtk_label_get_text( label ) ); -#else str = wxString( label->label ); -#endif #if wxUSE_CHECKLISTBOX // checklistboxes have "[±] " prepended to their lables, remove it // - // NB: 4 below is the length of wxCHECKLBOX_STRING from wx/gtk/checklst.h + // NB: 4 below is the length of wxCHECKLBOX_STRING from wx/gtk1/checklst.h if ( m_hasCheckBoxes ) str.erase(0, 4); #endif // wxUSE_CHECKLISTBOX @@ -904,7 +902,7 @@ wxString wxListBox::GetRealLabel(GList *item) const return str; } -void wxListBox::SetString( int n, const wxString &string ) +void wxListBox::SetString(unsigned int n, const wxString &string) { wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); @@ -929,7 +927,7 @@ void wxListBox::SetString( int n, const wxString &string ) } } -wxString wxListBox::GetString( int n ) const +wxString wxListBox::GetString(unsigned int n) const { wxCHECK_MSG( m_list != NULL, wxEmptyString, wxT("invalid listbox") ); @@ -944,9 +942,9 @@ wxString wxListBox::GetString( int n ) const return wxEmptyString; } -int wxListBox::GetCount() const +unsigned int wxListBox::GetCount() const { - wxCHECK_MSG( m_list != NULL, -1, wxT("invalid listbox") ); + wxCHECK_MSG( m_list != NULL, 0, wxT("invalid listbox") ); GList *children = m_list->children; return g_list_length(children); @@ -978,7 +976,7 @@ int wxListBox::FindString( const wxString &item, bool bCase ) const int wxListBox::GetSelection() const { - wxCHECK_MSG( m_list != NULL, -1, wxT("invalid listbox") ); + wxCHECK_MSG( m_list != NULL, wxNOT_FOUND, wxT("invalid listbox") ); GList *child = m_list->children; int count = 0; @@ -988,12 +986,12 @@ int wxListBox::GetSelection() const count++; child = child->next; } - return -1; + return wxNOT_FOUND; } int wxListBox::GetSelections( wxArrayInt& aSelections ) const { - wxCHECK_MSG( m_list != NULL, -1, wxT("invalid listbox") ); + wxCHECK_MSG( m_list != NULL, wxNOT_FOUND, wxT("invalid listbox") ); // get the number of selected items first GList *child = m_list->children; @@ -1023,11 +1021,11 @@ int wxListBox::GetSelections( wxArrayInt& aSelections ) const bool wxListBox::IsSelected( int n ) const { - wxCHECK_MSG( m_list != NULL, FALSE, wxT("invalid listbox") ); + wxCHECK_MSG( m_list != NULL, false, wxT("invalid listbox") ); GList *target = g_list_nth( m_list->children, n ); - wxCHECK_MSG( target, FALSE, wxT("invalid listbox index") ); + wxCHECK_MSG( target, false, wxT("invalid listbox index") ); return (GTK_WIDGET(target->data)->state == GTK_STATE_SELECTED) ; } @@ -1036,7 +1034,7 @@ void wxListBox::DoSetSelection( int n, bool select ) { wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); - m_blockEvent = TRUE; + m_blockEvent = true; if (select) { @@ -1048,7 +1046,7 @@ void wxListBox::DoSetSelection( int n, bool select ) else gtk_list_unselect_item( m_list, n ); - m_blockEvent = FALSE; + m_blockEvent = false; } void wxListBox::DoSetFirstItem( int n ) @@ -1128,22 +1126,22 @@ GtkWidget *wxListBox::GetConnectWidget() bool wxListBox::IsOwnGtkWindow( GdkWindow *window ) { - return TRUE; + return true; #if 0 - if (m_widget->window == window) return TRUE; + if (m_widget->window == window) return true; - if (GTK_WIDGET(m_list)->window == window) return TRUE; + if (GTK_WIDGET(m_list)->window == window) return true; GList *child = m_list->children; while (child) { GtkWidget *bin = GTK_WIDGET( child->data ); - if (bin->window == window) return TRUE; + if (bin->window == window) return true; child = child->next; } - return FALSE; + return false; #endif } @@ -1222,7 +1220,7 @@ wxSize wxListBox::DoGetBestSize() const int wLine; // Find the widest line - for(int i = 0; i < GetCount(); i++) { + for(unsigned int i = 0; i < GetCount(); i++) { wxString str(GetString(i)); GetTextExtent(str, &wLine, NULL); lbWidth = wxMax(lbWidth, wLine);