]> git.lyx.org Git - lyx.git/blobdiff - src/graphics/PreviewImage.cpp
Fix bug noticed by Pavel. Apparently, some changes Abdel made to preview loading...
[lyx.git] / src / graphics / PreviewImage.cpp
index 7fe9f2a769303fa408d4df8f2048313973ed5cae..661c8af8d19f947ac5216a4f2e2a2c252f8999bc 100644 (file)
@@ -11,6 +11,9 @@
 #include <config.h>
 
 #include "PreviewImage.h"
+
+#include "Buffer.h"
+#include "Dimension.h"
 #include "GraphicsImage.h"
 #include "GraphicsLoader.h"
 #include "PreviewLoader.h"
@@ -83,7 +86,7 @@ Dimension PreviewImage::dim() const
        if (!image)
                return dim;
 
-       dim.asc = int(pimpl_->ascent_frac_ * double(image->height()));
+       dim.asc = int(pimpl_->ascent_frac_ * double(image->height()) + 0.5);
        dim.des = image->height() - dim.asc;
        dim.wid = image->width();
        return dim;
@@ -103,13 +106,15 @@ PreviewImage::Impl::Impl(PreviewImage & p, PreviewLoader & l,
        : parent_(p), ploader_(l), iloader_(bf),
          snippet_(s), ascent_frac_(af)
 {
+       iloader_.setDisplayPixelRatio(l.displayPixelRatio());
        iloader_.connect(bind(&Impl::statusChanged, this));
 }
 
 
 PreviewImage::Impl::~Impl()
 {
-       iloader_.filename().removeFile();
+       if (!ploader_.buffer().isClone())
+               iloader_.filename().removeFile();
 }
 
 
@@ -139,7 +144,10 @@ void PreviewImage::Impl::statusChanged()
        case ErrorUnknown:
                //iloader_.filename().removeFile();
                ploader_.remove(snippet_);
-               break;
+               // FIXME: We need to return here, because PreviewLoader::remove
+               // removes the preview image from the cache, which deletes this
+               // object, so we should not try to do anything here.
+               return;
 
        case Ready:
                iloader_.filename().removeFile();