From dfd91f3ea2673e33bcdd2ed330c3af58af456969 Mon Sep 17 00:00:00 2001 From: Uwe Date: Sun, 27 Mar 2022 00:57:41 +0100 Subject: [PATCH] [FEM] fix activation logic of post filters only activate them when sensible/possible --- src/Mod/Fem/Gui/Command.cpp | 52 ++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/src/Mod/Fem/Gui/Command.cpp b/src/Mod/Fem/Gui/Command.cpp index f99b7e33b5..92e44c7fbd 100644 --- a/src/Mod/Fem/Gui/Command.cpp +++ b/src/Mod/Fem/Gui/Command.cpp @@ -1255,7 +1255,19 @@ void CmdFemPostClipFilter::activated(int) bool CmdFemPostClipFilter::isActive(void) { - return hasActiveDocument(); + // only activate if a result is either a post pipeline, scalar, cut or warp filter or itself + if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else + return false; } @@ -1281,7 +1293,19 @@ void CmdFemPostCutFilter::activated(int) bool CmdFemPostCutFilter::isActive(void) { - return hasActiveDocument(); + // only activate if a result is either a post pipeline, scalar, clip or warp filter or itself + if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else + return false; } @@ -1418,7 +1442,17 @@ void CmdFemPostScalarClipFilter::activated(int) bool CmdFemPostScalarClipFilter::isActive(void) { - return hasActiveDocument(); + // only activate if a result is either a post pipeline, clip, cut or warp filter + if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else + return false; } @@ -1444,7 +1478,17 @@ void CmdFemPostWarpVectorFilter::activated(int) bool CmdFemPostWarpVectorFilter::isActive(void) { - return hasActiveDocument(); + // only activate if a result is either a post pipeline, scalar, clip or cut filter + if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else if (getSelection().getObjectsOfType().size() == 1) + return true; + else + return false; }