Index: scribus/guidemanagercore.cpp =================================================================== --- scribus/guidemanagercore.cpp (revision 27785) +++ scribus/guidemanagercore.cpp (working copy) @@ -314,6 +314,10 @@ m_horizontalStdG.clear(); break; case Auto: + if (m_horizontalAutoGap == 0.0 && m_horizontalAutoCount == 0 && + m_horizontalAutoRefer == 0 && m_horizontalAutoG.isEmpty()) + break; + if (UndoManager::undoEnabled()) { auto* ss = new SimpleState(Um::DelHAGuide, nullptr, Um::IGuides); @@ -348,6 +352,10 @@ m_verticalStdG.clear(); break; case Auto: + if (m_verticalAutoGap == 0.0 && m_verticalAutoCount == 0 && + m_verticalAutoRefer == 0 && m_verticalAutoG.isEmpty()) + break; + if (UndoManager::undoEnabled()) { auto* ss = new SimpleState(Um::DelVAGuide, nullptr, Um::IGuides); Index: scribus/ui/guidemanager.cpp =================================================================== --- scribus/ui/guidemanager.cpp (revision 27785) +++ scribus/ui/guidemanager.cpp (working copy) @@ -35,6 +35,26 @@ #include "undomanager.h" #include "units.h" +namespace +{ +bool pageHasGuides(const ScPage* page) +{ + if (!page) + return false; + + const GuideManagerCore& guides = page->guides; + return !guides.horizontals(GuideManagerCore::Standard).isEmpty() + || !guides.verticals(GuideManagerCore::Standard).isEmpty() + || !guides.horizontals(GuideManagerCore::Auto).isEmpty() + || !guides.verticals(GuideManagerCore::Auto).isEmpty() + || guides.horizontalAutoCount() != 0 + || guides.verticalAutoCount() != 0 + || guides.horizontalAutoGap() != 0.0 + || guides.verticalAutoGap() != 0.0 + || guides.horizontalAutoRefer() != 0 + || guides.verticalAutoRefer() != 0; +} +} GuideManager::GuideManager(QWidget* parent) : ScrPaletteBase(parent, "GuideManager") @@ -486,6 +506,9 @@ void GuideManager::deletePageButton_clicked() { + if (!pageHasGuides(currentPage)) + return; + UndoTransaction trans; if(UndoManager::undoEnabled()) trans = UndoManager::instance()->beginTransaction(currentPage->getUName(), @@ -517,6 +540,18 @@ void GuideManager::deleteAllGuides_clicked() { + bool hasGuides = false; + for (const ScPage* page : *m_doc->Pages) + { + if (pageHasGuides(page)) + { + hasGuides = true; + break; + } + } + if (!hasGuides) + return; + UndoTransaction trans; if (UndoManager::undoEnabled()) trans = UndoManager::instance()->beginTransaction(m_doc->getUName(),