From c5e5958a6efb845af9e14f428da9822371408f8a Mon Sep 17 00:00:00 2001 From: TeroK Date: Wed, 3 Jan 2018 19:23:58 +0200 Subject: [PATCH] Fixes #3294 TechDraw: Prevent scale changing Now scale number changing controls are disabled by default and enabled only in Custom Scale mode. Previously user was all time allowed to edit scale numerical values. But this had effect on the size of generated views in drawing page only when scale type was set to Custom. --- src/Mod/TechDraw/Gui/TaskProjGroup.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/Mod/TechDraw/Gui/TaskProjGroup.cpp b/src/Mod/TechDraw/Gui/TaskProjGroup.cpp index 72aed5b41a..f09d0e5cda 100644 --- a/src/Mod/TechDraw/Gui/TaskProjGroup.cpp +++ b/src/Mod/TechDraw/Gui/TaskProjGroup.cpp @@ -72,6 +72,16 @@ TaskProjGroup::TaskProjGroup(TechDraw::DrawProjGroup* featView, bool mode) : setFractionalScale(multiView->getScale()); ui->cmbScaleType->setCurrentIndex(multiView->ScaleType.getValue()); + + //Allow or prevent scale changing initially + if (multiView->ScaleType.isValue("Custom")) { + ui->sbScaleNum->setEnabled(true); + ui->sbScaleDen->setEnabled(true); + } + else { + ui->sbScaleNum->setEnabled(false); + ui->sbScaleDen->setEnabled(false); + } // Initially toggle view checkboxes if needed setupViewCheckboxes(true); @@ -229,6 +239,10 @@ void TaskProjGroup::scaleTypeChanged(int index) if(blockUpdate) return; + //defaults to prevent scale changing + ui->sbScaleNum->setEnabled(false); + ui->sbScaleDen->setEnabled(false); + if(index == 0) { // Document Scale Type Gui::Command::doCommand(Gui::Command::Doc, "App.activeDocument().%s.ScaleType = '%s'", multiView->getNameInDocument() @@ -241,6 +255,9 @@ void TaskProjGroup::scaleTypeChanged(int index) // Custom Scale Type Gui::Command::doCommand(Gui::Command::Doc, "App.activeDocument().%s.ScaleType = '%s'", multiView->getNameInDocument() , "Custom"); + ui->sbScaleNum->setEnabled(true); + ui->sbScaleDen->setEnabled(true); + int a = ui->sbScaleNum->value(); int b = ui->sbScaleDen->value(); double scale = (double) a / (double) b;