diff --git a/_service b/_service
deleted file mode 100644
index 8b8771f..0000000
--- a/_service
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- git
- git://github.com/wxWidgets/wxWidgets
- 6cc1d63d68f746cf9e48b75edd119a4cb4309f25
- v3.1.4
- 3.1.5~g@TAG_OFFSET@
- v(.*)
-
-
- *.tar
- xz
-
-
-
diff --git a/wxWidgets-3.1.6-fix-wxDVC-not-showing-empty-cells.patch b/wxWidgets-3.1.6-fix-wxDVC-not-showing-empty-cells.patch
new file mode 100644
index 0000000..ecbaa7b
--- /dev/null
+++ b/wxWidgets-3.1.6-fix-wxDVC-not-showing-empty-cells.patch
@@ -0,0 +1,137 @@
+From 1c9c48c34606ef4c26cf92dfb2b5abd4ac65f8d1 Mon Sep 17 00:00:00 2001
+From: Vadim Zeitlin
+Date: Sun, 8 May 2022 00:27:45 +0200
+Subject: [PATCH 1/3] Don't show value-less wxDataViewVirtualListModel cells in
+ wxGTK
+
+For some reason, calls to wxGtkTreeSetVisibleProp() were skipped when
+using virtual list model in wxGTK implementation, resulting in showing
+the value of the previous (i.e. upper) cell for the rows of this model
+for which no value was available.
+
+Simply remove IsVirtualListModel() checks and always set the cell
+visibility to fix this.
+
+This commit is best viewed ignoring whitespace-only changes.
+---
+ src/gtk/dataview.cpp | 20 +++++---------------
+ 1 file changed, 5 insertions(+), 15 deletions(-)
+
+diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp
+index 22f7f25cc359..85e64d69adec 100644
+--- a/src/gtk/dataview.cpp
++++ b/src/gtk/dataview.cpp
+@@ -3233,25 +3233,15 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *WXUNUSED(column),
+
+ wxDataViewModel *wx_model = tree_model->internal->GetDataViewModel();
+
+- if (!wx_model->IsVirtualListModel())
++ gboolean visible = wx_model->HasValue(item, column);
++ if ( visible )
+ {
+- gboolean visible = wx_model->HasValue(item, column);
+- wxGtkTreeSetVisibleProp(renderer, visible);
++ cell->GtkSetCurrentItem(item);
+
+- if ( !visible )
+- return;
++ visible = cell->PrepareForItem(wx_model, item, column);
+ }
+
+- cell->GtkSetCurrentItem(item);
+-
+- if (!cell->PrepareForItem(wx_model, item, column))
+- {
+- // We don't have any value in this cell, after all, so hide it.
+- if (!wx_model->IsVirtualListModel())
+- {
+- wxGtkTreeSetVisibleProp(renderer, FALSE);
+- }
+- }
++ wxGtkTreeSetVisibleProp(renderer, visible);
+ }
+
+ } // extern "C"
+
+From 610eeb476ba4e0e87c0cd9d9fff17fa38e098a6a Mon Sep 17 00:00:00 2001
+From: Vadim Zeitlin
+Date: Sun, 8 May 2022 00:32:06 +0200
+Subject: [PATCH 2/3] Inline wxGtkTreeSetVisibleProp() function
+
+No real changes, just get rid of a trivial helper function which is only
+used once since the changes of the previous commit and copy its code
+directly into the caller.
+---
+ src/gtk/dataview.cpp | 12 +++---------
+ 1 file changed, 3 insertions(+), 9 deletions(-)
+
+diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp
+index 85e64d69adec..5b3b391c98b7 100644
+--- a/src/gtk/dataview.cpp
++++ b/src/gtk/dataview.cpp
+@@ -3199,14 +3199,6 @@ gtk_dataview_header_button_press_callback( GtkWidget *WXUNUSED(widget),
+ return FALSE;
+ }
+
+-// Helper for wxGtkTreeCellDataFunc() below.
+-static void wxGtkTreeSetVisibleProp(GtkCellRenderer *renderer, gboolean visible)
+-{
+- wxGtkValue gvalue( G_TYPE_BOOLEAN );
+- g_value_set_boolean( gvalue, visible );
+- g_object_set_property( G_OBJECT(renderer), "visible", gvalue );
+-}
+-
+ extern "C"
+ {
+
+@@ -3241,7 +3233,9 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *WXUNUSED(column),
+ visible = cell->PrepareForItem(wx_model, item, column);
+ }
+
+- wxGtkTreeSetVisibleProp(renderer, visible);
++ wxGtkValue gvalue( G_TYPE_BOOLEAN );
++ g_value_set_boolean( gvalue, visible );
++ g_object_set_property( G_OBJECT(renderer), "visible", gvalue );
+ }
+
+ } // extern "C"
+
+From 8aefedcb456c32fac72a691001eb47f23447f559 Mon Sep 17 00:00:00 2001
+From: Vadim Zeitlin
+Date: Sun, 8 May 2022 18:24:01 +0200
+Subject: [PATCH 3/3] Remove duplicated HasValue() call from wxGTK
+ wxDataViewCtrl code
+
+HasValue() is already called by PrepareForItem(), so there is no need to
+call it explicitly from wxGTK code, just rely on PrepareForItem()
+returning false if there is no value to show -- we can skip the call to
+GtkSetCurrentItem() in this case, this function is cheap, and we lose
+more by calling HasValue() twice in the common case than we save on not
+calling it.
+
+No real changes.
+---
+ src/gtk/dataview.cpp | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp
+index 5b3b391c98b7..115299de1365 100644
+--- a/src/gtk/dataview.cpp
++++ b/src/gtk/dataview.cpp
+@@ -3225,13 +3225,10 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *WXUNUSED(column),
+
+ wxDataViewModel *wx_model = tree_model->internal->GetDataViewModel();
+
+- gboolean visible = wx_model->HasValue(item, column);
+- if ( visible )
+- {
+- cell->GtkSetCurrentItem(item);
++ cell->GtkSetCurrentItem(item);
+
+- visible = cell->PrepareForItem(wx_model, item, column);
+- }
++ // Cells without values shouldn't be rendered at all.
++ const bool visible = cell->PrepareForItem(wx_model, item, column);
+
+ wxGtkValue gvalue( G_TYPE_BOOLEAN );
+ g_value_set_boolean( gvalue, visible );
diff --git a/wxWidgets-3_2-rpmlintrc b/wxWidgets-3_2-rpmlintrc
index 9f3fbd0..6aee80f 100644
--- a/wxWidgets-3_2-rpmlintrc
+++ b/wxWidgets-3_2-rpmlintrc
@@ -1,10 +1,4 @@
# Project name just starts with lowercase.
addFilter("summary-not-capitalized")
-# We know what we are doing. %{wxlibdir}/wx can be owned by more package instances at once.
-addFilter("shlib-policy-nonversioned-dir")
# There is no such package.
addFilter("no-dependency-on")
-# Package splits to many library packages, we just need to obsolete old one.
-addFilter("obsolete-not-provided")
-# Yes, there are macros in comments.
-addFilter("macro-in-comment")
diff --git a/wxWidgets-3_2.changes b/wxWidgets-3_2.changes
index 9ad3c0e..690f119 100644
--- a/wxWidgets-3_2.changes
+++ b/wxWidgets-3_2.changes
@@ -1,3 +1,13 @@
+-------------------------------------------------------------------
+Sun May 8 09:56:40 UTC 2022 - Antoine Belvire
+
+- Add wxWidgets-3.1.6-fix-wxDVC-not-showing-empty-cells.patch
+ (gh#wxWidgets/wxWidgets#22359).
+- Remove _service file: Unused.
+- Fix some rpmlint warnings:
+ * Remove unused rpmlintrc filters.
+ * Remove non-breaking spaces.
+
-------------------------------------------------------------------
Wed Apr 13 16:45:53 UTC 2022 - Ferdinand Thiessen
diff --git a/wxWidgets-3_2.spec b/wxWidgets-3_2.spec
index b165be2..bd350dc 100644
--- a/wxWidgets-3_2.spec
+++ b/wxWidgets-3_2.spec
@@ -82,6 +82,8 @@ Source5: wxWidgets-3_2-rpmlintrc
# identify and backport wxPython fixes to wxWidgets.
Source6: wxpython-mkdiff.sh
Patch1: soversion.diff
+# PATCH-FIX-UPSTREAM wxWidgets-3.1.6-fix-wxDVC-not-showing-empty-cells.patch -- https://github.com/wxWidgets/wxWidgets/issues/22359
+Patch2: wxWidgets-3.1.6-fix-wxDVC-not-showing-empty-cells.patch
BuildRequires: autoconf
BuildRequires: cppunit-devel
BuildRequires: gcc-c++
@@ -210,7 +212,7 @@ Group: System/Libraries
%description -n libwx_%{toolkit}u_html-%variant%psonum
The wxHTML library provides classes for parsing and displaying HTML.
It is not intended to be a high-end HTML browser. wxHTML can be used
-as a generic rich text viewer – for example, to display an About Box
+as a generic rich text viewer – for example, to display an About Box
or the result of a database search.
%{?extra_description}
@@ -271,7 +273,7 @@ Group: System/Libraries
%description -n libwx_%{toolkit}u_webview-%variant%psonum
Library for a wxWidgets control that can be used to render web
-(HTML / CSS / JavaScript) documents.
+(HTML / CSS / JavaScript) documents.
%package -n libwx_%{toolkit}u_xrc-%variant%psonum
Summary: wxWidgets's XML-based resource system