summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/pmw/files/1.3.2-python2.5.patch')
-rw-r--r--dev-python/pmw/files/1.3.2-python2.5.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/dev-python/pmw/files/1.3.2-python2.5.patch b/dev-python/pmw/files/1.3.2-python2.5.patch
new file mode 100644
index 000000000000..ff8cce07ddaa
--- /dev/null
+++ b/dev-python/pmw/files/1.3.2-python2.5.patch
@@ -0,0 +1,54 @@
+Source: http://github.com/nanotube/pmw_fixes/commit/5e6dcbdaef2bb6c40037b922dd0efa081f1575ab (Daniel Folkinshteyn)
+
+fix bug in OptionMenu.setitems, introduced with the fixing of this python
+bug:
+http://bugs.python.org/issue1342811
+
+versions of python 2.5.4 and newer now automatically delete commands when
+items are deleted
+however, that causes error if the command is deleted manually beforehand.
+old versions, on the contrary, require manual command deletion to free up
+the objects.
+
+so we put in a python version check to see if we need to manually delete
+commands.
+
+fixes the Pmw bug referred to here:
+http://sourceforge.net/forum/forum.php?thread_id=3283195&forum_id=33675
+and here:
+http://sourceforge.net/tracker/?func=detail&aid=2795731&group_id=10743&ati
+d=110743
+
+--- a/src/Pmw/Pmw_1_3/lib/PmwOptionMenu.py
++++ b/src/Pmw/Pmw_1_3/lib/PmwOptionMenu.py
+@@ -1,6 +1,7 @@
+ import types
+ import Tkinter
+ import Pmw
++import sys
+
+ class OptionMenu(Pmw.MegaWidget):
+
+@@ -59,11 +60,17 @@ class OptionMenu(Pmw.MegaWidget):
+
+ def setitems(self, items, index = None):
+
+- # Clean up old items and callback commands.
+- for oldIndex in range(len(self._itemList)):
+- tclCommandName = str(self._menu.entrycget(oldIndex, 'command'))
+- if tclCommandName != '':
+- self._menu.deletecommand(tclCommandName)
++ # python version check
++ # python versions >= 2.5.4 automatically clean commands
++ # and manually cleaning them causes errors when deleting items
++
++ if sys.version_info[0] * 100 + sys.version_info[1] * 10 + \
++ sys.version_info[2] < 254:
++ # Clean up old items and callback commands.
++ for oldIndex in range(len(self._itemList)):
++ tclCommandName = str(self._menu.entrycget(oldIndex, 'command'))
++ if tclCommandName != '':
++ self._menu.deletecommand(tclCommandName)
+ self._menu.delete(0, 'end')
+ self._itemList = list(items)
+