Commit 4babb911 authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #6157: Fixed tkinter.Text.debug(). tkinter.Text.bbox() now raises

TypeError instead of TclError on wrong number of arguments.  Original patch
by Guilherme Polo.
parents 0de5362a 0b9e815d
...@@ -2911,11 +2911,11 @@ class Text(Widget, XView, YView): ...@@ -2911,11 +2911,11 @@ class Text(Widget, XView, YView):
""" """
Widget.__init__(self, master, 'text', cnf, kw) Widget.__init__(self, master, 'text', cnf, kw)
def bbox(self, *args): def bbox(self, index):
"""Return a tuple of (x,y,width,height) which gives the bounding """Return a tuple of (x,y,width,height) which gives the bounding
box of the visible part of the character at the index in ARGS.""" box of the visible part of the character at the given index."""
return self._getints( return self._getints(
self.tk.call((self._w, 'bbox') + args)) or None self.tk.call(self._w, 'bbox', index)) or None
def tk_textSelectTo(self, index): def tk_textSelectTo(self, index):
self.tk.call('tk_textSelectTo', self._w, index) self.tk.call('tk_textSelectTo', self._w, index)
def tk_textBackspace(self): def tk_textBackspace(self):
...@@ -2951,8 +2951,9 @@ class Text(Widget, XView, YView): ...@@ -2951,8 +2951,9 @@ class Text(Widget, XView, YView):
def debug(self, boolean=None): def debug(self, boolean=None):
"""Turn on the internal consistency checks of the B-Tree inside the text """Turn on the internal consistency checks of the B-Tree inside the text
widget according to BOOLEAN.""" widget according to BOOLEAN."""
return self.tk.getboolean(self.tk.call( if boolean is None:
self._w, 'debug', boolean)) return self.tk.call(self._w, 'debug')
self.tk.call(self._w, 'debug', boolean)
def delete(self, index1, index2=None): def delete(self, index1, index2=None):
"""Delete the characters between INDEX1 and INDEX2 (not included).""" """Delete the characters between INDEX1 and INDEX2 (not included)."""
self.tk.call(self._w, 'delete', index1, index2) self.tk.call(self._w, 'delete', index1, index2)
......
...@@ -14,6 +14,17 @@ class TextTest(unittest.TestCase): ...@@ -14,6 +14,17 @@ class TextTest(unittest.TestCase):
def tearDown(self): def tearDown(self):
self.text.destroy() self.text.destroy()
def test_debug(self):
text = self.text
olddebug = text.debug()
try:
text.debug(0)
self.assertEqual(text.debug(), 0)
text.debug(1)
self.assertEqual(text.debug(), 1)
finally:
text.debug(olddebug)
self.assertEqual(text.debug(), olddebug)
def test_search(self): def test_search(self):
text = self.text text = self.text
......
...@@ -610,6 +610,19 @@ class TextTest(AbstractWidgetTest, unittest.TestCase): ...@@ -610,6 +610,19 @@ class TextTest(AbstractWidgetTest, unittest.TestCase):
else: else:
self.checkEnumParam(widget, 'wrap', 'char', 'none', 'word') self.checkEnumParam(widget, 'wrap', 'char', 'none', 'word')
def test_bbox(self):
widget = self.create()
bbox = widget.bbox('1.1')
self.assertEqual(len(bbox), 4)
for item in bbox:
self.assertIsInstance(item, int)
self.assertIsNone(widget.bbox('end'))
self.assertRaises(tkinter.TclError, widget.bbox, 'noindex')
self.assertRaises(tkinter.TclError, widget.bbox, None)
self.assertRaises(TypeError, widget.bbox)
self.assertRaises(TypeError, widget.bbox, '1.1', 'end')
@add_standard_options(PixelSizeTests, StandardOptionsTests) @add_standard_options(PixelSizeTests, StandardOptionsTests)
class CanvasTest(AbstractWidgetTest, unittest.TestCase): class CanvasTest(AbstractWidgetTest, unittest.TestCase):
......
...@@ -31,6 +31,10 @@ Core and Builtins ...@@ -31,6 +31,10 @@ Core and Builtins
Library Library
------- -------
- Issue #6157: Fixed tkinter.Text.debug(). tkinter.Text.bbox() now raises
TypeError instead of TclError on wrong number of arguments. Original patch
by Guilherme Polo.
- Issue #6160: The bbox() method of tkinter.Spinbox now returns a tuple of - Issue #6160: The bbox() method of tkinter.Spinbox now returns a tuple of
integers instead of a string. Based on patch by Guilherme Polo. integers instead of a string. Based on patch by Guilherme Polo.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment