mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 05:16:21 +00:00
Remember correctly pixel ratio used for painting
This avoids endless resize issues on HiDPI systems (e.g. Retina Mac). Rename pixel_ratio_ to last_pixel_ratio_ to emphasize that this is a cached value. Inline needResize method to make the logic clearer in paintEvent.
This commit is contained in:
parent
f7e431ce73
commit
6532e5104d
@ -238,7 +238,7 @@ GuiWorkArea::Private::Private(GuiWorkArea * parent)
|
||||
: p(parent), buffer_view_(0), lyx_view_(0),
|
||||
caret_(0), caret_visible_(false),
|
||||
need_resize_(false), preedit_lines_(1),
|
||||
pixel_ratio_(1.0),
|
||||
last_pixel_ratio_(1.0),
|
||||
completer_(new GuiCompleter(p, p)), dialog_mode_(false), shell_escape_(false),
|
||||
read_only_(false), clean_(true), externally_modified_(false)
|
||||
{
|
||||
@ -1225,7 +1225,7 @@ void GuiWorkArea::paintEvent(QPaintEvent * ev)
|
||||
// LYXERR(Debug::PAINTING, "paintEvent begin: x: " << rc.x()
|
||||
// << " y: " << rc.y() << " w: " << rc.width() << " h: " << rc.height());
|
||||
|
||||
if (d->needResize()) {
|
||||
if (d->need_resize_ || pixelRatio() != d->last_pixel_ratio_) {
|
||||
d->resizeBufferView();
|
||||
if (d->caret_visible_) {
|
||||
d->hideCaret();
|
||||
@ -1233,6 +1233,8 @@ void GuiWorkArea::paintEvent(QPaintEvent * ev)
|
||||
}
|
||||
}
|
||||
|
||||
d->last_pixel_ratio_ = pixelRatio();
|
||||
|
||||
GuiPainter pain(viewport(), pixelRatio());
|
||||
d->buffer_view_->draw(pain, d->caret_visible_);
|
||||
|
||||
|
@ -97,10 +97,6 @@ struct GuiWorkArea::Private
|
||||
|
||||
void paintPreeditText(GuiPainter & pain);
|
||||
|
||||
bool needResize() const {
|
||||
return need_resize_ || p->pixelRatio() != pixel_ratio_;
|
||||
}
|
||||
|
||||
///
|
||||
GuiWorkArea * p;
|
||||
///
|
||||
@ -133,7 +129,7 @@ struct GuiWorkArea::Private
|
||||
/// Ratio between physical pixels and device-independent pixels
|
||||
/// We save the last used value to detect changes of the
|
||||
/// current pixel_ratio of the viewport.
|
||||
double pixel_ratio_;
|
||||
double last_pixel_ratio_;
|
||||
///
|
||||
GuiCompleter * completer_;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user