X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/992295c493d410312d218ae3204dcafe2355e5b2..44ba8f0ea92f65d9893ce0780971745a5d8e80ea:/src/gtk1/listbox.cpp diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index afdac34650..b81275e629 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -21,6 +21,7 @@ #include "wx/intl.h" #include "wx/checklst.h" #include "wx/settings.h" +#include "wx/gtk/private.h" #if wxUSE_TOOLTIPS #include "wx/tooltip.h" @@ -59,9 +60,10 @@ extern bool g_isIdle; // data //----------------------------------------------------------------------------- -extern bool g_blockEventsOnDrag; -extern bool g_blockEventsOnScroll; -extern wxCursor g_globalCursor; +extern bool g_blockEventsOnDrag; +extern bool g_blockEventsOnScroll; +extern wxCursor g_globalCursor; +extern wxWindowGTK *g_delayedFocus; static bool g_hasDoubleClicked = FALSE; @@ -334,7 +336,6 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id, { m_needParent = TRUE; m_acceptsFocus = TRUE; - m_isListBox = TRUE; m_prevSelection = 0; // or -1 ?? m_blockEvent = FALSE; @@ -537,7 +538,7 @@ void wxListBox::GtkAddItem( const wxString &item, int pos ) } #endif // wxUSE_CHECKLISTBOX - list_item = gtk_list_item_new_with_label( label.mbc_str() ); + list_item = gtk_list_item_new_with_label( wxGTK_CONV( label ) ); GList *gitem_list = g_list_alloc (); gitem_list->data = list_item; @@ -737,7 +738,7 @@ void wxListBox::SetString( int n, const wxString &string ) #endif // wxUSE_CHECKLISTBOX str += string; - gtk_label_set( label, str.mbc_str() ); + gtk_label_set( label, wxGTK_CONV( str ) ); } else { @@ -755,7 +756,11 @@ wxString wxListBox::GetString( int n ) const GtkBin *bin = GTK_BIN( child->data ); GtkLabel *label = GTK_LABEL( bin->child ); - wxString str = wxString(GET_REAL_LABEL(label->label),*wxConvCurrent); +#ifdef __WXGTK20__ + wxString str = wxGTK_CONV_BACK( gtk_label_get_text( label ) ); +#else + wxString str = wxString( label->label ); +#endif return str; } @@ -784,7 +789,11 @@ int wxListBox::FindString( const wxString &item ) const GtkBin *bin = GTK_BIN( child->data ); GtkLabel *label = GTK_LABEL( bin->child ); - wxString str = wxString(GET_REAL_LABEL(label->label),*wxConvCurrent); +#ifdef __WXGTK20__ + wxString str = wxGTK_CONV_BACK( gtk_label_get_text( label ) ); +#else + wxString str = wxString( label->label ); +#endif if (str == item) return count; @@ -1023,6 +1032,15 @@ void wxListBox::OnInternalIdle() } } + if (g_delayedFocus == this) + { + if (GTK_WIDGET_REALIZED(m_widget)) + { + gtk_widget_grab_focus( m_widget ); + g_delayedFocus = NULL; + } + } + UpdateWindowUI(); } @@ -1054,4 +1072,13 @@ wxSize wxListBox::DoGetBestSize() const return wxSize(lbWidth, lbHeight); } -#endif +void wxListBox::FixUpMouseEvent(GtkWidget *widget, wxCoord& x, wxCoord& y) +{ + // the mouse event coords are relative to the listbox items, we need to + // translate them to the normal client coords + x += widget->allocation.x; + y += widget->allocation.y; +} + +#endif // wxUSE_LISTBOX +