[pygobject/tree-model-sort-new-overrides] Gtk overrides: make sure TreeModelSort.new_with_model and TreeModel.sort_new_with_model exist
- From: Christoph Reiter <creiter src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pygobject/tree-model-sort-new-overrides] Gtk overrides: make sure TreeModelSort.new_with_model and TreeModel.sort_new_with_model exist
- Date: Sat, 7 Mar 2020 12:26:19 +0000 (UTC)
commit cd71a5f1abd4eadc159ce60fd14a2971e66990aa
Author: Christoph Reiter <reiter christoph gmail com>
Date: Sat Mar 7 13:22:54 2020 +0100
Gtk overrides: make sure TreeModelSort.new_with_model and TreeModel.sort_new_with_model exist
In https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1134 the method was changed to a constructor
which means the API is different between older and newer gtk.
Add fallbacks for both in our overrides so both ways work all the time.
gi/overrides/Gtk.py | 12 ++++++++++++
tests/test_overrides_gtk.py | 15 +++++++++++++++
2 files changed, 27 insertions(+)
---
diff --git a/gi/overrides/Gtk.py b/gi/overrides/Gtk.py
index 3ea02ae1..ff22f228 100644
--- a/gi/overrides/Gtk.py
+++ b/gi/overrides/Gtk.py
@@ -834,6 +834,13 @@ class TreeModel(Gtk.TreeModel):
raise IndexError("could not find tree path '%s'" % key)
return aiter
+ def sort_new_with_model(self):
+ super_object = super(TreeModel, self)
+ if hasattr(super_object, "sort_new_with_model"):
+ return super_object.sort_new_with_model()
+ else:
+ return TreeModelSort.new_with_model(self)
+
def _coerce_path(self, path):
if isinstance(path, Gtk.TreePath):
return path
@@ -973,6 +980,11 @@ class TreeModelSort(Gtk.TreeModelSort):
arg_names=('model',),
category=PyGTKDeprecationWarning)
+ if not hasattr(Gtk.TreeModelSort, "new_with_model"):
+ @classmethod
+ def new_with_model(self, child_model):
+ return TreeModel.sort_new_with_model(child_model)
+
TreeModelSort = override(TreeModelSort)
__all__.append('TreeModelSort')
diff --git a/tests/test_overrides_gtk.py b/tests/test_overrides_gtk.py
index 9c32e8ba..88b3f88e 100644
--- a/tests/test_overrides_gtk.py
+++ b/tests/test_overrides_gtk.py
@@ -1148,6 +1148,21 @@ class TestTreeModelRow(unittest.TestCase):
@ignore_gi_deprecation_warnings
@unittest.skipUnless(Gtk, 'Gtk not available')
class TestTreeModel(unittest.TestCase):
+
+ def test_tree_model_sort_new_with_model_old(self):
+ # https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1134
+ model = Gtk.TreeStore(int)
+ sort_model = model.sort_new_with_model()
+ assert isinstance(sort_model, Gtk.TreeModelSort)
+ assert sort_model.get_model() == model
+
+ def test_tree_model_sort_new_with_model_new(self):
+ # https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1134
+ model = Gtk.TreeStore(int)
+ sort_model = Gtk.TreeModelSort.new_with_model(child_model=model)
+ assert isinstance(sort_model, Gtk.TreeModelSort)
+ assert sort_model.get_model() == model
+
def test_tree_model_sort(self):
self.assertEqual(Gtk.TreeModelSort, gi.overrides.Gtk.TreeModelSort)
model = Gtk.TreeStore(int, bool)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]