if (gs_lastLeftClickHeader)
{
wxDataViewCtrl *dv = tree_model->internal->GetOwner();
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_COLUMN_SORTED, dv->GetId() );
event.SetDataViewColumn( gs_lastLeftClickHeader );
event.SetModel( dv->GetModel() );
dv->HandleWindowEvent( event );
item(column->GetOwner()->GTKPathToItem(wxGtkTreePath(path)));
wxDataViewCtrl *dv = column->GetOwner();
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_START_EDITING, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_START_EDITING, dv->GetId() );
event.SetDataViewColumn( column );
event.SetModel( dv->GetModel() );
event.SetColumn( column->GetModelColumn() );
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;
{
wxDataViewColumn *column = wxrenderer->GetOwner();
wxDataViewCtrl *dv = column->GetOwner();
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EDITING_DONE, dv->GetId() );
event.SetDataViewColumn( column );
event.SetModel( dv->GetModel() );
wxDataViewItem item( s_user_data );
wxDataViewColumn *column = wxrenderer->GetOwner();
wxDataViewCtrl *dv = column->GetOwner();
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EDITING_STARTED, dv->GetId() );
event.SetDataViewColumn( column );
event.SetModel( dv->GetModel() );
wxDataViewItem item(dv->GTKPathToItem(wxGtkTreePath(path)));
{
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 );
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);
}
{
m_label = label;
m_value = 0;
+ m_renderer = (GtkCellRenderer*) gtk_cell_renderer_progress_new();
- {
- m_renderer = (GtkCellRenderer*) gtk_cell_renderer_progress_new();
-
- SetMode(mode);
- SetAlignment(align);
+ SetMode(mode);
+ SetAlignment(align);
#if !wxUSE_UNICODE
- // We can't initialize the renderer just yet because we don't have the
- // pointer to the column that uses this renderer yet and so attempt to
- // dereference GetOwner() to get the font that is used as a source of
- // encoding in multibyte-to-Unicode conversion in GTKSetLabel() in
- // non-Unicode builds would crash. So simply remember to do it later.
- if ( !m_label.empty() )
- m_needsToSetLabel = true;
- else
+ // We can't initialize the renderer just yet because we don't have the
+ // pointer to the column that uses this renderer yet and so attempt to
+ // dereference GetOwner() to get the font that is used as a source of
+ // encoding in multibyte-to-Unicode conversion in GTKSetLabel() in
+ // non-Unicode builds would crash. So simply remember to do it later.
+ if ( !m_label.empty() )
+ m_needsToSetLabel = true;
+ else
#endif // !wxUSE_UNICODE
- {
- GTKSetLabel();
- }
+ {
+ GTKSetLabel();
}
}
bool wxDataViewProgressRenderer::SetValue( const wxVariant &value )
{
- {
#if !wxUSE_UNICODE
- if ( m_needsToSetLabel )
- GTKSetLabel();
+ if ( m_needsToSetLabel )
+ GTKSetLabel();
#endif // !wxUSE_UNICODE
- gint tmp = (long) value;
- GValue gvalue = { 0, };
- g_value_init( &gvalue, G_TYPE_INT );
- g_value_set_int( &gvalue, tmp );
- g_object_set_property( G_OBJECT(m_renderer), "value", &gvalue );
- g_value_unset( &gvalue );
- }
+ gint tmp = (long) value;
+ GValue gvalue = { 0, };
+ g_value_init( &gvalue, G_TYPE_INT );
+ g_value_set_int( &gvalue, tmp );
+ g_object_set_property( G_OBJECT(m_renderer), "value", &gvalue );
+ g_value_unset( &gvalue );
return true;
}
wxDataViewCellMode mode, int alignment ) :
wxDataViewCustomRenderer( "string", mode, alignment, true )
{
- m_choices = choices;
-
+ m_choices = choices;
+ m_renderer = (GtkCellRenderer*) gtk_cell_renderer_combo_new();
+ GtkListStore *store = gtk_list_store_new( 1, G_TYPE_STRING );
+ for (size_t n = 0; n < m_choices.GetCount(); n++)
{
- m_renderer = (GtkCellRenderer*) gtk_cell_renderer_combo_new();
-
- GtkListStore *store = gtk_list_store_new( 1, G_TYPE_STRING );
- for (size_t n = 0; n < m_choices.GetCount(); n++)
- {
- gtk_list_store_insert_with_values(
- store, NULL, n, 0,
- static_cast<const char *>(m_choices[n].utf8_str()), -1 );
- }
+ gtk_list_store_insert_with_values(
+ store, NULL, n, 0,
+ static_cast<const char *>(m_choices[n].utf8_str()), -1 );
+ }
- g_object_set (m_renderer,
- "model", store,
- "text-column", 0,
- "has-entry", FALSE,
- NULL);
+ g_object_set (m_renderer,
+ "model", store,
+ "text-column", 0,
+ "has-entry", FALSE,
+ NULL);
- bool editable = (mode & wxDATAVIEW_CELL_EDITABLE) != 0;
- g_object_set (m_renderer, "editable", editable, NULL);
+ bool editable = (mode & wxDATAVIEW_CELL_EDITABLE) != 0;
+ g_object_set (m_renderer, "editable", editable, NULL);
- SetAlignment(alignment);
+ SetAlignment(alignment);
- g_signal_connect_after( m_renderer, "edited", G_CALLBACK(wxGtkTextRendererEditedCallback), this );
+ g_signal_connect_after( m_renderer, "edited", G_CALLBACK(wxGtkTextRendererEditedCallback), this );
- GtkInitHandlers();
- }
+ GtkInitHandlers();
}
bool wxDataViewChoiceRenderer::Render( wxRect rect, wxDC *dc, int state )
bool wxDataViewChoiceRenderer::SetValue( const wxVariant &value )
{
-
- {
- GValue gvalue = { 0, };
- g_value_init( &gvalue, G_TYPE_STRING );
- g_value_set_string(&gvalue,
- wxGTK_CONV_FONT(value.GetString(),
- GetOwner()->GetOwner()->GetFont()));
- g_object_set_property( G_OBJECT(m_renderer), "text", &gvalue );
- g_value_unset( &gvalue );
- }
+ GValue gvalue = { 0, };
+ g_value_init( &gvalue, G_TYPE_STRING );
+ g_value_set_string(&gvalue,
+ wxGTK_CONV_FONT(value.GetString(),
+ GetOwner()->GetOwner()->GetFont()));
+ g_object_set_property( G_OBJECT(m_renderer), "text", &gvalue );
+ g_value_unset( &gvalue );
return true;
}
bool wxDataViewChoiceRenderer::GetValue( wxVariant &value ) const
{
- {
- GValue gvalue = { 0, };
- g_value_init( &gvalue, G_TYPE_STRING );
- g_object_get_property( G_OBJECT(m_renderer), "text", &gvalue );
- wxString temp = wxGTK_CONV_BACK_FONT(g_value_get_string(&gvalue),
- GetOwner()->GetOwner()->GetFont());
- g_value_unset( &gvalue );
- value = temp;
-
- //wxPrintf( "temp %s\n", temp );
- // TODO: remove this code
- }
+ GValue gvalue = { 0, };
+ g_value_init( &gvalue, G_TYPE_STRING );
+ g_object_get_property( G_OBJECT(m_renderer), "text", &gvalue );
+ wxString temp = wxGTK_CONV_BACK_FONT(g_value_get_string(&gvalue),
+ GetOwner()->GetOwner()->GetFont());
+ g_value_unset( &gvalue );
+ value = temp;
return true;
}
gs_lastLeftClickHeader = column;
wxDataViewCtrl *dv = column->GetOwner();
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_COLUMN_HEADER_CLICK, dv->GetId() );
event.SetDataViewColumn( column );
event.SetModel( dv->GetModel() );
if (dv->HandleWindowEvent( event ))
if (gdk_event->button == 3)
{
wxDataViewCtrl *dv = column->GetOwner();
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, dv->GetId() );
event.SetDataViewColumn( column );
event.SetModel( dv->GetModel() );
if (dv->HandleWindowEvent( event ))
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();
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;
if ( !item )
return FALSE;
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_BEGIN_DRAG, m_owner->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_BEGIN_DRAG, m_owner->GetId() );
event.SetEventObject( m_owner );
event.SetItem( item );
event.SetModel( m_wx_model );
if ( !item )
return FALSE;
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_DROP, m_owner->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_DROP, m_owner->GetId() );
event.SetEventObject( m_owner );
event.SetItem( item );
event.SetModel( m_wx_model );
if ( !item )
return FALSE;
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner->GetId() );
event.SetEventObject( m_owner );
event.SetItem( item );
event.SetModel( m_wx_model );
bool wxDataViewCtrlInternal::ItemChanged( const wxDataViewItem &item )
{
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, m_owner->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_owner->GetId() );
event.SetEventObject( m_owner );
event.SetModel( m_owner->GetModel() );
event.SetItem( item );
bool wxDataViewCtrlInternal::ValueChanged( const wxDataViewItem &item, unsigned int view_column )
{
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, m_owner->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_owner->GetId() );
event.SetEventObject( m_owner );
event.SetModel( m_owner->GetModel() );
event.SetColumn( view_column );
if (!gtk_widget_get_realized(dv->m_widget))
return;
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_SELECTION_CHANGED, dv->GetId() );
event.SetItem( dv->GetSelection() );
event.SetModel( dv->GetModel() );
dv->HandleWindowEvent( event );
wxdataview_row_activated_callback( GtkTreeView* WXUNUSED(treeview), GtkTreePath *path,
GtkTreeViewColumn *WXUNUSED(column), wxDataViewCtrl *dv )
{
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_ACTIVATED, dv->GetId() );
wxDataViewItem item(dv->GTKPathToItem(path));
event.SetItem( item );
wxdataview_test_expand_row_callback( GtkTreeView* WXUNUSED(treeview), GtkTreeIter* iter,
GtkTreePath *WXUNUSED(path), wxDataViewCtrl *dv )
{
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EXPANDING, dv->GetId() );
wxDataViewItem item( (void*) iter->user_data );;
event.SetItem( item );
wxdataview_row_expanded_callback( GtkTreeView* WXUNUSED(treeview), GtkTreeIter* iter,
GtkTreePath *WXUNUSED(path), wxDataViewCtrl *dv )
{
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EXPANDED, dv->GetId() );
wxDataViewItem item( (void*) iter->user_data );;
event.SetItem( item );
wxdataview_test_collapse_row_callback( GtkTreeView* WXUNUSED(treeview), GtkTreeIter* iter,
GtkTreePath *WXUNUSED(path), wxDataViewCtrl *dv )
{
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_COLLAPSING, dv->GetId() );
wxDataViewItem item( (void*) iter->user_data );;
event.SetItem( item );
wxdataview_row_collapsed_callback( GtkTreeView* WXUNUSED(treeview), GtkTreeIter* iter,
GtkTreePath *WXUNUSED(path), wxDataViewCtrl *dv )
{
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_COLLAPSED, dv->GetId() );
wxDataViewItem item( (void*) iter->user_data );;
event.SetItem( item );
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;
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;
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,
&cell_y
);
- wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, dv->GetId() );
+ wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_CONTEXT_MENU, dv->GetId() );
if (path)
event.SetItem(dv->GTKPathToItem(path));
event.SetModel( dv->GetModel() );
// 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();
void wxDataViewCtrl::Init()
{
+ m_treeview = NULL;
m_internal = NULL;
m_cols.DeleteContents( true );
g_signal_connect (m_treeview, "size_allocate",
G_CALLBACK (gtk_dataviewctrl_size_callback), this);
- {
- bool fixed = (style & wxDV_VARIABLE_LINE_HEIGHT) == 0;
- gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), fixed );
- }
+ bool fixed = (style & wxDV_VARIABLE_LINE_HEIGHT) == 0;
+ gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), fixed );
if (style & wxDV_MULTIPLE)
{
if (!wxDataViewCtrlBase::AssociateModel( model ))
return false;
- {
- bool fixed = (((GetWindowStyle() & wxDV_VARIABLE_LINE_HEIGHT) == 0) || (model->IsVirtualListModel()));
- gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), fixed );
- }
+ bool fixed = (((GetWindowStyle() & wxDV_VARIABLE_LINE_HEIGHT) == 0) || (model->IsVirtualListModel()));
+ gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), fixed );
m_internal = new wxDataViewCtrlInternal( this, model );
m_cols.Append( col );
+ if (gtk_tree_view_column_get_sizing( GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) ) !=
+ GTK_TREE_VIEW_COLUMN_FIXED)
{
- if (gtk_tree_view_column_get_sizing( GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) ) !=
- GTK_TREE_VIEW_COLUMN_FIXED)
- gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), FALSE );
+ gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), FALSE );
}
gtk_tree_view_append_column( GTK_TREE_VIEW(m_treeview),
m_cols.Insert( col );
+ if (gtk_tree_view_column_get_sizing( GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) ) !=
+ GTK_TREE_VIEW_COLUMN_FIXED)
{
- if (gtk_tree_view_column_get_sizing( GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) ) !=
- GTK_TREE_VIEW_COLUMN_FIXED)
- gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), FALSE );
+ gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), FALSE );
}
gtk_tree_view_insert_column( GTK_TREE_VIEW(m_treeview),
m_cols.Insert( pos, col );
+ if (gtk_tree_view_column_get_sizing( GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) ) !=
+ GTK_TREE_VIEW_COLUMN_FIXED)
{
- if (gtk_tree_view_column_get_sizing( GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) ) !=
- GTK_TREE_VIEW_COLUMN_FIXED)
- gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), FALSE );
+ gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), FALSE );
}
gtk_tree_view_insert_column( GTK_TREE_VIEW(m_treeview),
wxVisualAttributes
wxDataViewCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
{
- return GetDefaultAttributesFromGTKWidget(gtk_tree_view_new);
+ return GetDefaultAttributesFromGTKWidget(gtk_tree_view_new());
}
void wxDataViewCtrl::DoApplyWidgetStyle(GtkRcStyle *style)