diff --git a/src/Mod/TechDraw/Gui/DrawGuiUtil.cpp b/src/Mod/TechDraw/Gui/DrawGuiUtil.cpp index 0d6b15a39e..0b200ec73b 100644 --- a/src/Mod/TechDraw/Gui/DrawGuiUtil.cpp +++ b/src/Mod/TechDraw/Gui/DrawGuiUtil.cpp @@ -76,50 +76,61 @@ using namespace TechDrawGui; TechDraw::DrawPage* DrawGuiUtil::findPage(Gui::Command* cmd) { TechDraw::DrawPage* page; - bool warn = true; + int failCase = 0; //check Selection and/or Document for a DrawPage std::vector selPages = cmd->getSelection().getObjectsOfType(TechDraw::DrawPage::getClassTypeId()); if (selPages.empty()) { //no page in selection selPages = cmd->getDocument()->getObjectsOfType(TechDraw::DrawPage::getClassTypeId()); if (selPages.empty()) { //no page in document - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No page found"), - QObject::tr("Create a page first.")); page = nullptr; - warn = false; + failCase = 1; } else if (selPages.size() > 1) { //multiple pages in document, but none selected - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Too many pages"), - QObject::tr("Can not determine correct page.")); page = nullptr; - warn = false; - } else { //use only page in document - use it + failCase = 2; + } else { //only page in document - use it page = static_cast(selPages.front()); } } else if (selPages.size() > 1) { //multiple pages in selection - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Too many pages"), - QObject::tr("Select exactly 1 page.")); page = nullptr; - warn = false; + failCase = 3; } else { //use only page in selection page = static_cast(selPages.front()); } + //if no page is selected //default to currently displayed DrawPage is there is one //code moved Coverity CID 174668 - if (page == nullptr) { - Gui::MainWindow* w = Gui::getMainWindow(); - Gui::MDIView* mv = w->activeWindow(); - MDIViewPage* mvp = dynamic_cast(mv); - if (mvp) { - QString windowTitle = mvp->windowTitle(); - QGVPage* qp = mvp->getQGVPage(); - page = qp->getDrawPage(); + if (page == nullptr) { + if ((failCase == 1) || + (failCase == 2)) { + Gui::MainWindow* w = Gui::getMainWindow(); + Gui::MDIView* mv = w->activeWindow(); + MDIViewPage* mvp = dynamic_cast(mv); + if (mvp) { + QString windowTitle = mvp->windowTitle(); + QGVPage* qp = mvp->getQGVPage(); + page = qp->getDrawPage(); + } else { + failCase = 1; + } } } - if ((page == nullptr) && - (warn) ) { - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No page found"), - QObject::tr("Create a page first.")); + if ((page == nullptr) + ) { + switch(failCase) { + case 1: + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No page found"), + QObject::tr("Create/select a page first.")); + break; + case 2: + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Which page?"), + QObject::tr("Can not determine correct page.")); + break; + case 3: + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Too many pages"), + QObject::tr("Select exactly 1 page.")); + } } return page;