From 33d8510d41321a99bafac55bc506e54d1388f584 Mon Sep 17 00:00:00 2001 From: Alexander Koshelev Date: Fri, 18 Feb 2022 10:57:31 +0300 Subject: [PATCH] Use wxBitmapBundle in wxHeaderColumn --- include/wx/dataview.h | 9 ++++--- include/wx/generic/dataview.h | 4 +-- include/wx/generic/private/grid.h | 1 + include/wx/gtk/dataview.h | 4 +-- include/wx/headercol.h | 24 ++++++++++++------ include/wx/osx/dataview.h | 4 +-- include/wx/qt/dataview.h | 4 +-- interface/wx/headercol.h | 25 +++++++++++++----- src/common/headerctrlcmn.cpp | 4 +-- src/generic/headerctrlg.cpp | 2 +- src/generic/renderg.cpp | 4 +-- src/gtk/dataview.cpp | 42 ++++++++++++++++++++++++++++--- src/gtk/image_gtk.cpp | 12 ++++++++- src/msw/headerctrl.cpp | 23 ++++++++++++++--- src/osx/cocoa/dataview.mm | 13 +++++++--- src/qt/dataview.cpp | 4 +-- 16 files changed, 135 insertions(+), 44 deletions(-) diff --git a/include/wx/dataview.h b/include/wx/dataview.h index 6016d8b8c4..e0efe2ed05 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -490,7 +490,7 @@ public: } // ctor for the bitmap columns - wxDataViewColumnBase(const wxBitmap& bitmap, + wxDataViewColumnBase(const wxBitmapBundle& bitmap, wxDataViewRenderer *renderer, unsigned int model_column) : m_bitmap(bitmap) @@ -511,8 +511,9 @@ public: // implement some of base class pure virtuals (the rest is port-dependent // and done differently in generic and native versions) - virtual void SetBitmap( const wxBitmap& bitmap ) wxOVERRIDE { m_bitmap = bitmap; } - virtual wxBitmap GetBitmap() const wxOVERRIDE { return m_bitmap; } + virtual void SetBitmap( const wxBitmapBundle& bitmap ) wxOVERRIDE { m_bitmap = bitmap; } + virtual wxBitmap GetBitmap() const wxOVERRIDE { return m_bitmap.GetBitmap(wxDefaultSize); } + virtual wxBitmapBundle GetBitmapBundle() const wxOVERRIDE { return m_bitmap; } // Special accessor for use by wxWidgets only returning the width that was // explicitly set, either by the application, using SetWidth(), or by the @@ -523,7 +524,7 @@ public: protected: wxDataViewRenderer *m_renderer; int m_model_column; - wxBitmap m_bitmap; + wxBitmapBundle m_bitmap; wxDataViewCtrl *m_owner; private: diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index 5ebdd1c56e..6602b4a0d1 100644 --- a/include/wx/generic/dataview.h +++ b/include/wx/generic/dataview.h @@ -46,7 +46,7 @@ public: Init(width, align, flags); } - wxDataViewColumn(const wxBitmap& bitmap, + wxDataViewColumn(const wxBitmapBundle& bitmap, wxDataViewRenderer *renderer, unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH, @@ -125,7 +125,7 @@ public: return m_sortAscending; } - virtual void SetBitmap( const wxBitmap& bitmap ) wxOVERRIDE + virtual void SetBitmap( const wxBitmapBundle& bitmap ) wxOVERRIDE { wxDataViewColumnBase::SetBitmap(bitmap); UpdateWidth(); diff --git a/include/wx/generic/private/grid.h b/include/wx/generic/private/grid.h index a6c1ccc8b8..463ccaed17 100644 --- a/include/wx/generic/private/grid.h +++ b/include/wx/generic/private/grid.h @@ -46,6 +46,7 @@ public: virtual wxString GetTitle() const wxOVERRIDE { return m_grid->GetColLabelValue(m_col); } virtual wxBitmap GetBitmap() const wxOVERRIDE { return wxNullBitmap; } + virtual wxBitmapBundle GetBitmapBundle() const wxOVERRIDE { return wxBitmapBundle(); } virtual int GetWidth() const wxOVERRIDE { return m_grid->GetColSize(m_col); } virtual int GetMinWidth() const wxOVERRIDE { return m_grid->GetColMinimalWidth(m_col); } virtual wxAlignment GetAlignment() const wxOVERRIDE diff --git a/include/wx/gtk/dataview.h b/include/wx/gtk/dataview.h index 0d76d0ad96..f3633ce052 100644 --- a/include/wx/gtk/dataview.h +++ b/include/wx/gtk/dataview.h @@ -26,7 +26,7 @@ public: unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH, wxAlignment align = wxALIGN_CENTER, int flags = wxDATAVIEW_COL_RESIZABLE ); - wxDataViewColumn( const wxBitmap &bitmap, wxDataViewRenderer *renderer, + wxDataViewColumn( const wxBitmapBundle &bitmap, wxDataViewRenderer *renderer, unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH, wxAlignment align = wxALIGN_CENTER, int flags = wxDATAVIEW_COL_RESIZABLE ); @@ -35,7 +35,7 @@ public: // setters: virtual void SetTitle( const wxString &title ) wxOVERRIDE; - virtual void SetBitmap( const wxBitmap &bitmap ) wxOVERRIDE; + virtual void SetBitmap( const wxBitmapBundle &bitmap ) wxOVERRIDE; virtual void SetOwner( wxDataViewCtrl *owner ) wxOVERRIDE; diff --git a/include/wx/headercol.h b/include/wx/headercol.h index 1b2fa3d401..9397b141b3 100644 --- a/include/wx/headercol.h +++ b/include/wx/headercol.h @@ -10,7 +10,7 @@ #ifndef _WX_HEADERCOL_H_ #define _WX_HEADERCOL_H_ -#include "wx/bitmap.h" +#include "wx/bmpbndl.h" #if wxUSE_HEADERCTRL @@ -89,8 +89,15 @@ public: // title is the string shown for this column virtual wxString GetTitle() const = 0; - // bitmap shown (instead of text) in the column header - virtual wxBitmap GetBitmap() const = 0; \ + // This function exists only for backwards compatibility, it's recommended to override + // GetBitmapBundle() in the new code and override this one to do nothing, as it will + // never be called if GetBitmapBundle() is overridden. + virtual wxBitmap GetBitmap() const = 0; + + // Override this function to return the bundle containing the bitmap to show in the + // column header. By default delegates to GetBitmap() but should be overridden if + // the bitmaps are used. + virtual wxBitmapBundle GetBitmapBundle() const { return GetBitmap(); } // width of the column in pixels, can be set to wxCOL_WIDTH_DEFAULT meaning // unspecified/default @@ -161,7 +168,7 @@ class WXDLLIMPEXP_CORE wxSettableHeaderColumn : public wxHeaderColumn { public: virtual void SetTitle(const wxString& title) = 0; - virtual void SetBitmap(const wxBitmap& bitmap) = 0; + virtual void SetBitmap(const wxBitmapBundle& bitmap) = 0; virtual void SetWidth(int width) = 0; virtual void SetMinWidth(int minWidth) = 0; virtual void SetAlignment(wxAlignment align) = 0; @@ -221,7 +228,7 @@ public: Init(); } - wxHeaderColumnSimple(const wxBitmap& bitmap, + wxHeaderColumnSimple(const wxBitmapBundle& bitmap, int width = wxCOL_WIDTH_DEFAULT, wxAlignment align = wxALIGN_CENTER, int flags = wxCOL_DEFAULT_FLAGS) @@ -237,8 +244,9 @@ public: virtual void SetTitle(const wxString& title) wxOVERRIDE { m_title = title; } virtual wxString GetTitle() const wxOVERRIDE { return m_title; } - virtual void SetBitmap(const wxBitmap& bitmap) wxOVERRIDE { m_bitmap = bitmap; } - wxBitmap GetBitmap() const wxOVERRIDE { return m_bitmap; } + virtual void SetBitmap(const wxBitmapBundle& bitmap) wxOVERRIDE { m_bitmap = bitmap; } + wxBitmap GetBitmap() const wxOVERRIDE { wxFAIL_MSG("unreachable"); return wxNullBitmap; } + wxBitmapBundle GetBitmapBundle() const wxOVERRIDE { return m_bitmap; } virtual void SetWidth(int width) wxOVERRIDE { m_width = width; } virtual int GetWidth() const wxOVERRIDE { return m_width; } @@ -273,7 +281,7 @@ private: } wxString m_title; - wxBitmap m_bitmap; + wxBitmapBundle m_bitmap; int m_width, m_minWidth; wxAlignment m_align; diff --git a/include/wx/osx/dataview.h b/include/wx/osx/dataview.h index 9e16c83c0e..8651903465 100644 --- a/include/wx/osx/dataview.h +++ b/include/wx/osx/dataview.h @@ -33,7 +33,7 @@ public: int width = wxDVC_DEFAULT_WIDTH, wxAlignment align = wxALIGN_CENTER, int flags = wxDATAVIEW_COL_RESIZABLE); - wxDataViewColumn(const wxBitmap& bitmap, + wxDataViewColumn(const wxBitmapBundle& bitmap, wxDataViewRenderer* renderer, unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH, @@ -53,7 +53,7 @@ public: virtual bool IsHidden() const wxOVERRIDE; virtual void SetAlignment (wxAlignment align) wxOVERRIDE; - virtual void SetBitmap (wxBitmap const& bitmap) wxOVERRIDE; + virtual void SetBitmap (wxBitmapBundle const& bitmap) wxOVERRIDE; virtual void SetFlags (int flags) wxOVERRIDE { m_flags = flags; /*SetIndividualFlags(flags); */ } virtual void SetHidden (bool hidden) wxOVERRIDE; virtual void SetMaxWidth (int maxWidth); diff --git a/include/wx/qt/dataview.h b/include/wx/qt/dataview.h index 6ae9022db8..3846d15c41 100644 --- a/include/wx/qt/dataview.h +++ b/include/wx/qt/dataview.h @@ -15,7 +15,7 @@ public: unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH, wxAlignment align = wxALIGN_CENTER, int flags = wxDATAVIEW_COL_RESIZABLE ); - wxDataViewColumn( const wxBitmap &bitmap, wxDataViewRenderer *renderer, + wxDataViewColumn( const wxBitmapBundle &bitmap, wxDataViewRenderer *renderer, unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH, wxAlignment align = wxALIGN_CENTER, int flags = wxDATAVIEW_COL_RESIZABLE ); @@ -24,7 +24,7 @@ public: // setters: virtual void SetTitle( const wxString &title ); - virtual void SetBitmap( const wxBitmap &bitmap ); + virtual void SetBitmap( const wxBitmapBundle &bitmap ); virtual void SetOwner( wxDataViewCtrl *owner ); diff --git a/interface/wx/headercol.h b/interface/wx/headercol.h index f825e5aa1c..a3312e22f5 100644 --- a/interface/wx/headercol.h +++ b/interface/wx/headercol.h @@ -78,12 +78,24 @@ public: virtual wxString GetTitle() const = 0; /** - Returns the bitmap in the header of the column, if any. - - If the column has no associated bitmap, wxNullBitmap should be returned. + This function exists only for backwards compatibility, it's recommended to override + GetBitmapBundle() in the new code and override this one to do nothing, as it will + never be called if GetBitmapBundle() is overridden. */ virtual wxBitmap GetBitmap() const = 0; + /** + Returns the bitmap in the header of the column, if any. + If the column has no associated bitmap, empty wxBitmapBundle should be returned. + + Override this function to return the bundle containing the bitmap to show in the + column header. By default delegates to GetBitmap() but should be overridden if + the bitmaps are used. + + @since 3.1.6 + */ + virtual wxBitmapBundle GetBitmapBundle() const; + /** Returns the current width of the column. @@ -205,7 +217,7 @@ public: Notice that the bitmaps displayed in different columns of the same control must all be of the same size. */ - virtual void SetBitmap(const wxBitmap& bitmap) = 0; + virtual void SetBitmap(const wxBitmapBundle& bitmap) = 0; /** Set the column width. @@ -409,7 +421,7 @@ public: wxAlignment align = wxALIGN_NOT, int flags = wxCOL_DEFAULT_FLAGS); - wxHeaderColumnSimple(const wxBitmap &bitmap, + wxHeaderColumnSimple(const wxBitmapBundle &bitmap, int width = wxCOL_WIDTH_DEFAULT, wxAlignment align = wxALIGN_CENTER, int flags = wxCOL_DEFAULT_FLAGS); @@ -421,8 +433,9 @@ public: virtual void SetTitle(const wxString& title); virtual wxString GetTitle() const; - virtual void SetBitmap(const wxBitmap& bitmap); + virtual void SetBitmap(const wxBitmapBundle& bitmap); virtual wxBitmap GetBitmap() const; + virtual wxBitmapBundle GetBitmapBundle() const; virtual void SetWidth(int width); virtual int GetWidth() const; virtual void SetMinWidth(int minWidth); diff --git a/src/common/headerctrlcmn.cpp b/src/common/headerctrlcmn.cpp index 75b27d96f4..a7787c46ab 100644 --- a/src/common/headerctrlcmn.cpp +++ b/src/common/headerctrlcmn.cpp @@ -113,9 +113,9 @@ int wxHeaderCtrlBase::GetColumnTitleWidth(const wxHeaderColumn& col) w += wxRendererNative::Get().GetHeaderButtonMargin(this); // if a bitmap is used, add space for it and 2px border: - wxBitmap bmp = col.GetBitmap(); + wxBitmapBundle bmp = col.GetBitmapBundle(); if ( bmp.IsOk() ) - w += bmp.GetWidth() + 2; + w += bmp.GetPreferredLogicalSizeFor(this).GetWidth() + 2; return w; } diff --git a/src/generic/headerctrlg.cpp b/src/generic/headerctrlg.cpp index 3a4868a9e7..79a31a0eb2 100644 --- a/src/generic/headerctrlg.cpp +++ b/src/generic/headerctrlg.cpp @@ -553,7 +553,7 @@ void wxHeaderCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) wxHeaderButtonParams params; params.m_labelText = col.GetTitle(); - params.m_labelBitmap = col.GetBitmap(); + params.m_labelBitmap = col.GetBitmapBundle().GetBitmapFor(this); params.m_labelAlignment = col.GetAlignment(); #ifdef __WXGTK__ diff --git a/src/generic/renderg.cpp b/src/generic/renderg.cpp index 3b440be455..77539dd1a3 100644 --- a/src/generic/renderg.cpp +++ b/src/generic/renderg.cpp @@ -405,8 +405,8 @@ wxRendererGeneric::DrawHeaderButtonContents(wxWindow *win, // draw the bitmap if there is one if ( params && params->m_labelBitmap.IsOk() ) { - int w = params->m_labelBitmap.GetWidth(); - int h = params->m_labelBitmap.GetHeight(); + int w = params->m_labelBitmap.GetLogicalWidth(); + int h = params->m_labelBitmap.GetLogicalHeight(); const int margin = 1; // an extra pixel on either side of the bitmap diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index a9123e33e3..357839ce54 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -3228,6 +3228,42 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *WXUNUSED(column), } // extern "C" +namespace +{ + +// Define a custom bitmap provider here as we don't have a valid window to use +// with the standard provider when we need to initialize the image yet, so we +// have to use the column -- which will have the associated window by the time +// we actually need to use it. +struct BitmapProvider : wxGtkImage::BitmapProvider +{ + explicit BitmapProvider(wxDataViewColumn* column) : m_column(column) { } + + virtual double GetScale() const wxOVERRIDE; + virtual wxBitmap Get() const wxOVERRIDE; + + wxDataViewColumn* const m_column; +}; + +double BitmapProvider::GetScale() const +{ + wxDataViewCtrl* const ctrl = m_column->GetOwner(); + wxCHECK_MSG( ctrl, 1.0, "no valid window, using default scale factor" ); + + return ctrl->GetDPIScaleFactor(); +} + +wxBitmap BitmapProvider::Get() const +{ +#ifdef __WXGTK3__ + if (IsScaled()) + return GetAtScale(m_column->GetBitmapBundle()); +#endif + return wxBitmap(); +} + +} // namespace + #include WX_DEFINE_LIST(wxDataViewColumnList) @@ -3241,7 +3277,7 @@ wxDataViewColumn::wxDataViewColumn( const wxString &title, wxDataViewRenderer *c SetTitle( title ); } -wxDataViewColumn::wxDataViewColumn( const wxBitmap &bitmap, wxDataViewRenderer *cell, +wxDataViewColumn::wxDataViewColumn( const wxBitmapBundle &bitmap, wxDataViewRenderer *cell, unsigned int model_column, int width, wxAlignment align, int flags ) : wxDataViewColumnBase( bitmap, cell, model_column ) @@ -3267,7 +3303,7 @@ void wxDataViewColumn::Init(wxAlignment align, int flags, int width) GtkWidget* box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 1); gtk_widget_show( box ); // gtk_container_set_border_width((GtkContainer*)box, 2); - m_image = wxGtkImage::New(); + m_image = wxGtkImage::New(new BitmapProvider(this)); gtk_box_pack_start(GTK_BOX(box), m_image, FALSE, FALSE, 1); m_label = gtk_label_new(""); gtk_box_pack_end( GTK_BOX(box), GTK_WIDGET(m_label), FALSE, FALSE, 1 ); @@ -3332,7 +3368,7 @@ wxString wxDataViewColumn::GetTitle() const ); } -void wxDataViewColumn::SetBitmap( const wxBitmap &bitmap ) +void wxDataViewColumn::SetBitmap( const wxBitmapBundle &bitmap ) { wxDataViewColumnBase::SetBitmap( bitmap ); diff --git a/src/gtk/image_gtk.cpp b/src/gtk/image_gtk.cpp index 0d65367215..4636e5a96a 100644 --- a/src/gtk/image_gtk.cpp +++ b/src/gtk/image_gtk.cpp @@ -12,6 +12,8 @@ #include "wx/gtk/private/wrapgtk.h" #include "wx/gtk/private/image.h" +GdkWindow* wxGetTopLevelGDK(); + namespace { @@ -40,7 +42,15 @@ struct BitmapProviderDefault: wxGtkImage::BitmapProvider double BitmapProviderDefault::GetScale() const { - return m_win ? m_win->GetDPIScaleFactor() : 1.0; + if ( m_win ) + { + return m_win->GetDPIScaleFactor(); + } +#if GTK_CHECK_VERSION(3,10,0) + return gdk_window_get_scale_factor(wxGetTopLevelGDK()); +#else + return 1.0; +#endif } wxBitmap BitmapProviderDefault::Get() const diff --git a/src/msw/headerctrl.cpp b/src/msw/headerctrl.cpp index fb2cf6c1b8..f60e52fe30 100644 --- a/src/msw/headerctrl.cpp +++ b/src/msw/headerctrl.cpp @@ -123,6 +123,9 @@ protected: int sizeFlags = wxSIZE_AUTO) wxOVERRIDE; virtual void MSWUpdateFontOnDPIChange(const wxSize& newDPI) wxOVERRIDE; + // This function can be used as event handle for wxEVT_DPI_CHANGED event. + void WXHandleDPIChanged(wxDPIChangedEvent& event); + private: // override MSW-specific methods needed for new control virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const wxOVERRIDE; @@ -222,6 +225,8 @@ void wxMSWHeaderCtrl::Init() m_colBeingDragged = -1; m_isColBeingResized = false; m_customDraw = NULL; + + Bind(wxEVT_DPI_CHANGED, &wxMSWHeaderCtrl::WXHandleDPIChanged, this); } bool wxMSWHeaderCtrl::Create(wxWindow *parent, @@ -332,6 +337,18 @@ void wxMSWHeaderCtrl::MSWUpdateFontOnDPIChange(const wxSize& newDPI) } } +void wxMSWHeaderCtrl::WXHandleDPIChanged(wxDPIChangedEvent& event) +{ + delete m_imageList; + m_imageList = NULL; + for (unsigned int i = 0; i < m_numColumns; ++i) + { + UpdateHeader(i); + } + + event.Skip(); +} + // ---------------------------------------------------------------------------- // wxMSWHeaderCtrl columns managements // ---------------------------------------------------------------------------- @@ -443,7 +460,7 @@ void wxMSWHeaderCtrl::DoInsertItem(const wxHeaderColumn& col, unsigned int idx) hdi.pszText = buf.data(); hdi.cchTextMax = wxStrlen(buf); - const wxBitmap bmp = col.GetBitmap(); + wxBitmap bmp = col.GetBitmapBundle().GetBitmapFor(this); if ( bmp.IsOk() ) { hdi.mask |= HDI_IMAGE; @@ -451,8 +468,8 @@ void wxMSWHeaderCtrl::DoInsertItem(const wxHeaderColumn& col, unsigned int idx) if ( HasFlag(wxHD_BITMAP_ON_RIGHT) ) hdi.fmt |= HDF_BITMAP_ON_RIGHT; - const int bmpWidth = bmp.GetWidth(), - bmpHeight = bmp.GetHeight(); + const int bmpWidth = bmp.GetLogicalWidth(), + bmpHeight = bmp.GetLogicalHeight(); if ( !m_imageList ) { diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm index c6513c3069..79396db546 100644 --- a/src/osx/cocoa/dataview.mm +++ b/src/osx/cocoa/dataview.mm @@ -3525,7 +3525,7 @@ wxDataViewColumn::wxDataViewColumn(const wxString& title, SetResizeable((flags & wxDATAVIEW_COL_RESIZABLE) != 0); } -wxDataViewColumn::wxDataViewColumn(const wxBitmap& bitmap, +wxDataViewColumn::wxDataViewColumn(const wxBitmapBundle& bitmap, wxDataViewRenderer* renderer, unsigned int model_column, int width, @@ -3565,13 +3565,18 @@ void wxDataViewColumn::SetAlignment(wxAlignment align) m_renderer->OSXUpdateAlignment(); } -void wxDataViewColumn::SetBitmap(const wxBitmap& bitmap) +void wxDataViewColumn::SetBitmap(const wxBitmapBundle& bitmap) { // bitmaps and titles cannot exist at the same time - if the bitmap is set // the title is removed: m_title.clear(); wxDataViewColumnBase::SetBitmap(bitmap); - [[m_NativeDataPtr->GetNativeColumnPtr() headerCell] setImage:bitmap.GetNSImage()]; + wxBitmap bmp = m_owner ? bitmap.GetBitmapFor(m_owner) : bitmap.GetBitmap( + bitmap.GetPreferredBitmapSizeAtScale( + wxOSXGetMainScreenContentScaleFactor() + ) + ); + [[m_NativeDataPtr->GetNativeColumnPtr() headerCell] setImage:bmp.GetNSImage()]; } void wxDataViewColumn::SetMaxWidth(int maxWidth) @@ -3659,7 +3664,7 @@ void wxDataViewColumn::SetTitle(const wxString& title) { // bitmaps and titles cannot exist at the same time - if the title is set // the bitmap is removed: - wxDataViewColumnBase::SetBitmap(wxBitmap()); + wxDataViewColumnBase::SetBitmap(wxBitmapBundle()); m_title = title; [[m_NativeDataPtr->GetNativeColumnPtr() headerCell] setStringValue:wxCFStringRef(title).AsNSString()]; } diff --git a/src/qt/dataview.cpp b/src/qt/dataview.cpp index 6d249d398e..ca8661decb 100644 --- a/src/qt/dataview.cpp +++ b/src/qt/dataview.cpp @@ -22,7 +22,7 @@ wxDataViewColumn::wxDataViewColumn( const wxString &title, wxDataViewRenderer *r { } -wxDataViewColumn::wxDataViewColumn( const wxBitmap &bitmap, wxDataViewRenderer *renderer, +wxDataViewColumn::wxDataViewColumn( const wxBitmapBundle &bitmap, wxDataViewRenderer *renderer, unsigned int model_column, int width, wxAlignment align, int flags ) @@ -34,7 +34,7 @@ void wxDataViewColumn::SetTitle( const wxString &title ) { } -void wxDataViewColumn::SetBitmap( const wxBitmap &bitmap ) +void wxDataViewColumn::SetBitmap( const wxBitmapBundle &bitmap ) { }