From a1aa17943633e5cfd6b09184f0ee4f43b4093c2b Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Sat, 1 Jun 2019 14:19:05 +0200 Subject: [PATCH] Issue #2643 - Conversion to grayscale fails with artifacts Connect GimpDisplayShell to GimpImage::mode-changed and update its cached color transforms. Also get rid of a duplicate conection to GimpImage::precision-changed. --- app/display/gimpdisplayshell-handlers.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/app/display/gimpdisplayshell-handlers.c b/app/display/gimpdisplayshell-handlers.c index 54681be72b..9d7be6f76a 100644 --- a/app/display/gimpdisplayshell-handlers.c +++ b/app/display/gimpdisplayshell-handlers.c @@ -120,6 +120,8 @@ static void gimp_display_shell_sample_point_move_handler (GimpImage *i GimpDisplayShell *shell); static void gimp_display_shell_invalidate_preview_handler (GimpImage *image, GimpDisplayShell *shell); +static void gimp_display_shell_mode_changed_handler (GimpImage *image, + GimpDisplayShell *shell); static void gimp_display_shell_precision_changed_handler (GimpImage *image, GimpDisplayShell *shell); static void gimp_display_shell_profile_changed_handler (GimpColorManaged *image, @@ -262,15 +264,15 @@ gimp_display_shell_connect (GimpDisplayShell *shell) g_signal_connect (image, "invalidate-preview", G_CALLBACK (gimp_display_shell_invalidate_preview_handler), shell); + g_signal_connect (image, "mode-changed", + G_CALLBACK (gimp_display_shell_mode_changed_handler), + shell); g_signal_connect (image, "precision-changed", G_CALLBACK (gimp_display_shell_precision_changed_handler), shell); g_signal_connect (image, "profile-changed", G_CALLBACK (gimp_display_shell_profile_changed_handler), shell); - g_signal_connect (image, "precision-changed", - G_CALLBACK (gimp_display_shell_precision_changed_handler), - shell); g_signal_connect (image, "saved", G_CALLBACK (gimp_display_shell_saved_handler), shell); @@ -482,6 +484,9 @@ gimp_display_shell_disconnect (GimpDisplayShell *shell) g_signal_handlers_disconnect_by_func (image, gimp_display_shell_precision_changed_handler, shell); + g_signal_handlers_disconnect_by_func (image, + gimp_display_shell_mode_changed_handler, + shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_invalidate_preview_handler, shell); @@ -845,6 +850,13 @@ gimp_display_shell_invalidate_preview_handler (GimpImage *image, gimp_display_shell_icon_update (shell); } +static void +gimp_display_shell_mode_changed_handler (GimpImage *image, + GimpDisplayShell *shell) +{ + gimp_display_shell_profile_update (shell); +} + static void gimp_display_shell_precision_changed_handler (GimpImage *image, GimpDisplayShell *shell)