wxDC *dc,
int state);
+ struct GTKRenderParams;
+
// store GTK render call parameters for possible later use
- void GTKStashRenderParams(GdkWindow *window,
- GtkWidget *widget,
- GdkRectangle *background_area,
- GdkRectangle *expose_area,
- int flags)
+ void GTKSetRenderParams(GTKRenderParams* renderParams)
{
- m_renderParams.window = window;
- m_renderParams.widget = widget;
- m_renderParams.background_area = background_area;
- m_renderParams.expose_area = expose_area;
- m_renderParams.flags = flags;
+ m_renderParams = renderParams;
}
// we may or not support attributes, as we don't know it, return true to
// 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;
+ GTKRenderParams* m_renderParams;
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer)
};
*height = calc_height;
}
+struct wxDataViewCustomRenderer::GTKRenderParams
+{
+ GdkWindow* window;
+ GdkRectangle* expose_area;
+ GtkWidget* widget;
+ GdkRectangle* background_area;
+ int flags;
+};
+
static void
gtk_wx_cell_renderer_render (GtkCellRenderer *renderer,
GdkWindow *window,
GtkWxCellRenderer *wxrenderer = (GtkWxCellRenderer *) renderer;
wxDataViewCustomRenderer *cell = wxrenderer->cell;
- cell->GTKStashRenderParams(window, widget,
- background_area, expose_area, flags);
+ wxDataViewCustomRenderer::GTKRenderParams renderParams;
+ renderParams.window = window;
+ renderParams.expose_area = expose_area;
+ renderParams.widget = widget;
+ renderParams.background_area = background_area;
+ renderParams.flags = flags;
+ cell->GTKSetRenderParams(&renderParams);
wxRect rect(wxRectFromGDKRect(cell_area));
int xpad, ypad;
if (flags & GTK_CELL_RENDERER_FOCUSED)
state |= wxDATAVIEW_CELL_FOCUSED;
cell->WXCallRender( rect, dc, state );
+
+ cell->GTKSetRenderParams(NULL);
}
static gboolean
{
m_dc = NULL;
m_text_renderer = NULL;
+ m_renderParams = NULL;
if (no_init)
m_renderer = NULL;
cell_area.width -= xoffset;
gtk_cell_renderer_render( GTK_CELL_RENDERER(textRenderer),
- m_renderParams.window,
- m_renderParams.widget,
- m_renderParams.background_area,
+ m_renderParams->window,
+ m_renderParams->widget,
+ m_renderParams->background_area,
&cell_area,
- m_renderParams.expose_area,
- (GtkCellRendererState) m_renderParams.flags );
+ m_renderParams->expose_area,
+ GtkCellRendererState(m_renderParams->flags));
}
bool wxDataViewCustomRenderer::Init(wxDataViewCellMode mode, int align)