summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gi/overrides/Gtk.py12
-rw-r--r--tests/test_overrides_gtk.py15
2 files changed, 27 insertions, 0 deletions
diff --git a/gi/overrides/Gtk.py b/gi/overrides/Gtk.py
index b4213642..d1ed83da 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 4cb2c748..4283d765 100644
--- a/tests/test_overrides_gtk.py
+++ b/tests/test_overrides_gtk.py
@@ -1169,6 +1169,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)