[pygobject/pygobject-3-26] overrides: Fix Gtk.Adjustment.__init__ overrides not setting "value" sometimes. Fixes #151
- From: Christoph Reiter <creiter src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pygobject/pygobject-3-26] overrides: Fix Gtk.Adjustment.__init__ overrides not setting "value" sometimes. Fixes #151
- Date: Tue, 6 Feb 2018 08:21:18 +0000 (UTC)
commit b50d8ca73fd6038301c5fc3d16fb31158ff19009
Author: Christoph Reiter <reiter christoph gmail com>
Date: Mon Jan 15 20:44:27 2018 +0100
overrides: Fix Gtk.Adjustment.__init__ overrides not setting "value" sometimes. Fixes #151
Gtk.Adjustment allows passing positional arguments to __init__ which get
translated to a dict for passing to GObject.Object.__init__. In case of the
first argument "value", if "value" is passed before the upper and
lower bound to Object.__init__ it will be set to 0 instead.
In Python 2 this happened to work (at least on my machine) because
"value" got placed after the bounds (in terms of iteration order)
in the final dict value passed to Object.__init__.
To work around this, set "value" again after __init__().
A similar work around already exists when "value" is passed as a kwarg.
gi/overrides/Gtk.py | 2 ++
tests/test_overrides_gtk.py | 6 ++++++
2 files changed, 8 insertions(+)
---
diff --git a/gi/overrides/Gtk.py b/gi/overrides/Gtk.py
index 08d26127..7135172f 100644
--- a/gi/overrides/Gtk.py
+++ b/gi/overrides/Gtk.py
@@ -1465,6 +1465,8 @@ class Adjustment(Gtk.Adjustment):
# was set, we set it again here.
if 'value' in kwargs:
self.set_value(kwargs['value'])
+ elif len(args) >= 1:
+ self.set_value(args[0])
Adjustment = override(Adjustment)
diff --git a/tests/test_overrides_gtk.py b/tests/test_overrides_gtk.py
index 61b7dc0a..cfd22fe8 100644
--- a/tests/test_overrides_gtk.py
+++ b/tests/test_overrides_gtk.py
@@ -463,6 +463,12 @@ class TestGtk(unittest.TestCase):
adjustment = Gtk.Adjustment()
self.adjustment_check(adjustment)
+ adjustment = Gtk.Adjustment(1, -1, 3, 0, 0, 0)
+ self.adjustment_check(adjustment, value=1, lower=-1, upper=3)
+
+ adjustment = Gtk.Adjustment(1, -1, 3, 0, 0, 0, value=2)
+ self.adjustment_check(adjustment, value=2, lower=-1, upper=3)
+
@unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
def test_table(self):
table = Gtk.Table()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]