8000 JRE - Text would incorrectly strip away units when querying the position · matplotlib/matplotlib@22e7a33 · GitHub
[go: up one dir, main page]

Skip to content

Commit 22e7a33

Browse files
author
James Evans
committed
JRE - Text would incorrectly strip away units when querying the position
after it was set. This fixes Text such that it will return the original data when asked and will only strip away the units when it is needed.
1 parent 7900ee4 commit 22e7a33

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

lib/matplotlib/text.py

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ def contains(self, mouseevent):
280280

281281
def _get_xy_display(self):
282282
'get the (possibly unit converted) transformed x, y in display coords'
283-
x, y = self.get_position()
283+
x, y = self._get_unitless_position()
284284
return self.get_transform().transform_point((x, y))
285285

286286
def _get_multialignment(self):
@@ -536,8 +536,8 @@ def update_bbox_position_size(self, renderer):
536536

537537
trans = self.get_transform()
538538

539-
# don't use self.get_position here, which refers to text position
540-
# in Text, and dash position in TextWithDash:
539+
# don't use self._get_unitless_position here, which refers to text
540+
# position in Text, and dash position in TextWithDash:
541541
posx = float(self.convert_xunits(self._x))
542542
posy = float(self.convert_yunits(self._y))
543543

@@ -877,12 +877,20 @@ def get_horizontalalignment(self):
877877
"""
878878
return self._horizontalalignment
879879

880-
def get_position(self):
881-
"Return the position of the text as a tuple (*x*, *y*)"
880+
def _get_unitless_position(self):
881+
"Return the unitless position of the text as a tuple (*x*, *y*)"
882+
# This will get the position with all unit information stripped away.
883+
# This is here for convienience since it is done in several locations.
882884
x = float(self.convert_xunits(self._x))
883885
y = float(self.convert_yunits(self._y))
884886
return x, y
885887

888+
def get_position(self):
889+
"Return the position of the text as a tuple (*x*, *y*)"
890+
# This should return the same data (possible unitized) as was
891+
# specified with 'set_x' and 'set_y'.
892+
return self._x, self._y
893+
886894
def get_prop_tup(self):
887895
"""
888896
Return a hashable tuple of properties.
@@ -891,7 +899,7 @@ def get_prop_tup(self):
891899
want to cache derived information about text (e.g., layouts) and
892900
need to know if the text has changed.
893901
"""
894-
x, y = self.get_position()
902+
x, y = self._get_unitless_position()
895903
return (x, y, self.get_text(), self._color,
896904
self._verticalalignment, self._horizontalalignment,
897905
hash(self._fontproperties),
@@ -950,7 +958,7 @@ def get_window_extent(self, renderer=None, dpi=None):
950958
raise RuntimeError('Cannot get window extent w/o renderer')
951959

952960
bbox, info, descent = self._get_layout(self._renderer)
953-
x, y = self.get_position()
961+
x, y = self._get_unitless_position()
954962
x, y = self.get_transform().transform_point((x, y))
955963
bbox = bbox.translated(x, y)
956964
if dpi is not None:
@@ -1365,12 +1373,20 @@ def __init__(self,
13651373

13661374
#self.set_bbox(dict(pad=0))
13671375

1368-
def get_position(self):
1369-
"Return the position of the text as a tuple (*x*, *y*)"
1376+
def _get_unitless_position(self):
1377+
"Return the unitless position of the text as a tuple (*x*, *y*)"
1378+
# This will get the position with all unit information stripped away.
1379+
# This is here for convienience since it is done in several locations.
13701380
x = float(self.convert_xunits(self._dashx))
13711381
y = float(self.convert_yunits(self._dashy))
13721382
return x, y
13731383

1384+
def get_position(self):
1385+
"Return the position of the text as a tuple (*x*, *y*)"
1386+
# This should return the same data (possibly unitized) as was
1387+
# specified with set_x and set_y
1388+
return self._dashx, self._dashy
1389+
13741390
def get_prop_tup(self):
13751391
"""
13761392
Return a hashable tuple of properties.
@@ -1402,7 +1418,7 @@ def update_coords(self, renderer):
14021418
with respect to the actual canvas's coordinates we need to map
14031419
back and forth.
14041420
"""
1405-
dashx, dashy = self.get_position()
1421+
dashx, dashy = self._get_unitless_position()
14061422
dashlength = self.get_dashlength()
14071423
# Shortcircuit this process if we don't have a dash
14081424
if dashlength == 0.0:

0 commit comments

Comments
 (0)
0