#include "wx/arrstr.h"
#endif
-#include "wx/gtk/private.h"
-#include "wx/gtk/private/object.h"
-#include "wx/gtk/treeentry_gtk.h"
-
#if wxUSE_TOOLTIPS
#include "wx/tooltip.h"
#endif
#include <gtk/gtk.h>
+#include "wx/gtk/private.h"
+#include "wx/gtk/private/gtk2-compat.h"
+#include "wx/gtk/private/object.h"
+#include "wx/gtk/treeentry_gtk.h"
#include <gdk/gdkkeysyms.h>
-#if GTK_CHECK_VERSION(3,0,0)
+#ifdef __WXGTK3__
#include <gdk/gdkkeysyms-compat.h>
#endif
wxCHECK_MSG(entry2, 0, wxT("Could not get second entry"));
//We compare collate keys here instead of calling g_utf8_collate
- //as it is rather slow (and even the docs reccommend this)
+ //as it is rather slow (and even the docs recommend this)
return strcmp(gtk_tree_entry_get_collate_key(entry1),
gtk_tree_entry_get_collate_key(entry2)) >= 0;
}
wxListBox::~wxListBox()
{
- m_hasVMT = false;
+ if (m_treeview)
+ {
+ GTKDisconnect(m_treeview);
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(m_treeview);
+ if (selection)
+ GTKDisconnect(selection);
+ }
Clear();
}
gtk_list_store_clear( m_liststore ); /* well, THAT was easy :) */
GTKEnableEvents();
+
+ UpdateOldSelections();
}
void wxListBox::DoDeleteOneItem(unsigned int n)
void wxListBox::GTKOnActivated(int item)
{
- SendEvent(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, item, IsSelected(item));
+ SendEvent(wxEVT_LISTBOX_DCLICK, item, IsSelected(item));
}
void wxListBox::GTKOnSelectionChanged()
{
const int item = GetSelection();
if ( DoChangeSingleSelection(item) )
- SendEvent(wxEVT_COMMAND_LISTBOX_SELECTED, item, true);
+ SendEvent(wxEVT_LISTBOX, item, true);
}
}
GtkTreeIter iter;
wxCHECK_MSG( GTKGetIteratorFor(n, &iter), false, wxT("Invalid index") );
- return gtk_tree_selection_iter_is_selected(selection, &iter);
+ return gtk_tree_selection_iter_is_selected(selection, &iter) != 0;
}
void wxListBox::DoSetSelection( int n, bool select )
wxCHECK_RET( IsValid(n), wxT("invalid index"));
//RN: I have no idea why this line is needed...
- if (gdk_pointer_is_grabbed () && gtk_widget_has_grab(GTK_WIDGET(m_treeview)))
+ if (gtk_widget_has_grab(GTK_WIDGET(m_treeview)))
return;
GtkTreeIter iter;
// need to translate from master window since it is in client coords
gint binx, biny;
gdk_window_get_geometry(gtk_tree_view_get_bin_window(m_treeview),
- &binx, &biny, NULL, NULL, NULL);
+ &binx, &biny, NULL, NULL);
GtkTreePath* path;
if ( !gtk_tree_view_get_path_at_pos
void wxListBox::DoApplyWidgetStyle(GtkRcStyle *style)
{
- if (m_hasBgCol && m_backgroundColour.Ok())
+#ifdef __WXGTK3__
+ // don't know if this is even necessary, or how to do it
+#else
+ if (m_hasBgCol && m_backgroundColour.IsOk())
{
GdkWindow *window = gtk_tree_view_get_bin_window(m_treeview);
if (window)
gdk_window_clear( window );
}
}
+#endif
- gtk_widget_modify_style( GTK_WIDGET(m_treeview), style );
+ GTKApplyStyle(GTK_WIDGET(m_treeview), style);
}
wxSize wxListBox::DoGetBestSize() const
wxVisualAttributes
wxListBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
{
- return GetDefaultAttributesFromGTKWidget(gtk_tree_view_new, true);
+ return GetDefaultAttributesFromGTKWidget(gtk_tree_view_new(), true);
}
#endif // wxUSE_LISTBOX