Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3791654

Browse files
committed
Update figure DPI when dpi_ratio changes
Similarly to resizeEvent, we tell _set_dpi to not change the canvas size since we are doing it ourselves.
1 parent f8cb5c9 commit 3791654

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

lib/matplotlib/backends/backend_qt5agg.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ def paintEvent(self, e):
6868
# As described in __init__ above, we need to be careful in cases with
6969
# mixed resolution displays if dpi_ratio is changing between painting
7070
# events.
71-
if self._dpi_ratio_prev is None:
72-
self._dpi_ratio_prev = self._dpi_ratio
73-
elif self._dpi_ratio != self._dpi_ratio_prev:
71+
if self._dpi_ratio_prev or self._dpi_ratio != self._dpi_ratio_prev:
72+
# We need to update the figure DPI
73+
self._update_figure_dpi()
7474
# The easiest way to resize the canvas is to emit a resizeEvent
7575
# since we implement all the logic for resizing the canvas for
7676
# that event.
@@ -196,6 +196,10 @@ def __init__(self, figure):
196196
self.figure._original_dpi = self.figure.dpi
197197
self.figure.dpi = self._dpi_ratio * self.figure._original_dpi
198198

199+
def _update_figure_dpi(self):
200+
dpi = self._dpi_ratio * self.figure._original_dpi
201+
self.figure._set_dpi(dpi, forward=False)
202+
199203

200204
@_BackendQT5.export
201205
class _BackendQT5Agg(_BackendQT5):

lib/matplotlib/figure.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -418,11 +418,16 @@ def _get_axes(self):
418418
def _get_dpi(self):
419419
return self._dpi
420420

421-
def _set_dpi(self, dpi):
421+
def _set_dpi(self, dpi, forward=True):
422+
"""
423+
The forward kwarg is passed on to set_size_inches
424+
"""
422425
self._dpi = dpi
423426
self.dpi_scale_trans.clear().scale(dpi, dpi)
424-
self.set_size_inches(*self.get_size_inches())
427+
w, h = self.get_size_inches()
428+
self.set_size_inches(w, h, forward=forward)
425429
self.callbacks.process('dpi_changed', self)
430+
426431
dpi = property(_get_dpi, _set_dpi)
427432

428433
def get_tight_layout(self):

0 commit comments

Comments
 (0)