Correctly initialize the alignment used by the text renderer used by
wxDataViewCustomRenderer in wxGTK implementation of wxDataViewCtrl.
Closes #12298.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68323
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
GtkCellRenderer* GetGtkHandle() { return m_renderer; }
void GtkInitHandlers();
GtkCellRenderer* GetGtkHandle() { return m_renderer; }
void GtkInitHandlers();
- void GtkUpdateAlignment();
+ void GtkUpdateAlignment() { GtkApplyAlignment(m_renderer); }
// should be overridden to return true if the renderer supports properties
// corresponding to wxDataViewItemAttr field, see wxGtkTreeCellDataFunc()
// should be overridden to return true if the renderer supports properties
// corresponding to wxDataViewItemAttr field, see wxGtkTreeCellDataFunc()
const wxDataViewItem& item,
unsigned col);
const wxDataViewItem& item,
unsigned col);
+ // Apply our effective alignment (i.e. m_alignment if specified or the
+ // associated column alignment by default) to the given renderer.
+ void GtkApplyAlignment(GtkCellRenderer *renderer);
GtkCellRenderer *m_renderer;
int m_alignment;
GtkCellRenderer *m_renderer;
int m_alignment;
bool Init(wxDataViewCellMode mode, int align);
private:
bool Init(wxDataViewCellMode mode, int align);
private:
+ // Called from GtkGetTextRenderer() to really create the renderer if
+ // necessary.
+ void GtkInitTextRenderer();
+
wxDC *m_dc;
GtkCellRendererText *m_text_renderer;
wxDC *m_dc;
GtkCellRendererText *m_text_renderer;
-void wxDataViewRenderer::GtkUpdateAlignment()
+void wxDataViewRenderer::GtkApplyAlignment(GtkCellRenderer *renderer)
{
int align = m_alignment;
{
int align = m_alignment;
GValue gvalue = { 0, };
g_value_init( &gvalue, G_TYPE_FLOAT );
g_value_set_float( &gvalue, xalign );
GValue gvalue = { 0, };
g_value_init( &gvalue, G_TYPE_FLOAT );
g_value_set_float( &gvalue, xalign );
- g_object_set_property( G_OBJECT(m_renderer), "xalign", &gvalue );
+ g_object_set_property( G_OBJECT(renderer), "xalign", &gvalue );
g_value_unset( &gvalue );
// vertical alignment:
g_value_unset( &gvalue );
// vertical alignment:
GValue gvalue2 = { 0, };
g_value_init( &gvalue2, G_TYPE_FLOAT );
g_value_set_float( &gvalue2, yalign );
GValue gvalue2 = { 0, };
g_value_init( &gvalue2, G_TYPE_FLOAT );
g_value_set_float( &gvalue2, yalign );
- g_object_set_property( G_OBJECT(m_renderer), "yalign", &gvalue2 );
+ g_object_set_property( G_OBJECT(renderer), "yalign", &gvalue2 );
g_value_unset( &gvalue2 );
}
g_value_unset( &gvalue2 );
}
+void wxDataViewCustomRenderer::GtkInitTextRenderer()
+{
+ m_text_renderer = GTK_CELL_RENDERER_TEXT(gtk_cell_renderer_text_new());
+ g_object_ref_sink(m_text_renderer);
+
+ GtkApplyAlignment(GTK_CELL_RENDERER(m_text_renderer));
+}
+
GtkCellRendererText *wxDataViewCustomRenderer::GtkGetTextRenderer() const
{
if ( !m_text_renderer )
{
// we create it on demand so need to do it even from a const function
GtkCellRendererText *wxDataViewCustomRenderer::GtkGetTextRenderer() const
{
if ( !m_text_renderer )
{
// we create it on demand so need to do it even from a const function
- const_cast<wxDataViewCustomRenderer *>(this)->
- m_text_renderer = GTK_CELL_RENDERER_TEXT(gtk_cell_renderer_text_new());
- g_object_ref_sink(m_text_renderer);
+ const_cast<wxDataViewCustomRenderer *>(this)->GtkInitTextRenderer();
}
return m_text_renderer;
}
return m_text_renderer;