diff --git a/app/tools/gimpbucketfilltool.c b/app/tools/gimpbucketfilltool.c index dffbc0d056..eee560d6b0 100644 --- a/app/tools/gimpbucketfilltool.c +++ b/app/tools/gimpbucketfilltool.c @@ -371,6 +371,7 @@ gimp_bucket_fill_tool_start (GimpBucketFillTool *tool, tool->priv->filter = gimp_drawable_filter_new (drawables->data, _("Bucket fill"), tool->priv->graph, GIMP_ICON_TOOL_BUCKET_FILL); + g_object_set (tool->priv->filter, "temporary", TRUE, NULL); gimp_drawable_filter_set_region (tool->priv->filter, GIMP_FILTER_REGION_DRAWABLE); diff --git a/app/tools/gimpgradienttool.c b/app/tools/gimpgradienttool.c index c8dcd917a1..f478cebd39 100644 --- a/app/tools/gimpgradienttool.c +++ b/app/tools/gimpgradienttool.c @@ -1105,6 +1105,7 @@ gimp_gradient_tool_create_filter (GimpGradientTool *gradient_tool, C_("undo-type", "Gradient"), gradient_tool->graph, GIMP_ICON_TOOL_GRADIENT); + g_object_set (gradient_tool->filter, "temporary", TRUE, NULL); gimp_drawable_filter_set_region (gradient_tool->filter, GIMP_FILTER_REGION_DRAWABLE); diff --git a/app/tools/gimpseamlessclonetool.c b/app/tools/gimpseamlessclonetool.c index f6d1cd7975..64b69b2459 100644 --- a/app/tools/gimpseamlessclonetool.c +++ b/app/tools/gimpseamlessclonetool.c @@ -755,6 +755,7 @@ gimp_seamless_clone_tool_create_filter (GimpSeamlessCloneTool *sc, _("Seamless Clone"), sc->render_node, GIMP_ICON_TOOL_SEAMLESS_CLONE); + g_object_set (sc->filter, "temporary", TRUE, NULL); gimp_drawable_filter_set_region (sc->filter, GIMP_FILTER_REGION_DRAWABLE); diff --git a/app/tools/gimptransformgridtool.c b/app/tools/gimptransformgridtool.c index 06fbc8b366..8fb13d12eb 100644 --- a/app/tools/gimptransformgridtool.c +++ b/app/tools/gimptransformgridtool.c @@ -2040,11 +2040,12 @@ filter_new (GimpTransformGridTool *tg_tool, gimp_gegl_node_set_underlying_operation (node, filter->transform_node); - filter->filter = gimp_drawable_filter_new ( - drawable, - GIMP_TRANSFORM_TOOL_GET_CLASS (tg_tool)->undo_desc, - node, - gimp_tool_get_icon_name (GIMP_TOOL (tg_tool))); + filter->filter = + gimp_drawable_filter_new (drawable, + GIMP_TRANSFORM_TOOL_GET_CLASS (tg_tool)->undo_desc, + node, + gimp_tool_get_icon_name (GIMP_TOOL (tg_tool))); + g_object_set (filter->filter, "temporary", TRUE, NULL); gimp_drawable_filter_set_clip (filter->filter, FALSE); gimp_drawable_filter_set_override_constraints (filter->filter, TRUE); diff --git a/app/tools/gimpwarptool.c b/app/tools/gimpwarptool.c index 3a6f2bad2d..eb20e18ed6 100644 --- a/app/tools/gimpwarptool.c +++ b/app/tools/gimpwarptool.c @@ -1091,6 +1091,7 @@ gimp_warp_tool_create_filter (GimpWarpTool *wt, _("Warp transform"), wt->graph, GIMP_ICON_TOOL_WARP); + g_object_set (wt->filter, "temporary", TRUE, NULL); gimp_drawable_filter_set_region (wt->filter, GIMP_FILTER_REGION_DRAWABLE); diff --git a/app/widgets/gimpitemtreeview.c b/app/widgets/gimpitemtreeview.c index fea5f588cd..a83fa79dca 100644 --- a/app/widgets/gimpitemtreeview.c +++ b/app/widgets/gimpitemtreeview.c @@ -3003,6 +3003,7 @@ gimp_item_tree_view_filters_changed (GimpItem *item, GList *filter_list = NULL; gint n_filters = 0; gboolean fs_disabled = FALSE; + gboolean temporary_only = TRUE; iter = gimp_container_view_lookup (container_view, (GimpViewable *) item); @@ -3016,12 +3017,26 @@ gimp_item_tree_view_filters_changed (GimpItem *item, filter_list = g_list_previous (filter_list)) { if (GIMP_IS_DRAWABLE_FILTER (filter_list->data)) - n_filters++; + { + n_filters++; + + if (temporary_only) + g_object_get (filter_list->data, + "temporary", &temporary_only, + NULL); + } else - fs_disabled = TRUE; + { + fs_disabled = TRUE; + } } } + /* Don't show icon if we only have a temporary filter + * like a tool-based filter */ + if (temporary_only) + n_filters = 0; + if (n_filters == 0 || fs_disabled) view->priv->effects_filter = NULL;