X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f52984b82e478bd4b42144fc5c491f3db0f49949..abc4685ebdf322c5695717eb334ee4f5b3bd352c:/src/gtk/dataview.cpp diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index 202d581a52..239f0280fe 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -32,6 +32,8 @@ #include "wx/listimpl.cpp" #include "wx/gtk/private.h" +#include "wx/gtk/dc.h" +#include "wx/gtk/dcclient.h" //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- @@ -642,7 +644,7 @@ void wxgtk_tree_model_set_sort_column_id (GtkTreeSortable *sortable, wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED, dv->GetId() ); event.SetDataViewColumn( gs_lastLeftClickHeader ); event.SetModel( dv->GetModel() ); - dv->GetEventHandler()->ProcessEvent( event ); + dv->HandleWindowEvent( event ); } gs_lastLeftClickHeader = NULL; @@ -939,20 +941,12 @@ gtk_wx_cell_renderer_render (GtkCellRenderer *renderer, { wxRect renderrect( rect.x, rect.y, rect.width, rect.height ); wxWindowDC* dc = (wxWindowDC*) cell->GetDC(); -#if wxUSE_NEW_DC - wxGTKWindowDCImpl *impldc = (wxGTKWindowDCImpl *) dc->GetImpl(); - if (impldc->m_window == NULL) + wxWindowDCImpl *impl = (wxWindowDCImpl *) dc->GetImpl(); + if (impl->m_gdkwindow == NULL) { - impldc->m_window = window; - impldc->SetUpDC(); + impl->m_gdkwindow = window; + impl->SetUpDC(); } -#else - if (dc->m_window == NULL) - { - dc->m_window = window; - dc->SetUpDC(); - } -#endif int state = 0; if (flags & GTK_CELL_RENDERER_SELECTED) @@ -1212,7 +1206,7 @@ wxgtk_cell_editable_editing_done( GtkCellEditable *editable, event.SetModel( dv->GetModel() ); wxDataViewItem item( s_user_data ); event.SetItem( item ); - dv->GetEventHandler()->ProcessEvent( event ); + dv->HandleWindowEvent( event ); } static void @@ -1230,7 +1224,7 @@ wxgtk_renderer_editing_started( GtkCellRenderer *cell, GtkCellEditable *editable gtk_tree_path_free( tree_path ); wxDataViewItem item( iter.user_data ); event.SetItem( item ); - dv->GetEventHandler()->ProcessEvent( event ); + dv->HandleWindowEvent( event ); if (GTK_IS_CELL_EDITABLE(editable)) { @@ -1657,41 +1651,37 @@ bool wxDataViewToggleRenderer::GetValue( wxVariant &value ) const // wxDataViewCustomRenderer // --------------------------------------------------------- -class wxDataViewCtrlDC: public wxWindowDC +class wxDataViewCtrlDCImpl: public wxWindowDCImpl { public: - wxDataViewCtrlDC( wxDataViewCtrl *window ) - { -#if wxUSE_NEW_DC - wxGTKWindowDCImpl *impl = (wxGTKWindowDCImpl*) GetImpl(); - + wxDataViewCtrlDCImpl( wxDC *owner, wxDataViewCtrl *window ) : + wxWindowDCImpl( owner ) + { GtkWidget *widget = window->m_treeview; // Set later - impl->m_window = NULL; - - impl->m_context = window->GtkGetPangoDefaultContext(); - impl->m_layout = pango_layout_new( impl->m_context ); - impl->m_fontdesc = pango_font_description_copy( widget->style->font_desc ); - - impl->m_cmap = gtk_widget_get_colormap( widget ? widget : window->m_widget ); - -#else - GtkWidget *widget = window->m_treeview; - // Set later - m_window = NULL; + m_gdkwindow = NULL; + + m_window = window; m_context = window->GtkGetPangoDefaultContext(); m_layout = pango_layout_new( m_context ); m_fontdesc = pango_font_description_copy( widget->style->font_desc ); m_cmap = gtk_widget_get_colormap( widget ? widget : window->m_widget ); -#endif - // Set m_window later + + // Set m_gdkwindow later // SetUpDC(); - // m_owner = window; } }; +class wxDataViewCtrlDC: public wxWindowDC +{ +public: + wxDataViewCtrlDC( wxDataViewCtrl *window ) + { m_pimpl = new wxDataViewCtrlDCImpl( this, window ); } +}; + + // --------------------------------------------------------- // wxDataViewCustomRenderer // --------------------------------------------------------- @@ -2068,7 +2058,7 @@ gtk_dataview_header_button_press_callback( GtkWidget *widget, wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, dv->GetId() ); event.SetDataViewColumn( column ); event.SetModel( dv->GetModel() ); - if (dv->GetEventHandler()->ProcessEvent( event )) + if (dv->HandleWindowEvent( event )) return FALSE; } @@ -2078,7 +2068,7 @@ gtk_dataview_header_button_press_callback( GtkWidget *widget, wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, dv->GetId() ); event.SetDataViewColumn( column ); event.SetModel( dv->GetModel() ); - if (dv->GetEventHandler()->ProcessEvent( event )) + if (dv->HandleWindowEvent( event )) return FALSE; } @@ -2654,7 +2644,7 @@ bool wxDataViewCtrlInternal::ItemChanged( const wxDataViewItem &item ) event.SetEventObject( m_owner ); event.SetModel( m_owner->GetModel() ); event.SetItem( item ); - m_owner->GetEventHandler()->ProcessEvent( event ); + m_owner->HandleWindowEvent( event ); return true; } @@ -2667,7 +2657,7 @@ bool wxDataViewCtrlInternal::ValueChanged( const wxDataViewItem &item, unsigned event.SetColumn( col ); event.SetDataViewColumn( GetOwner()->GetColumn(col) ); event.SetItem( item ); - m_owner->GetEventHandler()->ProcessEvent( event ); + m_owner->HandleWindowEvent( event ); return true; } @@ -3120,7 +3110,7 @@ wxdataview_selection_changed_callback( GtkTreeSelection* selection, wxDataViewCt wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, dv->GetId() ); event.SetItem( dv->GetSelection() ); event.SetModel( dv->GetModel() ); - dv->GetEventHandler()->ProcessEvent( event ); + dv->HandleWindowEvent( event ); } static void @@ -3134,7 +3124,7 @@ wxdataview_row_activated_callback( GtkTreeView* treeview, GtkTreePath *path, wxDataViewItem item( (void*) iter.user_data );; event.SetItem( item ); event.SetModel( dv->GetModel() ); - dv->GetEventHandler()->ProcessEvent( event ); + dv->HandleWindowEvent( event ); } static gboolean @@ -3146,7 +3136,7 @@ wxdataview_test_expand_row_callback( GtkTreeView* treeview, GtkTreeIter* iter, wxDataViewItem item( (void*) iter->user_data );; event.SetItem( item ); event.SetModel( dv->GetModel() ); - dv->GetEventHandler()->ProcessEvent( event ); + dv->HandleWindowEvent( event ); return !event.IsAllowed(); } @@ -3160,7 +3150,7 @@ wxdataview_row_expanded_callback( GtkTreeView* treeview, GtkTreeIter* iter, wxDataViewItem item( (void*) iter->user_data );; event.SetItem( item ); event.SetModel( dv->GetModel() ); - dv->GetEventHandler()->ProcessEvent( event ); + dv->HandleWindowEvent( event ); } static gboolean @@ -3172,7 +3162,7 @@ wxdataview_test_collapse_row_callback( GtkTreeView* treeview, GtkTreeIter* iter, wxDataViewItem item( (void*) iter->user_data );; event.SetItem( item ); event.SetModel( dv->GetModel() ); - dv->GetEventHandler()->ProcessEvent( event ); + dv->HandleWindowEvent( event ); return !event.IsAllowed(); } @@ -3186,7 +3176,7 @@ wxdataview_row_collapsed_callback( GtkTreeView* treeview, GtkTreeIter* iter, wxDataViewItem item( (void*) iter->user_data );; event.SetItem( item ); event.SetModel( dv->GetModel() ); - dv->GetEventHandler()->ProcessEvent( event ); + dv->HandleWindowEvent( event ); } //-----------------------------------------------------------------------------