X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c49ba2113c3788115ec7134d2a5f37d0f4776c88..87b621a5b737c09cef079bb4a9ef53be132d2ce0:/src/gtk/dataview.cpp diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index ab6ad3f1ff..ada9706013 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -1705,8 +1705,11 @@ bool wxGtkDataViewModelNotifier::ValueChanged( const wxDataViewItem &item, unsig GTK_TREE_MODEL(wxgtk_model), &iter )); GdkRectangle cell_area; gtk_tree_view_get_cell_area( widget, path, gcolumn, &cell_area ); - +#ifdef __WXGTK3__ + GtkAdjustment* hadjust = gtk_scrollable_get_hadjustment(GTK_SCROLLABLE(widget)); +#else GtkAdjustment* hadjust = gtk_tree_view_get_hadjustment( widget ); +#endif double d = gtk_adjustment_get_value( hadjust ); int xdiff = (int) d; @@ -1810,7 +1813,7 @@ wxgtk_renderer_editing_started( GtkCellRenderer *WXUNUSED(cell), GtkCellEditable { s_user_data = item.GetID(); - g_signal_connect (GTK_CELL_EDITABLE (editable), "editing_done", + g_signal_connect (editable, "editing_done", G_CALLBACK (wxgtk_cell_editable_editing_done), (gpointer) wxrenderer ); @@ -1842,7 +1845,7 @@ void wxDataViewRenderer::GtkPackIntoColumn(GtkTreeViewColumn *column) void wxDataViewRenderer::GtkInitHandlers() { { - g_signal_connect (GTK_CELL_RENDERER(m_renderer), "editing_started", + g_signal_connect (m_renderer, "editing_started", G_CALLBACK (wxgtk_renderer_editing_started), this); } @@ -2987,7 +2990,7 @@ void wxDataViewColumn::Init(wxAlignment align, int flags, int width) SetWidth( width ); // Create container for icon and label - GtkWidget *box = gtk_hbox_new( FALSE, 1 ); + GtkWidget* box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 1); gtk_widget_show( box ); // gtk_container_set_border_width((GtkContainer*)box, 2); m_image = gtk_image_new(); @@ -3366,7 +3369,6 @@ wxDataViewCtrlInternal::wxDataViewCtrlInternal( wxDataViewCtrl *owner, wxDataVie m_owner = owner; m_wx_model = wx_model; - m_gtk_model = NULL; m_root = NULL; m_sort_order = GTK_SORT_ASCENDING; m_sort_column = -1; @@ -4354,7 +4356,7 @@ void gtk_dataviewctrl_size_callback( GtkWidget *WXUNUSED(widget), wxWindow *child = node->GetData(); GtkRequisition req; - gtk_widget_size_request( child->m_widget, &req ); + gtk_widget_get_preferred_size(child->m_widget, NULL, &req); GtkAllocation alloc; alloc.x = child->m_x; @@ -4377,14 +4379,15 @@ gtk_dataview_motion_notify_callback( GtkWidget *WXUNUSED(widget), GdkEventMotion *gdk_event, wxDataViewCtrl *dv ) { + int x = gdk_event->x; + int y = gdk_event->y; if (gdk_event->is_hint) { - int x = 0; - int y = 0; - GdkModifierType state; - gdk_window_get_pointer(gdk_event->window, &x, &y, &state); - gdk_event->x = x; - gdk_event->y = y; +#ifdef __WXGTK3__ + gdk_window_get_device_position(gdk_event->window, gdk_event->device, &x, &y, NULL); +#else + gdk_window_get_pointer(gdk_event->window, &x, &y, NULL); +#endif } wxGtkTreePath path; @@ -4393,7 +4396,7 @@ gtk_dataview_motion_notify_callback( GtkWidget *WXUNUSED(widget), gint cell_y = 0; if (gtk_tree_view_get_path_at_pos( GTK_TREE_VIEW(dv->GtkGetTreeView()), - (int) gdk_event->x, (int) gdk_event->y, + x, y, path.ByRef(), &column, &cell_x, @@ -4463,6 +4466,11 @@ wxDataViewCtrl::~wxDataViewCtrl() // This won't do anything if we're not editing it wxcol->GetRenderer()->CancelEditing(); } + + GTKDisconnect(m_treeview); + GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(m_treeview)); + if (selection) + GTKDisconnect(selection); } m_cols.Clear(); @@ -4472,6 +4480,7 @@ wxDataViewCtrl::~wxDataViewCtrl() void wxDataViewCtrl::Init() { + m_treeview = NULL; m_internal = NULL; m_cols.DeleteContents( true ); @@ -5099,7 +5108,7 @@ void wxDataViewCtrl::GtkEnableSelectionEvents() wxVisualAttributes wxDataViewCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) { - return GetDefaultAttributesFromGTKWidget(gtk_tree_view_new); + return GetDefaultAttributesFromGTKWidget(gtk_tree_view_new()); } void wxDataViewCtrl::DoApplyWidgetStyle(GtkRcStyle *style)