Do not show master's errors if compiling child

If a master document is compiled and has errors, and then a child is
compiled without error, the errors from the master compilation were
shown.

The setup of the relevant code is the following:

  processingThreadFinished() calls errors().  errors() makes the
  assumption that if it is called, there must have been an error
  somewhere.

The logic of the setup is the following:

  processingThreadFinished() knows whether there was an error on
  the most recent preview/export, although it doesn't know whether
  the error is from master or child (i.e. does not know whether the
  user was compiling the child, or whether master-buffer-view was
  called).  Inside error(), if there is no error in the child, it is
  assumed the error is from master.

For the above logic to work, errors() should only be called if there
was an error.

This commit fixes #11106 and preserves the fix to #7330.
This commit is contained in:
Scott Kostyshak 2018-04-07 17:11:33 -04:00
parent 2ecc3b09c6
commit 8d2b121ef5
2 changed files with 7 additions and 1 deletions

View File

@ -725,7 +725,10 @@ void GuiView::processingThreadFinished()
errors("Export");
return;
}
errors(d.last_export_format);
if (status != Buffer::ExportSuccess && status != Buffer::PreviewSuccess &&
status != Buffer::ExportCancel) {
errors(d.last_export_format);
}
}

View File

@ -166,6 +166,9 @@ public:
/// \name GuiBufferDelegate.
//@{
void resetAutosaveTimers();
// shows an error list (possibly master's)
// even if from_master is false, might show master's error list.
// this function should only be called if there was an error (#11106).
void errors(std::string const &, bool from_master = false);
void structureChanged();
void updateTocItem(std::string const &, DocIterator const &);