move render params out of wxDataViewCustomRenderer
they only need to exist for the duration of the render() call git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70300 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -117,18 +117,12 @@ public:
|
|||||||
wxDC *dc,
|
wxDC *dc,
|
||||||
int state);
|
int state);
|
||||||
|
|
||||||
|
struct GTKRenderParams;
|
||||||
|
|
||||||
// store GTK render call parameters for possible later use
|
// store GTK render call parameters for possible later use
|
||||||
void GTKStashRenderParams(GdkWindow *window,
|
void GTKSetRenderParams(GTKRenderParams* renderParams)
|
||||||
GtkWidget *widget,
|
|
||||||
GdkRectangle *background_area,
|
|
||||||
GdkRectangle *expose_area,
|
|
||||||
int flags)
|
|
||||||
{
|
{
|
||||||
m_renderParams.window = window;
|
m_renderParams = renderParams;
|
||||||
m_renderParams.widget = widget;
|
|
||||||
m_renderParams.background_area = background_area;
|
|
||||||
m_renderParams.expose_area = expose_area;
|
|
||||||
m_renderParams.flags = flags;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// we may or not support attributes, as we don't know it, return true to
|
// we may or not support attributes, as we don't know it, return true to
|
||||||
@@ -157,14 +151,7 @@ private:
|
|||||||
|
|
||||||
// parameters of the original render() call stored so that we could pass
|
// parameters of the original render() call stored so that we could pass
|
||||||
// them forward to m_text_renderer if our RenderText() is called
|
// them forward to m_text_renderer if our RenderText() is called
|
||||||
struct GTKRenderParams
|
GTKRenderParams* m_renderParams;
|
||||||
{
|
|
||||||
GdkWindow *window;
|
|
||||||
GtkWidget *widget;
|
|
||||||
GdkRectangle *background_area;
|
|
||||||
GdkRectangle *expose_area;
|
|
||||||
int flags;
|
|
||||||
} m_renderParams;
|
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer)
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer)
|
||||||
};
|
};
|
||||||
|
@@ -1371,6 +1371,15 @@ gtk_wx_cell_renderer_get_size (GtkCellRenderer *renderer,
|
|||||||
*height = calc_height;
|
*height = calc_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct wxDataViewCustomRenderer::GTKRenderParams
|
||||||
|
{
|
||||||
|
GdkWindow* window;
|
||||||
|
GdkRectangle* expose_area;
|
||||||
|
GtkWidget* widget;
|
||||||
|
GdkRectangle* background_area;
|
||||||
|
int flags;
|
||||||
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_wx_cell_renderer_render (GtkCellRenderer *renderer,
|
gtk_wx_cell_renderer_render (GtkCellRenderer *renderer,
|
||||||
GdkWindow *window,
|
GdkWindow *window,
|
||||||
@@ -1384,8 +1393,13 @@ gtk_wx_cell_renderer_render (GtkCellRenderer *renderer,
|
|||||||
GtkWxCellRenderer *wxrenderer = (GtkWxCellRenderer *) renderer;
|
GtkWxCellRenderer *wxrenderer = (GtkWxCellRenderer *) renderer;
|
||||||
wxDataViewCustomRenderer *cell = wxrenderer->cell;
|
wxDataViewCustomRenderer *cell = wxrenderer->cell;
|
||||||
|
|
||||||
cell->GTKStashRenderParams(window, widget,
|
wxDataViewCustomRenderer::GTKRenderParams renderParams;
|
||||||
background_area, expose_area, flags);
|
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));
|
wxRect rect(wxRectFromGDKRect(cell_area));
|
||||||
int xpad, ypad;
|
int xpad, ypad;
|
||||||
@@ -1416,6 +1430,8 @@ gtk_wx_cell_renderer_render (GtkCellRenderer *renderer,
|
|||||||
if (flags & GTK_CELL_RENDERER_FOCUSED)
|
if (flags & GTK_CELL_RENDERER_FOCUSED)
|
||||||
state |= wxDATAVIEW_CELL_FOCUSED;
|
state |= wxDATAVIEW_CELL_FOCUSED;
|
||||||
cell->WXCallRender( rect, dc, state );
|
cell->WXCallRender( rect, dc, state );
|
||||||
|
|
||||||
|
cell->GTKSetRenderParams(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -2354,6 +2370,7 @@ wxDataViewCustomRenderer::wxDataViewCustomRenderer( const wxString &varianttype,
|
|||||||
{
|
{
|
||||||
m_dc = NULL;
|
m_dc = NULL;
|
||||||
m_text_renderer = NULL;
|
m_text_renderer = NULL;
|
||||||
|
m_renderParams = NULL;
|
||||||
|
|
||||||
if (no_init)
|
if (no_init)
|
||||||
m_renderer = NULL;
|
m_renderer = NULL;
|
||||||
@@ -2403,12 +2420,12 @@ void wxDataViewCustomRenderer::RenderText( const wxString &text,
|
|||||||
cell_area.width -= xoffset;
|
cell_area.width -= xoffset;
|
||||||
|
|
||||||
gtk_cell_renderer_render( GTK_CELL_RENDERER(textRenderer),
|
gtk_cell_renderer_render( GTK_CELL_RENDERER(textRenderer),
|
||||||
m_renderParams.window,
|
m_renderParams->window,
|
||||||
m_renderParams.widget,
|
m_renderParams->widget,
|
||||||
m_renderParams.background_area,
|
m_renderParams->background_area,
|
||||||
&cell_area,
|
&cell_area,
|
||||||
m_renderParams.expose_area,
|
m_renderParams->expose_area,
|
||||||
(GtkCellRendererState) m_renderParams.flags );
|
GtkCellRendererState(m_renderParams->flags));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxDataViewCustomRenderer::Init(wxDataViewCellMode mode, int align)
|
bool wxDataViewCustomRenderer::Init(wxDataViewCellMode mode, int align)
|
||||||
|
Reference in New Issue
Block a user