From 2d4d4609da1a93b37c9ef10099dc600fd62b7e6d Mon Sep 17 00:00:00 2001 From: Le Tan Date: Mon, 22 Nov 2021 20:40:48 +0800 Subject: [PATCH] MarkdownEditor: fix 1. Fix issue that duplicated images would not be processed when copied; 2. Add suffix `*.nasm` to Intel ASM syntax. --- libs/vtextedit | 2 +- src/data/extra/syntax-highlighting/syntax/nasm.xml | 2 +- src/utils/fileutils.cpp | 4 ++-- src/widgets/editors/markdowneditor.cpp | 12 ++++++++++++ src/widgets/findandreplacewidget.cpp | 1 + src/widgets/searchpanel.cpp | 1 + src/widgets/viewwindow.cpp | 8 ++++++-- 7 files changed, 24 insertions(+), 6 deletions(-) diff --git a/libs/vtextedit b/libs/vtextedit index 08b440d3..6d924bef 160000 --- a/libs/vtextedit +++ b/libs/vtextedit @@ -1 +1 @@ -Subproject commit 08b440d3045c944a8a6d7f8945a197ff56dcec82 +Subproject commit 6d924bef99de572016c34311063b50482b5851c6 diff --git a/src/data/extra/syntax-highlighting/syntax/nasm.xml b/src/data/extra/syntax-highlighting/syntax/nasm.xml index ba50d500..cd4e560d 100644 --- a/src/data/extra/syntax-highlighting/syntax/nasm.xml +++ b/src/data/extra/syntax-highlighting/syntax/nasm.xml @@ -40,7 +40,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA --> - + diff --git a/src/utils/fileutils.cpp b/src/utils/fileutils.cpp index f44fcf6a..02acfe78 100644 --- a/src/utils/fileutils.cpp +++ b/src/utils/fileutils.cpp @@ -254,7 +254,8 @@ bool FileUtils::isText(const QString &p_filePath) { QMimeDatabase mimeDatabase; auto mimeType = mimeDatabase.mimeTypeForFile(p_filePath); - if (mimeType.name().startsWith(QStringLiteral("text/"))) { + const auto name = mimeType.name(); + if (name.startsWith(QStringLiteral("text/")) || name == QStringLiteral("application/x-zerosize")) { return true; } @@ -345,7 +346,6 @@ QString FileUtils::generateFileNameWithSequence(const QString &p_folderPath, void FileUtils::removeEmptyDir(const QString &p_dirPath) { QDir dir(p_dirPath); - qDebug() << "removeEmptyDir" << p_dirPath << dir.isEmpty(); if (dir.isEmpty()) { return; } diff --git a/src/widgets/editors/markdowneditor.cpp b/src/widgets/editors/markdowneditor.cpp index b82ca238..6d48ff69 100644 --- a/src/widgets/editors/markdowneditor.cpp +++ b/src/widgets/editors/markdowneditor.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -1396,12 +1397,22 @@ void MarkdownEditor::uploadImagesToImageHost() proDlg.setWindowModality(Qt::WindowModal); proDlg.setWindowTitle(tr("Upload Images To Image Host")); + QHash uploadedImages; + int cnt = 0; auto cursor = m_textEdit->textCursor(); cursor.beginEditBlock(); for (int i = 0; i < images.size(); ++i) { const auto &link = images[i]; + auto it = uploadedImages.find(link.m_path); + if (it != uploadedImages.end()) { + cursor.setPosition(link.m_urlInLinkPos); + cursor.setPosition(link.m_urlInLinkPos + link.m_urlInLink.size(), QTextCursor::KeepAnchor); + cursor.insertText(it.value()); + continue; + } + proDlg.setValue(i + 1); if (proDlg.wasCanceled()) { break; @@ -1444,6 +1455,7 @@ void MarkdownEditor::uploadImagesToImageHost() cursor.setPosition(link.m_urlInLinkPos); cursor.setPosition(link.m_urlInLinkPos + link.m_urlInLink.size(), QTextCursor::KeepAnchor); cursor.insertText(targetUrl); + uploadedImages.insert(link.m_path, targetUrl); ++cnt; } cursor.endEditBlock(); diff --git a/src/widgets/findandreplacewidget.cpp b/src/widgets/findandreplacewidget.cpp index f17ee93a..b5d694c0 100644 --- a/src/widgets/findandreplacewidget.cpp +++ b/src/widgets/findandreplacewidget.cpp @@ -77,6 +77,7 @@ void FindAndReplaceWidget::setupUI() m_findLineEdit = WidgetsFactory::createLineEdit(this); m_findLineEdit->setPlaceholderText(tr("Search")); + m_findLineEdit->setClearButtonEnabled(true); connect(m_findLineEdit, &QLineEdit::textChanged, m_findTextTimer, QOverload<>::of(&QTimer::start)); diff --git a/src/widgets/searchpanel.cpp b/src/widgets/searchpanel.cpp index ca39a546..2b33b05c 100644 --- a/src/widgets/searchpanel.cpp +++ b/src/widgets/searchpanel.cpp @@ -78,6 +78,7 @@ void SearchPanel::setupUI() m_keywordComboBox->setEditable(true); m_keywordComboBox->setLineEdit(WidgetsFactory::createLineEdit(mainWidget)); m_keywordComboBox->lineEdit()->setProperty(PropertyDefs::c_embeddedLineEdit, true); + m_keywordComboBox->lineEdit()->setClearButtonEnabled(true); m_keywordComboBox->completer()->setCaseSensitivity(Qt::CaseSensitive); connect(m_keywordComboBox->lineEdit(), &QLineEdit::returnPressed, this, [this]() { diff --git a/src/widgets/viewwindow.cpp b/src/widgets/viewwindow.cpp index 39d57313..363423b1 100644 --- a/src/widgets/viewwindow.cpp +++ b/src/widgets/viewwindow.cpp @@ -1162,9 +1162,13 @@ void ViewWindow::replaceAll(const QString &p_text, FindOptions p_options, const void ViewWindow::showFindResult(const QStringList &p_texts, int p_totalMatches, int p_currentMatchIndex) { + if (p_texts.isEmpty() || p_texts[0].isEmpty()) { + showMessage(QString()); + return; + } + if (p_totalMatches == 0) { - showMessage(tr("Pattern not found: %1%2").arg(p_texts.isEmpty() ? QString() : p_texts[0], - p_texts.size() > 1 ? tr(" [+]"): QString())); + showMessage(tr("Pattern not found: %1").arg(p_texts.join(QStringLiteral("; ")))); } else { showMessage(tr("Match found: %1/%2").arg(p_currentMatchIndex + 1).arg(p_totalMatches)); }