Okay, I tried that on both Linux and Sigil and still no double warnings.
So I can not test if what I have below will fix things or not, but if you do build your own (or maybe BeckyEbook could test it) please try the following changes that should prevent reentrancy in the ShowLastOpenFileWarnings:
In Sigil/src/MainUI/MainWindow.cpp in the ShowLastOpenFindWarnings() routine add the first two lines to start that routine and the last line just before it ends.
Code:
void MainWindow::ShowLastOpenFileWarnings()
{
if (m_inShowLastOpenWarnings) return;
m_inShowLastOpenWarnings = true;
if (!m_LastOpenFileWarnings.isEmpty()) {
foreach(QString info, m_LastOpenFileWarnings) {
QString msg;
QString details;
if (!info.isEmpty()) {
QStringList warning = info.split(QChar(31));
msg = warning[0];
details = warning[1];
Utility::DisplayStdWarningDialog(
"<p><b>" %
tr("Warning: ") % msg %
"</b><p>", details, this);
}
}
m_LastOpenFileWarnings.clear();
}
m_inShowLastOpenWarnings = false;
}
In Sigil/src/MainUI/MainWindow.h, near the bottom add this next line:
Code:
bool m_inShowLastOpenWarnings = false;
/**
* Holds all the widgets Qt Designer created for us.
*/
Ui::MainWindow ui;
};
If those changes fix the issue for Windows, I will push them to master.