X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/31fb32e137a12d99dbf989b095782c3c6a6322c2..75d0223f8c11778290c417c9dd1c2d4c0e76f5ec:/src/generic/datavgen.cpp diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index e3886ffcf4..f1bcc09c3c 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -29,12 +29,14 @@ #include "wx/dcclient.h" #include "wx/timer.h" #include "wx/settings.h" + #include "wx/msgdlg.h" #endif #include "wx/stockitem.h" #include "wx/calctrl.h" #include "wx/popupwin.h" #include "wx/renderer.h" +#include "wx/dcbuffer.h" #include "wx/icon.h" //----------------------------------------------------------------------------- @@ -493,6 +495,10 @@ wxSize wxDataViewProgressRenderer::GetSize() // wxDataViewDateRenderer // --------------------------------------------------------- +#define wxUSE_DATE_RENDERER_POPUP (wxUSE_CALENDARCTRL && wxUSE_POPUPWIN) + +#if wxUSE_DATE_RENDERER_POPUP + class wxDataViewDateRendererPopupTransient: public wxPopupTransientWindow { public: @@ -539,6 +545,8 @@ void wxDataViewDateRendererPopupTransient::OnCalendar( wxCalendarEvent &event ) DismissAndNotify(); } +#endif // wxUSE_DATE_RENDERER_POPUP + IMPLEMENT_ABSTRACT_CLASS(wxDataViewDateRenderer, wxDataViewCustomRenderer) wxDataViewDateRenderer::wxDataViewDateRenderer( const wxString &varianttype, @@ -578,13 +586,16 @@ bool wxDataViewDateRenderer::Activate( wxRect WXUNUSED(cell), wxDataViewListMode model->GetValue( variant, col, row ); wxDateTime value = variant.GetDateTime(); +#if wxUSE_DATE_RENDERER_POPUP wxDataViewDateRendererPopupTransient *popup = new wxDataViewDateRendererPopupTransient( GetOwner()->GetOwner()->GetParent(), &value, model, col, row ); wxPoint pos = wxGetMousePosition(); popup->Move( pos ); popup->Layout(); popup->Popup( popup->m_cal ); - +#else // !wxUSE_DATE_RENDERER_POPUP + wxMessageBox(value.Format()); +#endif // wxUSE_DATE_RENDERER_POPUP/!wxUSE_DATE_RENDERER_POPUP return true; } @@ -623,7 +634,7 @@ void wxDataViewColumn::SetSortable( bool WXUNUSED(sortable) ) } bool wxDataViewColumn::GetSortable() -{ +{ // TODO return false; } @@ -682,6 +693,7 @@ wxDataViewHeaderWindow::wxDataViewHeaderWindow( wxDataViewCtrl *parent, wxWindow m_resizeCursor = new wxCursor( wxCURSOR_SIZEWE ); wxVisualAttributes attr = wxPanel::GetClassDefaultAttributes(); + SetBackgroundStyle( wxBG_STYLE_CUSTOM ); SetOwnForegroundColour( attr.colFg ); SetOwnBackgroundColour( attr.colBg ); if (!m_hasFont) @@ -698,7 +710,10 @@ void wxDataViewHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) int w, h; GetClientSize( &w, &h ); - wxPaintDC dc( this ); + wxAutoBufferedPaintDC dc( this ); + + dc.SetBackground(GetBackgroundColour()); + dc.Clear(); int xpix; m_owner->GetScrollPixelsPerUnit( &xpix, NULL ); @@ -953,6 +968,7 @@ wxDataViewMainWindow::wxDataViewMainWindow( wxDataViewCtrl *parent, wxWindowID i m_hasFocus = false; + SetBackgroundStyle( wxBG_STYLE_CUSTOM ); SetBackgroundColour( *wxWHITE ); UpdateDisplay(); @@ -1094,7 +1110,10 @@ void wxDataViewMainWindow::ScrollWindow( int dx, int dy, const wxRect *rect ) void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) { - wxPaintDC dc( this ); + wxAutoBufferedPaintDC dc( this ); + + dc.SetBackground(GetBackgroundColour()); + dc.Clear(); GetOwner()->PrepareDC( dc ); @@ -1179,7 +1198,11 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) item_rect.width = size.x; item_rect.height= size.y; - cell->Render( item_rect, &dc, 0 ); + + int state = 0; + if (item == m_currentRow) + state |= wxDATAVIEW_CELL_SELECTED; + cell->Render( item_rect, &dc, state ); } cell_rect.x += cell_rect.width;