From 6c187572c75b58d5c2b5da3cb678753e62a5165f Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 3 Jan 2015 22:39:07 +0100 Subject: [PATCH] + fix undo/redo issues with ortho views --- src/Mod/Drawing/Gui/Command.cpp | 9 ++++++--- src/Mod/Drawing/Gui/TaskOrthoViews.cpp | 8 ++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Mod/Drawing/Gui/Command.cpp b/src/Mod/Drawing/Gui/Command.cpp index 6f50e33ec..ab3492aaf 100644 --- a/src/Mod/Drawing/Gui/Command.cpp +++ b/src/Mod/Drawing/Gui/Command.cpp @@ -103,10 +103,11 @@ void CmdDrawingNewPage::activated(int iMsg) QFileInfo tfi(a->property("Template").toString()); if (tfi.isReadable()) { - openCommand("Drawing create page"); + openCommand("Create page"); doCommand(Doc,"App.activeDocument().addObject('Drawing::FeaturePage','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Template = '%s'",FeatName.c_str(), (const char*)tfi.filePath().toUtf8()); doCommand(Doc,"App.activeDocument().recompute()"); + doCommand(Doc,"Gui.activeDocument().getObject('%s').show()",FeatName.c_str()); commitCommand(); } else { @@ -231,7 +232,7 @@ void CmdDrawingNewA3Landscape::activated(int iMsg) { std::string FeatName = getUniqueObjectName("Page"); - openCommand("Drawing create page"); + openCommand("Create page"); doCommand(Doc,"App.activeDocument().addObject('Drawing::FeaturePage','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Template = 'A3_Landscape.svg'",FeatName.c_str()); doCommand(Doc,"App.activeDocument().recompute()"); @@ -361,7 +362,9 @@ void CmdDrawingOrthoViews::activated(int iMsg) return; } - Gui::Control().showDialog(new TaskDlgOrthoViews()); + TaskDlgOrthoViews* dlg = new TaskDlgOrthoViews(); + dlg->setDocumentName(this->getDocument()->getName()); + Gui::Control().showDialog(dlg); } bool CmdDrawingOrthoViews::isActive(void) diff --git a/src/Mod/Drawing/Gui/TaskOrthoViews.cpp b/src/Mod/Drawing/Gui/TaskOrthoViews.cpp index 942ef516a..6aed23956 100644 --- a/src/Mod/Drawing/Gui/TaskOrthoViews.cpp +++ b/src/Mod/Drawing/Gui/TaskOrthoViews.cpp @@ -268,11 +268,13 @@ OrthoViews::OrthoViews(const char * pagename, const char * partname) part_name = partname; parent_doc = App::GetApplication().getActiveDocument(); + parent_doc->openTransaction("Create view"); part = parent_doc->getObject(partname); bbox.Add(static_cast(part)->Shape.getBoundingBox()); page = parent_doc->getObject(pagename); + Gui::Application::Instance->showViewProvider(page); load_page(); min_space = 15; // should be preferenced @@ -1343,12 +1345,18 @@ void TaskDlgOrthoViews::clicked(int) bool TaskDlgOrthoViews::accept() { bool check = widget->user_input(); + App::Document* doc = App::GetApplication().getDocument(this->getDocumentName().c_str()); + if (doc) + doc->commitTransaction(); return !check; } bool TaskDlgOrthoViews::reject() { widget->clean_up(); + App::Document* doc = App::GetApplication().getDocument(this->getDocumentName().c_str()); + if (doc) + doc->abortTransaction(); return true; }