diff --git a/app/display/gimpdisplayshell-filter-dialog.c b/app/display/gimpdisplayshell-filter-dialog.c index bdaa9be309..cdd9fdc055 100644 --- a/app/display/gimpdisplayshell-filter-dialog.c +++ b/app/display/gimpdisplayshell-filter-dialog.c @@ -25,10 +25,8 @@ #include "display-types.h" -#include "config/gimpcoreconfig.h" - #include "core/gimp.h" -#include "core/gimpimage.h" +#include "core/gimpviewable.h" #include "widgets/gimpcolordisplayeditor.h" #include "widgets/gimphelp-ids.h" @@ -65,15 +63,13 @@ static void gimp_display_shell_filter_dialog_free (ColorDisplayDialog *cdd); GtkWidget * gimp_display_shell_filter_dialog_new (GimpDisplayShell *shell) { - GimpDisplayConfig *config; GimpImage *image; ColorDisplayDialog *cdd; GtkWidget *editor; g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL); - config = shell->display->config; - image = gimp_display_get_image (shell->display); + image = gimp_display_get_image (shell->display); cdd = g_slice_new0 (ColorDisplayDialog); @@ -123,7 +119,7 @@ gimp_display_shell_filter_dialog_new (GimpDisplayShell *shell) } editor = gimp_color_display_editor_new (shell->filter_stack, - GIMP_CORE_CONFIG (config)->color_management, + gimp_display_shell_get_color_config (shell), GIMP_COLOR_MANAGED (shell)); gtk_container_set_border_width (GTK_CONTAINER (editor), 12); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (cdd->dialog))), diff --git a/app/display/gimpdisplayshell-filter.c b/app/display/gimpdisplayshell-filter.c index b1fa58358e..bb69b3b85c 100644 --- a/app/display/gimpdisplayshell-filter.c +++ b/app/display/gimpdisplayshell-filter.c @@ -20,13 +20,10 @@ #include #include -#include "libgimpconfig/gimpconfig.h" #include "libgimpwidgets/gimpwidgets.h" #include "display-types.h" -#include "config/gimpcoreconfig.h" - #include "gimpdisplayshell.h" #include "gimpdisplayshell-expose.h" #include "gimpdisplayshell-filter.h" @@ -83,11 +80,9 @@ gimp_display_shell_has_filter (GimpDisplayShell *shell) } GimpColorDisplayStack * -gimp_display_shell_filter_new (GimpDisplayShell *shell, - GimpColorConfig *config) +gimp_display_shell_filter_new (GimpDisplayShell *shell) { g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL); - g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), NULL); #if 0 /* disabled because we use gimpdisplayshell-profile now, keep diff --git a/app/display/gimpdisplayshell-filter.h b/app/display/gimpdisplayshell-filter.h index af22c3d96d..aa490271d2 100644 --- a/app/display/gimpdisplayshell-filter.h +++ b/app/display/gimpdisplayshell-filter.h @@ -25,8 +25,7 @@ void gimp_display_shell_filter_set (GimpDisplayShell *shell, gboolean gimp_display_shell_has_filter (GimpDisplayShell *shell); GimpColorDisplayStack * - gimp_display_shell_filter_new (GimpDisplayShell *shell, - GimpColorConfig *config); + gimp_display_shell_filter_new (GimpDisplayShell *shell); #endif /* __GIMP_DISPLAY_SHELL_FILTER_H__ */ diff --git a/app/display/gimpdisplayshell-layer-select.c b/app/display/gimpdisplayshell-layer-select.c index 55a69fc690..0b52dcb503 100644 --- a/app/display/gimpdisplayshell-layer-select.c +++ b/app/display/gimpdisplayshell-layer-select.c @@ -33,6 +33,7 @@ #include "core/gimplayer.h" #include "widgets/gimpview.h" +#include "widgets/gimpviewrenderer.h" #include "gimpdisplay.h" #include "gimpdisplayshell.h" @@ -54,16 +55,17 @@ typedef struct /* local function prototypes */ -static LayerSelect * layer_select_new (GimpImage *image, - GimpLayer *layer, - gint view_size); -static void layer_select_destroy (LayerSelect *layer_select, - guint32 time); -static void layer_select_advance (LayerSelect *layer_select, - gint move); -static gboolean layer_select_events (GtkWidget *widget, - GdkEvent *event, - LayerSelect *layer_select); +static LayerSelect * layer_select_new (GimpDisplayShell *shell, + GimpImage *image, + GimpLayer *layer, + gint view_size); +static void layer_select_destroy (LayerSelect *layer_select, + guint32 time); +static void layer_select_advance (LayerSelect *layer_select, + gint move); +static gboolean layer_select_events (GtkWidget *widget, + GdkEvent *event, + LayerSelect *layer_select); /* public functions */ @@ -86,7 +88,7 @@ gimp_display_shell_layer_select_init (GimpDisplayShell *shell, if (! layer) return; - layer_select = layer_select_new (image, layer, + layer_select = layer_select_new (shell, image, layer, image->gimp->config->layer_preview_size); layer_select_advance (layer_select, move); @@ -102,9 +104,10 @@ gimp_display_shell_layer_select_init (GimpDisplayShell *shell, /* private functions */ static LayerSelect * -layer_select_new (GimpImage *image, - GimpLayer *layer, - gint view_size) +layer_select_new (GimpDisplayShell *shell, + GimpImage *image, + GimpLayer *layer, + gint view_size) { LayerSelect *layer_select; GtkWidget *frame1; @@ -155,6 +158,8 @@ layer_select_new (GimpImage *image, GIMP_TYPE_VIEW, GIMP_TYPE_LAYER, view_size, 1, FALSE); + gimp_view_renderer_set_color_config (GIMP_VIEW (layer_select->view)->renderer, + gimp_display_shell_get_color_config (shell)); gimp_view_set_viewable (GIMP_VIEW (layer_select->view), GIMP_VIEWABLE (layer)); gtk_container_add (GTK_CONTAINER (alignment), layer_select->view); diff --git a/app/display/gimpdisplayshell-profile.c b/app/display/gimpdisplayshell-profile.c index 3bb55570ab..745b7add88 100644 --- a/app/display/gimpdisplayshell-profile.c +++ b/app/display/gimpdisplayshell-profile.c @@ -30,8 +30,6 @@ #include "display-types.h" -#include "config/gimpcoreconfig.h" - #include "gegl/gimp-babl.h" #include "core/gimpimage.h" @@ -70,7 +68,6 @@ void gimp_display_shell_profile_update (GimpDisplayShell *shell) { GimpImage *image; - GimpColorConfig *config; GimpColorProfile *src_profile; const Babl *src_format; const Babl *dest_format; @@ -84,8 +81,6 @@ gimp_display_shell_profile_update (GimpDisplayShell *shell) if (! image) return; - config = GIMP_CORE_CONFIG (shell->display->config)->color_management; - src_profile = gimp_color_managed_get_color_profile (GIMP_COLOR_MANAGED (shell)); if (! src_profile) @@ -112,7 +107,7 @@ gimp_display_shell_profile_update (GimpDisplayShell *shell) shell->profile_transform = gimp_widget_get_color_transform (gtk_widget_get_toplevel (GTK_WIDGET (shell)), - config, + gimp_display_shell_get_color_config (shell), src_profile, &src_format, &dest_format); diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c index 5aa24782fa..4a777e2be7 100644 --- a/app/display/gimpdisplayshell.c +++ b/app/display/gimpdisplayshell.c @@ -405,6 +405,8 @@ gimp_display_shell_constructed (GObject *object) config = shell->display->config; image = gimp_display_get_image (shell->display); + shell->color_config = g_object_ref (GIMP_CORE_CONFIG (config)->color_management); + if (image) { image_width = gimp_image_get_width (image); @@ -745,10 +747,9 @@ gimp_display_shell_constructed (GObject *object) gtk_widget_show (GTK_WIDGET (shell->canvas)); - /* add display filter for color management */ + /* add display filters */ - filter = gimp_display_shell_filter_new (shell, - GIMP_CORE_CONFIG (config)->color_management); + filter = gimp_display_shell_filter_new (shell); if (filter) { @@ -816,6 +817,12 @@ gimp_display_shell_dispose (GObject *object) shell->checkerboard = NULL; } + if (shell->color_config) + { + g_object_unref (shell->color_config); + shell->color_config = NULL; + } + gimp_display_shell_profile_dispose (shell); if (shell->filter_buffer) @@ -1377,6 +1384,14 @@ gimp_display_shell_get_statusbar (GimpDisplayShell *shell) return GIMP_STATUSBAR (shell->statusbar); } +GimpColorConfig * +gimp_display_shell_get_color_config (GimpDisplayShell *shell) +{ + g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL); + + return shell->color_config; +} + void gimp_display_shell_present (GimpDisplayShell *shell) { diff --git a/app/display/gimpdisplayshell.h b/app/display/gimpdisplayshell.h index 33692bc12c..8310baf2cc 100644 --- a/app/display/gimpdisplayshell.h +++ b/app/display/gimpdisplayshell.h @@ -150,6 +150,8 @@ struct _GimpDisplayShell GtkWidget *nav_popup; /* navigation popup */ GtkWidget *grid_dialog; /* grid configuration dialog */ + GimpColorConfig *color_config; /* color management settings */ + GimpColorTransform profile_transform; const Babl *profile_src_format; const Babl *profile_dest_format; @@ -253,6 +255,9 @@ void gimp_display_shell_move_overlay (GimpDisplayShell *shell, GimpImageWindow * gimp_display_shell_get_window (GimpDisplayShell *shell); GimpStatusbar * gimp_display_shell_get_statusbar (GimpDisplayShell *shell); +GimpColorConfig * gimp_display_shell_get_color_config + (GimpDisplayShell *shell); + void gimp_display_shell_present (GimpDisplayShell *shell); void gimp_display_shell_reconnect (GimpDisplayShell *shell); diff --git a/app/display/gimpimagewindow.c b/app/display/gimpimagewindow.c index 9914b241aa..47baf9151c 100644 --- a/app/display/gimpimagewindow.c +++ b/app/display/gimpimagewindow.c @@ -54,6 +54,7 @@ #include "widgets/gimptoolbox.h" #include "widgets/gimpuimanager.h" #include "widgets/gimpview.h" +#include "widgets/gimpviewrenderer.h" #include "widgets/gimpwidgets-utils.h" #include "gimpdisplay.h" @@ -2297,6 +2298,8 @@ gimp_image_window_create_tab_label (GimpImageWindow *window, GIMP_TYPE_VIEW, GIMP_TYPE_IMAGE, GIMP_VIEW_SIZE_LARGE, 0, FALSE); gtk_widget_set_size_request (view, GIMP_VIEW_SIZE_LARGE, -1); + gimp_view_renderer_set_color_config (GIMP_VIEW (view)->renderer, + gimp_display_shell_get_color_config (shell)); gtk_box_pack_start (GTK_BOX (hbox), view, FALSE, FALSE, 0); gtk_widget_show (view); diff --git a/app/display/gimpnavigationeditor.c b/app/display/gimpnavigationeditor.c index 33a2e61c26..02390d25d9 100644 --- a/app/display/gimpnavigationeditor.c +++ b/app/display/gimpnavigationeditor.c @@ -365,6 +365,8 @@ gimp_navigation_editor_new_private (GimpMenuFactory *menu_factory, view->renderer->border_width); gimp_view_renderer_set_context (view->renderer, gimp_get_user_context (gimp)); + gimp_view_renderer_set_color_config (view->renderer, + gimp_display_shell_get_color_config (shell)); gimp_navigation_editor_set_shell (editor, shell);