]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/dataview.cpp
Fix discrepancy between different ways of measuring text extents under Mac.
[wxWidgets.git] / src / gtk / dataview.cpp
index d951f74ea9e052b458f91831364d844f01d06c3b..a35bbbd9f8d071dcc3c70d68e27e826f152073f8 100644 (file)
@@ -1691,6 +1691,35 @@ int wxDataViewRenderer::GetAlignment() const
     return m_alignment;
 }
 
+void wxDataViewRenderer::EnableEllipsize(wxEllipsizeMode mode)
+{
+    if ( gtk_check_version(2, 6, 0) != NULL )
+        return;
+
+    // we use the same values in wxEllipsizeMode as PangoEllipsizeMode so we
+    // can just cast between them
+    GValue gvalue = { 0, };
+    g_value_init( &gvalue, PANGO_TYPE_ELLIPSIZE_MODE );
+    g_value_set_enum( &gvalue, static_cast<PangoEllipsizeMode>(mode) );
+    g_object_set_property( G_OBJECT(m_renderer), "ellipsize", &gvalue );
+    g_value_unset( &gvalue );
+}
+
+wxEllipsizeMode wxDataViewRenderer::GetEllipsizeMode() const
+{
+    if ( gtk_check_version(2, 6, 0) != NULL )
+        return wxELLIPSIZE_NONE;
+
+    GValue gvalue = { 0, };
+    g_value_init( &gvalue, PANGO_TYPE_ELLIPSIZE_MODE );
+    g_object_get_property( G_OBJECT(m_renderer), "ellipsize", &gvalue );
+    wxEllipsizeMode
+        mode = static_cast<wxEllipsizeMode>(g_value_get_enum( &gvalue ));
+    g_value_unset( &gvalue );
+
+    return mode;
+}
+
 void
 wxDataViewRenderer::GtkOnTextEdited(const gchar *itempath, const wxString& str)
 {
@@ -1713,8 +1742,7 @@ wxDataViewRenderer::GtkOnCellChanged(const wxVariant& value,
                                      unsigned col)
 {
     wxDataViewModel *model = GetOwner()->GetOwner()->GetModel();
-    model->SetValue( value, item, col );
-    model->ValueChanged( item, col );
+    model->ChangeValue( value, item, col );
 }
 
 // ---------------------------------------------------------
@@ -1904,8 +1932,7 @@ static void wxGtkToggleRendererToggledCallback( GtkCellRendererToggle *renderer,
 
     unsigned int model_col = cell->GetOwner()->GetModelColumn();
 
-    model->SetValue( value, item, model_col );
-    model->ValueChanged( item, model_col );
+    model->ChangeValue( value, item, model_col );
 }
 
 IMPLEMENT_CLASS(wxDataViewToggleRenderer, wxDataViewRenderer)
@@ -2342,10 +2369,7 @@ END_EVENT_TABLE()
 
 void wxDataViewDateRendererPopupTransient::OnCalendar( wxCalendarEvent &event )
 {
-    wxDateTime date = event.GetDate();
-    wxVariant value = date;
-    m_model->SetValue( value, m_item, m_col );
-    m_model->ValueChanged( m_item, m_col );
+    m_model->ChangeValue( event.GetDate(), m_item, m_col );
     DismissAndNotify();
 }
 
@@ -4087,8 +4111,6 @@ bool wxDataViewCtrl::Create(wxWindow *parent, wxWindowID id,
            const wxPoint& pos, const wxSize& size,
            long style, const wxValidator& validator )
 {
-    Init();
-
     if (!PreCreation( parent, pos, size ) ||
         !CreateBase( parent, id, pos, size, style, validator ))
     {
@@ -4192,13 +4214,10 @@ void wxDataViewCtrl::OnInternalIdle()
 
 bool wxDataViewCtrl::AssociateModel( wxDataViewModel *model )
 {
-    if (GetModel())
+    if ( m_internal )
     {
         delete m_internal;
         m_internal = NULL;
-
-        delete m_notifier;
-        m_notifier = NULL;
     }
 
     if (!wxDataViewCtrlBase::AssociateModel( model ))