X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6eec70b984525aac09528c32411f19113620e284..61f09f569358d7b2752733c4a24d1bd10daefae2:/include/wx/gtk/dvrenderers.h?ds=sidebyside diff --git a/include/wx/gtk/dvrenderers.h b/include/wx/gtk/dvrenderers.h index 667de363b9..3997f8013f 100644 --- a/include/wx/gtk/dvrenderers.h +++ b/include/wx/gtk/dvrenderers.h @@ -3,7 +3,7 @@ // Purpose: All GTK wxDataViewCtrl renderer classes // Author: Robert Roebling, Vadim Zeitlin // Created: 2009-11-07 (extracted from wx/gtk/dataview.h) -// RCS-ID: $Id: wxhead.h,v 1.11 2009-06-29 10:23:04 zeitlin Exp $ +// RCS-ID: $Id$ // Copyright: (c) 2006 Robert Roebling // (c) 2009 Vadim Zeitlin // Licence: wxWindows licence @@ -12,6 +12,8 @@ #ifndef _WX_GTK_DVRENDERERS_H_ #define _WX_GTK_DVRENDERERS_H_ +typedef struct _GdkRectangle GdkRectangle; + // --------------------------------------------------------- // wxDataViewTextRenderer // --------------------------------------------------------- @@ -41,6 +43,11 @@ public: virtual void SetAlignment( int align ); + virtual bool GtkSupportsAttrs() const { return true; } + virtual bool GtkSetAttr(const wxDataViewItemAttr& attr); + + virtual GtkCellRendererText *GtkGetTextRenderer() const; + protected: // implementation of Set/GetValue() bool SetTextValue(const wxString& str); @@ -100,34 +107,61 @@ public: virtual ~wxDataViewCustomRenderer(); - virtual bool Render( wxRect cell, wxDC *dc, int state ) = 0; + // Create DC on request + virtual wxDC *GetDC(); - void RenderText( const wxString &text, int xoffset, wxRect cell, wxDC *dc, int state ); + // override the base class function to use GTK text cell renderer + virtual void RenderText(const wxString& text, + int xoffset, + wxRect cell, + wxDC *dc, + int state); + + // store GTK render call parameters for possible later use + void GTKStashRenderParams(GdkWindow *window, + GtkWidget *widget, + GdkRectangle *background_area, + GdkRectangle *expose_area, + int flags) + { + m_renderParams.window = window; + m_renderParams.widget = widget; + m_renderParams.background_area = background_area; + m_renderParams.expose_area = expose_area; + m_renderParams.flags = flags; + } - virtual wxSize GetSize() const = 0; + // we may or not support attributes, as we don't know it, return true to + // make it possible to use them + virtual bool GtkSupportsAttrs() const { return true; } - // Create DC on request - virtual wxDC *GetDC(); + virtual bool GtkSetAttr(const wxDataViewItemAttr& attr) + { + SetAttr(attr); + return !attr.IsDefault(); + } + virtual GtkCellRendererText *GtkGetTextRenderer() const; protected: - bool Init(wxDataViewCellMode mode, int align); private: wxDC *m_dc; -public: - // Internal, temporary for RenderText. - GtkCellRenderer *m_text_renderer; - GdkWindow *window; - GtkWidget *widget; - void *background_area; - void *cell_area; - void *expose_area; - int flags; + GtkCellRendererText *m_text_renderer; + + // parameters of the original render() call stored so that we could pass + // them forward to m_text_renderer if our RenderText() is called + struct GTKRenderParams + { + GdkWindow *window; + GtkWidget *widget; + GdkRectangle *background_area; + GdkRectangle *expose_area; + int flags; + } m_renderParams; -protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer) };