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),
|
: p(parent), buffer_view_(0), lyx_view_(0),
|
||||||
caret_(0), caret_visible_(false),
|
caret_(0), caret_visible_(false),
|
||||||
need_resize_(false), preedit_lines_(1),
|
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),
|
completer_(new GuiCompleter(p, p)), dialog_mode_(false), shell_escape_(false),
|
||||||
read_only_(false), clean_(true), externally_modified_(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()
|
// LYXERR(Debug::PAINTING, "paintEvent begin: x: " << rc.x()
|
||||||
// << " y: " << rc.y() << " w: " << rc.width() << " h: " << rc.height());
|
// << " y: " << rc.y() << " w: " << rc.width() << " h: " << rc.height());
|
||||||
|
|
||||||
if (d->needResize()) {
|
if (d->need_resize_ || pixelRatio() != d->last_pixel_ratio_) {
|
||||||
d->resizeBufferView();
|
d->resizeBufferView();
|
||||||
if (d->caret_visible_) {
|
if (d->caret_visible_) {
|
||||||
d->hideCaret();
|
d->hideCaret();
|
||||||
@ -1233,6 +1233,8 @@ void GuiWorkArea::paintEvent(QPaintEvent * ev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
d->last_pixel_ratio_ = pixelRatio();
|
||||||
|
|
||||||
GuiPainter pain(viewport(), pixelRatio());
|
GuiPainter pain(viewport(), pixelRatio());
|
||||||
d->buffer_view_->draw(pain, d->caret_visible_);
|
d->buffer_view_->draw(pain, d->caret_visible_);
|
||||||
|
|
||||||
|
@ -97,10 +97,6 @@ struct GuiWorkArea::Private
|
|||||||
|
|
||||||
void paintPreeditText(GuiPainter & pain);
|
void paintPreeditText(GuiPainter & pain);
|
||||||
|
|
||||||
bool needResize() const {
|
|
||||||
return need_resize_ || p->pixelRatio() != pixel_ratio_;
|
|
||||||
}
|
|
||||||
|
|
||||||
///
|
///
|
||||||
GuiWorkArea * p;
|
GuiWorkArea * p;
|
||||||
///
|
///
|
||||||
@ -133,7 +129,7 @@ struct GuiWorkArea::Private
|
|||||||
/// Ratio between physical pixels and device-independent pixels
|
/// Ratio between physical pixels and device-independent pixels
|
||||||
/// We save the last used value to detect changes of the
|
/// We save the last used value to detect changes of the
|
||||||
/// current pixel_ratio of the viewport.
|
/// current pixel_ratio of the viewport.
|
||||||
double pixel_ratio_;
|
double last_pixel_ratio_;
|
||||||
///
|
///
|
||||||
GuiCompleter * completer_;
|
GuiCompleter * completer_;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user