]> git.lyx.org Git - lyx.git/blobdiff - src/insets/RenderPreview.cpp
New attempt on #9906: allow following hyperlinks via context menu.
[lyx.git] / src / insets / RenderPreview.cpp
index 99abca9f3c5800d0e18591155043ccd8bc4c8ae2..0b17d2f83c5ff40d9d938ba66642d01df4c4d87a 100644 (file)
@@ -31,8 +31,6 @@
 #include "support/lassert.h"
 #include "support/lstrings.h"
 
-#include "support/bind.h"
-
 using namespace std;
 using namespace lyx::support;
 
@@ -77,19 +75,11 @@ RenderPreview::RenderPreview(Inset const * inset)
 RenderPreview::RenderPreview(RenderPreview const & other,
                             Inset const * inset)
        : RenderBase(other),
-         boost::signals2::trackable(),
          snippet_(other.snippet_),
          parent_(inset)
 {}
 
 
-RenderPreview::~RenderPreview()
-{
-       if (ploader_connection_.connected())
-               ploader_connection_.disconnect();
-}
-
-
 RenderBase * RenderPreview::clone(Inset const * inset) const
 {
        return new RenderPreview(*this, inset);
@@ -126,7 +116,7 @@ docstring const statusMessage(BufferView const * bv, string const & snippet)
        return message;
 }
 
-} // namespace anon
+} // namespace
 
 
 graphics::PreviewImage const *
@@ -155,7 +145,7 @@ void RenderPreview::metrics(MetricsInfo & mi, Dimension & dim) const
 
                FontInfo font(mi.base.font);
                font.setFamily(SANS_FAMILY);
-               font.setSize(FONT_SIZE_FOOTNOTE);
+               font.setSize(FOOTNOTE_SIZE);
                docstring const stat = statusMessage(mi.base.bv, snippet_);
                dim.wid = 15 + theFontMetrics(font).width(stat);
        }
@@ -176,7 +166,7 @@ void RenderPreview::draw(PainterInfo & pi, int x, int y) const
                pi.pain.image(x, y - dim_.asc, dim_.wid, dim_.height(),
                              *image);
        } else {
-               int const offset = Inset::TEXT_TO_INSET_OFFSET;
+               int const offset = Inset::textOffset(pi.base.bv);
 
                pi.pain.rectangle(x + offset,
                                  y - dim_.asc,
@@ -186,15 +176,15 @@ void RenderPreview::draw(PainterInfo & pi, int x, int y) const
 
                FontInfo font(pi.base.font);
                font.setFamily(SANS_FAMILY);
-               font.setSize(FONT_SIZE_FOOTNOTE);
+               font.setSize(FOOTNOTE_SIZE);
 
                docstring const stat = statusMessage(pi.base.bv, snippet_);
                pi.pain.text(x + offset + 6,
                             y - theFontMetrics(font).maxAscent() - 4,
                             stat, font);
        }
-       pi.change_.paintCue(pi, x, y - dim_.asc,
-                           x + dim_.width(), y - dim_.asc + dim_.height());
+       pi.change.paintCue(pi, x, y - dim_.asc,
+                          x + dim_.width(), y - dim_.asc + dim_.height());
 }
 
 
@@ -210,7 +200,7 @@ void RenderPreview::startLoading(Buffer const & buffer, bool forexport) const
 
 
 void RenderPreview::addPreview(docstring const & latex_snippet,
-                               Buffer const & buffer, 
+                               Buffer const & buffer,
                                bool ignore_lyxrc)
 {
        if (lyxrc.preview == LyXRC::PREVIEW_OFF && !ignore_lyxrc)
@@ -223,7 +213,7 @@ void RenderPreview::addPreview(docstring const & latex_snippet,
 
 
 void RenderPreview::addPreview(docstring const & latex_snippet,
-                               graphics::PreviewLoader & ploader, 
+                               graphics::PreviewLoader & ploader,
                                bool ignore_lyxrc)
 {
        if (lyxrc.preview == LyXRC::PREVIEW_OFF && !ignore_lyxrc)
@@ -241,10 +231,12 @@ void RenderPreview::addPreview(docstring const & latex_snippet,
        // If this is the first time of calling, connect to the
        // PreviewLoader signal that'll inform us when the preview image
        // is ready for loading.
-       if (!ploader_connection_.connected()) {
-               ploader_connection_ = ploader.connect(
-                       bind(&RenderPreview::imageReady, this, _1));
-       }
+       if (!ploader_connection_.connected())
+               // This is a scoped connection.
+               ploader_connection_ =
+                       ploader.connect([this](graphics::PreviewImage const & pi){
+                               imageReady(pi);
+                       });
 
        ploader.add(snippet_);
 }
@@ -292,11 +284,11 @@ void RenderMonitoredPreview::draw(PainterInfo & pi, int x, int y) const
 {
        RenderPreview::draw(pi, x, y);
        startMonitoring();
+       monitor_->checkModifiedAsync();
 }
 
 
-boost::signals2::connection
-RenderMonitoredPreview::connect(ChangedSig::slot_type const & slot)
+signals2::connection RenderMonitoredPreview::connect(slot const & slot)
 {
        return changed_.connect(slot);
 }
@@ -311,8 +303,9 @@ bool RenderMonitoredPreview::monitoring() const
 void RenderMonitoredPreview::startMonitoring() const
 {
        if (!monitoring()) {
-               monitor_ = FileSystemWatcher::monitor(filename_);
-               monitor_->connect(changed_);
+               monitor_ = FileSystemWatcher::activeMonitor(filename_);
+               // Disconnected at the same time as this is destroyed.
+               monitor_->connect([this](bool /* exists */){ changed_(); });
        }
 }