diff options
Diffstat (limited to 'app-editors/kile/files/kile-2.9.93-fix-overriding-existing-templates.patch')
-rw-r--r-- | app-editors/kile/files/kile-2.9.93-fix-overriding-existing-templates.patch | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/app-editors/kile/files/kile-2.9.93-fix-overriding-existing-templates.patch b/app-editors/kile/files/kile-2.9.93-fix-overriding-existing-templates.patch new file mode 100644 index 000000000000..f303cff0b0f0 --- /dev/null +++ b/app-editors/kile/files/kile-2.9.93-fix-overriding-existing-templates.patch @@ -0,0 +1,164 @@ +From 7a55cf2d93c9daa13f2fa2ec1ae25646507cfc0c Mon Sep 17 00:00:00 2001 +From: Michel Ludwig <michel.ludwig@kdemail.net> +Date: Sun, 1 Dec 2019 15:56:05 +0100 +Subject: [PATCH] Fix overriding of existing templates + +Also, don't delete the original file after the template has been +created from it. + +BUG: 413473 + +* asturm 2020-10-17: backport to 2.9.93 (drop unnecessary string change) + +--- + src/dialogs/managetemplatesdialog.cpp | 7 ++- + src/templates.cpp | 78 ++------------------------- + src/templates.h | 10 ++-- + 3 files changed, 12 insertions(+), 83 deletions(-) + +diff --git a/src/dialogs/managetemplatesdialog.cpp b/src/dialogs/managetemplatesdialog.cpp +index c5298b21..77d5d6ff 100644 +--- a/src/dialogs/managetemplatesdialog.cpp ++++ b/src/dialogs/managetemplatesdialog.cpp +@@ -292,11 +292,10 @@ void ManageTemplatesDialog::addTemplate() + reject(); + return; + } +- returnValue = m_templateManager->replace(templateInfo, m_sourceURL, templateName, iconURL); +- } +- else { +- returnValue = m_templateManager->add(m_sourceURL, templateName, iconURL); + } ++ ++ returnValue = m_templateManager->add(m_sourceURL, templateName, iconURL); ++ + if (!returnValue) { + KMessageBox::error(this, i18n("Failed to create the template.")); + reject(); +diff --git a/src/templates.cpp b/src/templates.cpp +--- a/src/templates.cpp ++++ b/src/templates.cpp +@@ -82,7 +82,10 @@ bool Manager::copyAppData(const QUrl &src, const QString& subdir, const QString& + testDir.mkpath(dir); + } + // copy file +- KIO::FileCopyJob* copyJob = KIO::file_copy(src, targetURL); ++ if(src == targetURL) { // copying a file over itself ++ return true; ++ } ++ KIO::FileCopyJob* copyJob = KIO::file_copy(src, targetURL, -1, KIO::Overwrite); + KJobWidgets::setWindow(copyJob, m_kileInfo->mainWindow()); + return copyJob->exec(); + } +@@ -130,77 +133,6 @@ bool Manager::remove(Info ti) { + return removeAppData(ti.path) && removeAppData(ti.icon); + } + +-bool Manager::replace(const KileTemplate::Info& toBeReplaced, const QUrl &newTemplateSourceURL, const QString& newName, const QUrl& newIcon) { +- KileDocument::Type type = m_kileInfo->extensions()->determineDocumentType(newTemplateSourceURL); +- +- //start by copying the files that belong to the new template to a safe place +- QString templateTempFile, iconTempFile; +- +- if( newTemplateSourceURL.isLocalFile() ) { +- // file protocol. We do not need the network +- templateTempFile = newTemplateSourceURL.toLocalFile(); +- } +- else { +- QTemporaryFile tmpFile; +- tmpFile.setAutoRemove( false ); +- tmpFile.open(); +- +- templateTempFile = tmpFile.fileName(); +- m_TempFilePath = tmpFile.fileName(); +- KIO::FileCopyJob* fileCopyJob = KIO::file_copy( newTemplateSourceURL, QUrl::fromLocalFile(templateTempFile), -1, KIO::Overwrite ); +- KJobWidgets::setWindow( fileCopyJob, m_kileInfo->mainWindow() ); +- +- if( ! fileCopyJob->exec() ) { +- return false; +- } +- } +- +- if( newIcon.isLocalFile() ) { +- // file protocol. We do not need the network +- iconTempFile = newIcon.toLocalFile(); +- } +- else { +- QTemporaryFile tmpFile; +- tmpFile.setAutoRemove( false ); +- tmpFile.open(); +- +- iconTempFile = tmpFile.fileName(); +- m_TempFilePath = tmpFile.fileName(); +- KIO::FileCopyJob* fileCopyJob = KIO::file_copy( newIcon, QUrl::fromLocalFile(iconTempFile), -1, KIO::Overwrite ); +- KJobWidgets::setWindow( fileCopyJob, m_kileInfo->mainWindow() ); +- +- if( ! fileCopyJob->exec() ) { +- if( ! templateTempFile.isEmpty() ) +- QFile::remove( templateTempFile ); +- return false; +- } +- } +- +- //now delete the template that should be replaced +- if(!remove(toBeReplaced)) { +- if( ! templateTempFile.isEmpty() ) +- QFile::remove( templateTempFile ); +- if( ! iconTempFile.isEmpty() ) +- QFile::remove( iconTempFile ); +- } +- +- //finally, create the new template +- if(!add(QUrl::fromUserInput(templateTempFile), type, newName, QUrl::fromUserInput(iconTempFile))) { +- if( ! templateTempFile.isEmpty() ) +- QFile::remove( templateTempFile ); +- if( ! iconTempFile.isEmpty() ) +- QFile::remove( iconTempFile ); +- return false; +- } +- +- if( ! templateTempFile.isEmpty() ) +- QFile::remove( templateTempFile ); +- if( ! iconTempFile.isEmpty() ) +- QFile::remove( iconTempFile ); +- +- return true; +-} +- + void Manager::scanForTemplates() { + KILE_DEBUG_MAIN << "===scanForTemplates()==================="; + QStringList dirs = KileUtilities::locateAll(QStandardPaths::AppDataLocation, "templates", QStandardPaths::LocateDirectory); +diff --git a/src/templates.h b/src/templates.h +--- a/src/templates.h ++++ b/src/templates.h +@@ -1,7 +1,7 @@ + /*************************************************************************************** + begin : Sat Apr 26 2003 + copyright : (C) 2003 by Jeroen Wijnhout (wijnhout@science.uva.nl) +- 2007, 2008 by Michel Ludwig (michel.ludwig@kdemail.net) ++ 2007-2019 by Michel Ludwig (michel.ludwig@kdemail.net) + ***************************************************************************************/ + + /*************************************************************************** +@@ -79,15 +79,13 @@ public: + **/ + bool searchForTemplate(const QString& name, KileDocument::Type& type) const; + +- // add a template in $HOME/kile/templates/ ++ // Add a template in .kde/share/kile/templates/ ++ // This function will override any existing template. + bool add(const QUrl &templateSourceURL, const QString &name, const QUrl &icon); + +- // remove a template from $HOME/kile/templates/ ++ // Remove a template from .kde/share/kile/templates/ + bool remove(KileTemplate::Info ti); + +- // replaces a template +- bool replace(const KileTemplate::Info& toBeReplaced, const QUrl &newTemplateSourceURL, const QString& newName, const QUrl& newIcon); +- + // these have to be methods as we cannot use i18n calls in global objects + static QString defaultEmptyTemplateCaption(); + static QString defaultEmptyLaTeXTemplateCaption(); +-- +GitLab + |