From 1a07a730f05b69977e567fab04b415f1e6a81440 Mon Sep 17 00:00:00 2001
From: Robert Roebling <robert@roebling.de>
Date: Mon, 3 Dec 2007 09:44:29 +0000
Subject: [PATCH] Add support for wxDC_ROW_LINES for GTK+ and OS X

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50450 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/dataviewctrl.tex | 3 +++
 include/wx/dataview.h          | 7 +++++--
 src/common/datavcmn.cpp        | 5 +++++
 src/gtk/dataview.cpp           | 9 ++++-----
 4 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/docs/latex/wx/dataviewctrl.tex b/docs/latex/wx/dataviewctrl.tex
index 00d66e772f..e960313f5f 100644
--- a/docs/latex/wx/dataviewctrl.tex
+++ b/docs/latex/wx/dataviewctrl.tex
@@ -37,6 +37,9 @@ from \helpref{wxVariant::GetType}{wxvariantgettype}.
 \begin{twocollist}\itemsep=0pt
 \twocolitem{\windowstyle{wxDV\_SINGLE}}{Single selection mode. This is the default.}
 \twocolitem{\windowstyle{wxDV\_MULTIPLE}}{Multiple selection mode.}
+\twocolitem{\windowstyle{wxDV\_ROW\_LINES}}{Use alternating colours for rows if supported by platform and theme.}
+\twocolitem{\windowstyle{wxDV\_HORIZ\_RULES}}{Display fine rules between row if supported.}
+\twocolitem{\windowstyle{wxDV\_VERT\_RULES}}{Display fine rules between columns is supported.}
 \end{twocollist}
 
 
diff --git a/include/wx/dataview.h b/include/wx/dataview.h
index 4a5e4f8893..90d7a5e481 100644
--- a/include/wx/dataview.h
+++ b/include/wx/dataview.h
@@ -499,6 +499,8 @@ protected:
 #define wxDV_HORIZ_RULES             0x0004     // light horizontal rules between rows
 #define wxDV_VERT_RULES              0x0008     // light vertical rules between columns
 
+#define wxDV_ROW_LINES               0x0010     // alternating colour in rows
+
 class WXDLLIMPEXP_ADV wxDataViewCtrlBase: public wxControl
 {
 public:
@@ -939,13 +941,13 @@ public:
     wxDataViewTreeCtrl();
     wxDataViewTreeCtrl( wxWindow *parent, wxWindowID id,
            const wxPoint& pos = wxDefaultPosition,
-           const wxSize& size = wxDefaultSize, long style = wxDV_NO_HEADER,
+           const wxSize& size = wxDefaultSize, long style = wxDV_NO_HEADER | wxDV_ROW_LINES,
            const wxValidator& validator = wxDefaultValidator );
     ~wxDataViewTreeCtrl();
 
     bool Create( wxWindow *parent, wxWindowID id,
            const wxPoint& pos = wxDefaultPosition,
-           const wxSize& size = wxDefaultSize, long style = wxDV_NO_HEADER,
+           const wxSize& size = wxDefaultSize, long style = wxDV_NO_HEADER | wxDV_ROW_LINES,
            const wxValidator& validator = wxDefaultValidator );
 
     wxDataViewTreeStore *GetStore()
@@ -1004,6 +1006,7 @@ public:
 
     void OnExpanded( wxDataViewEvent &event );
     void OnCollapsed( wxDataViewEvent &event );
+    void OnSize( wxSizeEvent &event );
 
 private:
     wxImageList  *m_imageList;
diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp
index 4d1c9dd89c..6e2935f50b 100644
--- a/src/common/datavcmn.cpp
+++ b/src/common/datavcmn.cpp
@@ -1693,6 +1693,11 @@ void wxDataViewTreeCtrl::OnCollapsed( wxDataViewEvent &event )
     GetStore()->ItemChanged( event.GetItem() );
 }
 
+void wxDataViewTreeCtrl::OnSize( wxSizeEvent &WXUNUSED(event) )
+{
+#if !defined(__WXGTK20__)
+#endif
+}
 
 #endif // wxUSE_DATAVIEWCTRL
 
diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp
index a394bef7f0..929fa97c4d 100644
--- a/src/gtk/dataview.cpp
+++ b/src/gtk/dataview.cpp
@@ -3344,13 +3344,12 @@ bool wxDataViewCtrl::Create(wxWindow *parent, wxWindowID id,
         else if (style & wxDV_HORIZ_RULES)
             grid = GTK_TREE_VIEW_GRID_LINES_HORIZONTAL;
 
-        gtk_tree_view_set_grid_lines( GTK_TREE_VIEW(m_treeview), grid );
+        if (grid != GTK_TREE_VIEW_GRID_LINES_NONE)
+            gtk_tree_view_set_grid_lines( GTK_TREE_VIEW(m_treeview), grid );
     }
-    else
 #endif
-    {
-        gtk_tree_view_set_rules_hint( GTK_TREE_VIEW(m_treeview), (style & wxDV_HORIZ_RULES) != 0 );
-    }
+
+    gtk_tree_view_set_rules_hint( GTK_TREE_VIEW(m_treeview), (style & wxDV_ROW_LINES) != 0 );
 
     gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (m_widget),
         GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
-- 
2.50.0

