summaryrefslogtreecommitdiff
path: root/src/modinfodialogtab.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-25 17:44:41 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-07-02 10:10:19 -0400
commitfa20f81b46c3f8c89fcbbdff6e5da0225c707358 (patch)
treed02df7f08ba1fdac3fb9d6b699621cfc69638944 /src/modinfodialogtab.cpp
parent65b3eb24fc5e3e1033d583a24cb51a19b0cfac2c (diff)
replaced reportError() calls by qCritical() because they can come from a thread, which hangs the ui
categories and notes will update the tab color when changing fixed rare crash when reordering tabs while loading a mod
Diffstat (limited to 'src/modinfodialogtab.cpp')
-rw-r--r--src/modinfodialogtab.cpp36
1 files changed, 24 insertions, 12 deletions
diff --git a/src/modinfodialogtab.cpp b/src/modinfodialogtab.cpp
index d99e8727..f5eeeed1 100644
--- a/src/modinfodialogtab.cpp
+++ b/src/modinfodialogtab.cpp
@@ -131,7 +131,10 @@ void ModInfoDialogTab::emitModOpen(QString name)
void ModInfoDialogTab::setHasData(bool b)
{
- m_hasData = b;
+ if (m_hasData != b) {
+ m_hasData = b;
+ emit hasDataChanged();
+ }
}
@@ -140,14 +143,14 @@ NotesTab::NotesTab(
QWidget* parent, Ui::ModInfoDialog* ui, int index)
: ModInfoDialogTab(oc, plugin, parent, ui, index)
{
- connect(ui->commentsEdit, &QLineEdit::editingFinished, [&]{ onComments(); });
- connect(ui->notesEdit, &HTMLEditor::editingFinished, [&]{ onNotes(); });
+ connect(ui->comments, &QLineEdit::editingFinished, [&]{ onComments(); });
+ connect(ui->notes, &HTMLEditor::editingFinished, [&]{ onNotes(); });
}
void NotesTab::clear()
{
- ui->commentsEdit->clear();
- ui->notesEdit->clear();
+ ui->comments->clear();
+ ui->notes->clear();
setHasData(false);
}
@@ -156,10 +159,9 @@ void NotesTab::update()
const auto comments = mod()->comments();
const auto notes = mod()->notes();
- ui->commentsEdit->setText(comments);
- ui->notesEdit->setText(notes);
-
- setHasData(!comments.isEmpty() || !notes.isEmpty());
+ ui->comments->setText(comments);
+ ui->notes->setText(notes);
+ checkHasData();
}
bool NotesTab::canHandleSeparators() const
@@ -169,20 +171,30 @@ bool NotesTab::canHandleSeparators() const
void NotesTab::onComments()
{
- mod()->setComments(ui->commentsEdit->text());
+ mod()->setComments(ui->comments->text());
+ checkHasData();
}
void NotesTab::onNotes()
{
// Avoid saving html stub if notes field is empty.
- if (ui->notesEdit->toPlainText().isEmpty()) {
+ if (ui->notes->toPlainText().isEmpty()) {
mod()->setNotes({});
} else {
- mod()->setNotes(ui->notesEdit->toHtml());
+ mod()->setNotes(ui->notes->toHtml());
}
+
+ checkHasData();
}
bool NotesTab::usesOriginFiles() const
{
return false;
}
+
+void NotesTab::checkHasData()
+{
+ setHasData(
+ !ui->comments->text().isEmpty() ||
+ !ui->notes->toPlainText().isEmpty());
+}