diff --git a/src/vlivepreviewhelper.cpp b/src/vlivepreviewhelper.cpp index e67e9263..92aa58a8 100644 --- a/src/vlivepreviewhelper.cpp +++ b/src/vlivepreviewhelper.cpp @@ -64,19 +64,19 @@ void CodeBlockPreviewInfo::updateInplacePreview(const VEditor *p_editor, { QTextBlock block = p_doc->findBlockByNumber(m_codeBlock.m_endBlock); if (block.isValid()) { - if (m_inplacePreview.isNull()) { - m_inplacePreview.reset(new VImageToPreview()); - } + VImageToPreview *preview = new VImageToPreview(); // m_image will be generated when signaling out. - m_inplacePreview->m_startPos = block.position(); - m_inplacePreview->m_endPos = block.position() + block.length(); - m_inplacePreview->m_blockPos = block.position(); - m_inplacePreview->m_blockNumber = m_codeBlock.m_endBlock; - m_inplacePreview->m_padding = VPreviewManager::calculateBlockMargin(block, - p_editor->tabStopWidthW()); - m_inplacePreview->m_name = QString::number(getImageIndex()); - m_inplacePreview->m_isBlock = true; + preview->m_startPos = block.position(); + preview->m_endPos = block.position() + block.length(); + preview->m_blockPos = block.position(); + preview->m_blockNumber = m_codeBlock.m_endBlock; + preview->m_padding = VPreviewManager::calculateBlockMargin(block, + p_editor->tabStopWidthW()); + preview->m_name = QString::number(getImageIndex()); + preview->m_isBlock = true; + + m_inplacePreview.reset(preview); } else { m_inplacePreview->clear(); } @@ -158,7 +158,7 @@ void VLivePreviewHelper::updateCodeBlocks(const QVector &p_codeBlock } if (m_inplacePreviewEnabled - && !m_codeBlocks[idx].inplacePreviewReady()) { + && (!cached || !m_codeBlocks[idx].inplacePreviewReady())) { processForInplacePreview(idx); manualInplacePreview = false; } diff --git a/src/vlivepreviewhelper.h b/src/vlivepreviewhelper.h index f88b2c94..3104b267 100644 --- a/src/vlivepreviewhelper.h +++ b/src/vlivepreviewhelper.h @@ -83,6 +83,7 @@ public: void setImageData(const QString &p_format, const QString &p_data) { m_imgDataBa.clear(); + m_inplacePreview.clear(); m_imgFormat = p_format; m_imgData = p_data; @@ -91,6 +92,7 @@ public: void setImageDataBa(const QString &p_format, const QByteArray &p_data) { m_imgData.clear(); + m_inplacePreview.clear(); m_imgFormat = p_format; m_imgDataBa = p_data; diff --git a/src/vmathjaxinplacepreviewhelper.cpp b/src/vmathjaxinplacepreviewhelper.cpp index 78664041..3643bf19 100644 --- a/src/vmathjaxinplacepreviewhelper.cpp +++ b/src/vmathjaxinplacepreviewhelper.cpp @@ -48,25 +48,25 @@ void MathjaxBlockPreviewInfo::updateInplacePreview(const VEditor *p_editor, { QTextBlock block = p_doc->findBlockByNumber(m_mathjaxBlock.m_blockNumber); if (block.isValid()) { - if (m_inplacePreview.isNull()) { - m_inplacePreview.reset(new VImageToPreview()); - } + VImageToPreview *preview = new VImageToPreview(); - m_inplacePreview->m_startPos = block.position() + m_mathjaxBlock.m_index; - m_inplacePreview->m_endPos = m_inplacePreview->m_startPos + m_mathjaxBlock.m_length; - m_inplacePreview->m_blockPos = block.position(); - m_inplacePreview->m_blockNumber = m_mathjaxBlock.m_blockNumber; - m_inplacePreview->m_padding = VPreviewManager::calculateBlockMargin(block, - p_editor->tabStopWidthW()); - m_inplacePreview->m_name = QString::number(getImageIndex()); - m_inplacePreview->m_isBlock = m_mathjaxBlock.m_previewedAsBlock; + preview->m_startPos = block.position() + m_mathjaxBlock.m_index; + preview->m_endPos = preview->m_startPos + m_mathjaxBlock.m_length; + preview->m_blockPos = block.position(); + preview->m_blockNumber = m_mathjaxBlock.m_blockNumber; + preview->m_padding = VPreviewManager::calculateBlockMargin(block, + p_editor->tabStopWidthW()); + preview->m_name = QString::number(getImageIndex()); + preview->m_isBlock = m_mathjaxBlock.m_previewedAsBlock; if (hasImageDataBa()) { - m_inplacePreview->m_image.loadFromData(m_imgDataBa, + preview->m_image.loadFromData(m_imgDataBa, m_imgFormat.toLocal8Bit().data()); } else { - m_inplacePreview->m_image = QPixmap(); + preview->m_image = QPixmap(); } + + m_inplacePreview.reset(preview); } else { m_inplacePreview->clear(); } @@ -117,9 +117,11 @@ void VMathJaxInplacePreviewHelper::updateMathjaxBlocks(const QVector