mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-25 05:55:34 +00:00
Attempt to fix bug #13017.
We should not remove the aux and bbl files when the Buffer is actively being exported.
This commit is contained in:
parent
378397a6c6
commit
92209fb6b8
@ -2689,6 +2689,11 @@ bool Buffer::citeLabelsValid() const
|
||||
|
||||
void Buffer::removeBiblioTempFiles() const
|
||||
{
|
||||
if (theApp()->isBufferBusy(this)) {
|
||||
removeBiblioTemps = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// We remove files that contain LaTeX commands specific to the
|
||||
// particular bibliographic style being used, in order to avoid
|
||||
// LaTeX errors when we switch style.
|
||||
@ -2702,6 +2707,7 @@ void Buffer::removeBiblioTempFiles() const
|
||||
Buffer const * const pbuf = parent();
|
||||
if (pbuf)
|
||||
pbuf->removeBiblioTempFiles();
|
||||
removeBiblioTemps = false;
|
||||
}
|
||||
|
||||
|
||||
|
@ -806,18 +806,20 @@ public:
|
||||
/// of loaded child documents).
|
||||
docstring_list const &
|
||||
getBibfiles(UpdateScope scope = UpdateMaster) const;
|
||||
|
||||
///
|
||||
bool needToRemoveBiblioTemps() const { return removeBiblioTemps; }
|
||||
/// routines for dealing with possible self-inclusion
|
||||
void pushIncludedBuffer(Buffer const * buf) const;
|
||||
void popIncludedBuffer() const;
|
||||
bool isBufferIncluded(Buffer const * buf) const;
|
||||
private:
|
||||
void clearIncludeList() const;
|
||||
|
||||
private:
|
||||
///
|
||||
friend class MarkAsExporting;
|
||||
/// mark the buffer as busy exporting something, or not
|
||||
void setExportStatus(bool e) const;
|
||||
///
|
||||
mutable bool removeBiblioTemps = false;
|
||||
|
||||
///
|
||||
References & getReferenceCache(docstring const & label);
|
||||
|
@ -255,6 +255,8 @@ public:
|
||||
virtual bool unhide(Buffer * buf) = 0;
|
||||
// Apply preferences at the start
|
||||
static void applyPrefs();
|
||||
///
|
||||
virtual bool isBufferBusy(Buffer const * b) = 0;
|
||||
};
|
||||
|
||||
/// Return the list of loadable formats.
|
||||
|
@ -1258,6 +1258,18 @@ void GuiApplication::clearSession()
|
||||
}
|
||||
|
||||
|
||||
bool GuiApplication::isBufferBusy(Buffer const * b)
|
||||
{
|
||||
Buffer const * buf = b;
|
||||
while (buf) {
|
||||
if (GuiView::isBufferBusy(b))
|
||||
return true;
|
||||
buf = buf->parent();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
docstring Application::iconName(FuncRequest const & f, bool unknown)
|
||||
{
|
||||
return qstring_to_ucs4(lyx::frontend::iconInfo(f, unknown, false).filepath);
|
||||
|
@ -83,6 +83,7 @@ public:
|
||||
std::string inputLanguageCode() const override;
|
||||
void handleKeyFunc(FuncCode action) override;
|
||||
bool unhide(Buffer * buf) override;
|
||||
bool isBufferBusy(Buffer const * b) override;
|
||||
//@}
|
||||
|
||||
///
|
||||
|
@ -527,6 +527,7 @@ public:
|
||||
string last_export_format;
|
||||
string processing_format;
|
||||
|
||||
// Buffers that are being exported
|
||||
static QSet<Buffer const *> busyBuffers;
|
||||
|
||||
unsigned int smallIconSize;
|
||||
@ -3451,6 +3452,12 @@ bool GuiView::exportBufferAs(Buffer & b, docstring const & iformat)
|
||||
}
|
||||
|
||||
|
||||
bool GuiView::isBufferBusy(Buffer const * b)
|
||||
{
|
||||
return GuiViewPrivate::busyBuffers.contains(b);
|
||||
}
|
||||
|
||||
|
||||
bool GuiView::saveBuffer(Buffer & b)
|
||||
{
|
||||
return saveBuffer(b, FileName());
|
||||
@ -4227,6 +4234,8 @@ Buffer::ExportStatus GuiView::GuiViewPrivate::runAndDestroy(const T& func,
|
||||
// documents, starting from the master. so we must delete those.
|
||||
Buffer * mbuf = const_cast<Buffer *>(clone->masterBuffer());
|
||||
delete mbuf;
|
||||
if (orig->needToRemoveBiblioTemps())
|
||||
orig->removeBiblioTempFiles();
|
||||
busyBuffers.remove(orig);
|
||||
return status;
|
||||
}
|
||||
|
@ -220,6 +220,8 @@ public:
|
||||
|
||||
/// Current ratio between physical pixels and device-independent pixels
|
||||
double pixelRatio() const;
|
||||
///
|
||||
static bool isBufferBusy(Buffer const * b);
|
||||
|
||||
Q_SIGNALS:
|
||||
void closing(int);
|
||||
|
Loading…
Reference in New Issue
Block a user