104
98
GimpViewable *dest_viewable,
105
99
GtkTreeViewDropPosition drop_pos);
100
static void gimp_layer_tree_view_drop_component (GimpContainerTreeView *tree_view,
102
GimpChannelType component,
103
GimpViewable *dest_viewable,
104
GtkTreeViewDropPosition drop_pos);
105
static void gimp_layer_tree_view_drop_pixbuf (GimpContainerTreeView *tree_view,
107
GimpViewable *dest_viewable,
108
GtkTreeViewDropPosition drop_pos);
107
110
static void gimp_layer_tree_view_set_image (GimpItemTreeView *view,
109
112
static GimpItem * gimp_layer_tree_view_item_new (GimpImage *image);
111
114
static void gimp_layer_tree_view_floating_selection_changed
113
116
GimpLayerTreeView *view);
115
118
static void gimp_layer_tree_view_paint_mode_menu_callback
116
119
(GtkWidget *widget,
117
120
GimpLayerTreeView *view);
118
static void gimp_layer_tree_view_preserve_button_toggled
120
GimpLayerTreeView *view);
121
121
static void gimp_layer_tree_view_opacity_scale_changed
122
122
(GtkAdjustment *adj,
123
123
GimpLayerTreeView *view);
124
static void gimp_layer_tree_view_lock_alpha_button_toggled
126
GimpLayerTreeView *view);
125
128
static void gimp_layer_tree_view_layer_signal_handler
126
129
(GimpLayer *layer,
158
161
GimpLayerTreeView *view);
161
static GimpDrawableTreeViewClass *parent_class = NULL;
164
G_DEFINE_TYPE_WITH_CODE (GimpLayerTreeView, gimp_layer_tree_view,
165
GIMP_TYPE_DRAWABLE_TREE_VIEW,
166
G_IMPLEMENT_INTERFACE (GIMP_TYPE_CONTAINER_VIEW,
167
gimp_layer_tree_view_view_iface_init))
169
#define parent_class gimp_layer_tree_view_parent_class
162
171
static GimpContainerViewInterface *parent_view_iface = NULL;
166
gimp_layer_tree_view_get_type (void)
168
static GType view_type = 0;
172
static const GTypeInfo view_info =
174
sizeof (GimpLayerTreeViewClass),
175
NULL, /* base_init */
176
NULL, /* base_finalize */
177
(GClassInitFunc) gimp_layer_tree_view_class_init,
178
NULL, /* class_finalize */
179
NULL, /* class_data */
180
sizeof (GimpLayerTreeView),
182
(GInstanceInitFunc) gimp_layer_tree_view_init,
185
static const GInterfaceInfo view_iface_info =
187
(GInterfaceInitFunc) gimp_layer_tree_view_view_iface_init,
188
NULL, /* iface_finalize */
189
NULL /* iface_data */
192
view_type = g_type_register_static (GIMP_TYPE_DRAWABLE_TREE_VIEW,
196
g_type_add_interface_static (view_type, GIMP_TYPE_CONTAINER_VIEW,
204
175
gimp_layer_tree_view_class_init (GimpLayerTreeViewClass *klass)
279
260
tree_view->model_columns[tree_view->n_model_columns] = G_TYPE_BOOLEAN;
280
261
tree_view->n_model_columns++;
282
view->options_box = gtk_table_new (2, 3, FALSE);
263
view->options_box = gtk_table_new (3, 3, FALSE);
283
264
gtk_table_set_col_spacings (GTK_TABLE (view->options_box), 2);
284
265
gtk_box_pack_start (GTK_BOX (view), view->options_box, FALSE, FALSE, 0);
285
266
gtk_box_reorder_child (GTK_BOX (view), view->options_box, 0);
286
267
gtk_widget_show (view->options_box);
288
hbox = gtk_hbox_new (FALSE, 6);
290
269
/* Paint mode menu */
292
view->paint_mode_menu =
293
gimp_paint_mode_menu_new (G_CALLBACK (gimp_layer_tree_view_paint_mode_menu_callback),
297
gtk_box_pack_start (GTK_BOX (hbox), view->paint_mode_menu, TRUE, TRUE, 0);
298
gtk_widget_show (view->paint_mode_menu);
271
view->paint_mode_menu = gimp_paint_mode_menu_new (FALSE, FALSE);
272
gimp_table_attach_aligned (GTK_TABLE (view->options_box), 0, 0,
273
_("Mode:"), 0.0, 0.5,
274
view->paint_mode_menu, 2, FALSE);
276
gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (view->paint_mode_menu),
278
G_CALLBACK (gimp_layer_tree_view_paint_mode_menu_callback),
300
281
gimp_help_set_help_data (view->paint_mode_menu, NULL,
301
282
GIMP_HELP_LAYER_DIALOG_PAINT_MODE_MENU);
303
/* Preserve transparency toggle */
305
view->preserve_trans_toggle = toggle = gtk_check_button_new ();
306
gtk_box_pack_end (GTK_BOX (hbox), toggle, FALSE, FALSE, 0);
307
gtk_widget_show (toggle);
309
g_signal_connect (toggle, "toggled",
310
G_CALLBACK (gimp_layer_tree_view_preserve_button_toggled),
313
gimp_help_set_help_data (toggle, _("Keep transparency"),
314
GIMP_HELP_LAYER_DIALOG_KEEP_TRANS_BUTTON);
316
gtk_widget_style_get (GTK_WIDGET (view),
317
"button_icon_size", &icon_size,
320
image = gtk_image_new_from_stock (GIMP_STOCK_TRANSPARENCY, icon_size);
321
gtk_container_add (GTK_CONTAINER (toggle), image);
322
gtk_widget_show (image);
324
gimp_table_attach_aligned (GTK_TABLE (view->options_box), 0, 0,
325
_("Mode:"), 0.0, 0.5,
328
284
/* Opacity scale */
330
286
view->opacity_adjustment =
336
292
GIMP_HELP_LAYER_DIALOG_OPACITY_SCALE));
338
g_signal_connect (view->opacity_adjustment, "value_changed",
294
g_signal_connect (view->opacity_adjustment, "value-changed",
339
295
G_CALLBACK (gimp_layer_tree_view_opacity_scale_changed),
298
/* Lock alpha toggle */
300
hbox = gtk_hbox_new (FALSE, 6);
302
view->lock_alpha_toggle = gtk_check_button_new ();
303
gtk_box_pack_start (GTK_BOX (hbox), view->lock_alpha_toggle, FALSE, FALSE, 0);
304
gtk_widget_show (view->lock_alpha_toggle);
306
g_signal_connect (view->lock_alpha_toggle, "toggled",
307
G_CALLBACK (gimp_layer_tree_view_lock_alpha_button_toggled),
310
gimp_help_set_help_data (view->lock_alpha_toggle, _("Lock alpha channel"),
311
GIMP_HELP_LAYER_DIALOG_LOCK_ALPHA_BUTTON);
313
gtk_widget_style_get (GTK_WIDGET (view),
314
"button-icon-size", &icon_size,
317
image = gtk_image_new_from_stock (GIMP_STOCK_TRANSPARENCY, icon_size);
318
gtk_container_add (GTK_CONTAINER (view->lock_alpha_toggle), image);
319
gtk_widget_show (image);
321
gimp_table_attach_aligned (GTK_TABLE (view->options_box), 0, 2,
322
_("Lock:"), 0.0, 0.5,
342
325
gtk_widget_set_sensitive (view->options_box, FALSE);
344
327
view->italic_attrs = pango_attr_list_new ();
406
379
G_CALLBACK (gimp_layer_tree_view_mask_clicked),
409
gimp_dnd_uri_list_dest_add (GTK_WIDGET (tree_view->view),
411
gimp_dnd_color_dest_add (GTK_WIDGET (tree_view->view),
413
gimp_dnd_viewable_dest_add (GTK_WIDGET (tree_view->view), GIMP_TYPE_PATTERN,
382
gimp_dnd_uri_list_dest_add (GTK_WIDGET (tree_view->view),
384
gimp_dnd_component_dest_add (GTK_WIDGET (tree_view->view),
386
gimp_dnd_viewable_dest_add (GTK_WIDGET (tree_view->view), GIMP_TYPE_CHANNEL,
388
gimp_dnd_viewable_dest_add (GTK_WIDGET (tree_view->view), GIMP_TYPE_LAYER_MASK,
390
gimp_dnd_pixbuf_dest_add (GTK_WIDGET (tree_view->view),
416
393
/* hide basically useless edit button */
417
394
gtk_widget_hide (GIMP_ITEM_TREE_VIEW (layer_view)->edit_button);
419
layer_view->anchor_button =
420
gimp_editor_add_action_button (GIMP_EDITOR (layer_view), "layers",
421
"layers-anchor", NULL);
396
button = gimp_editor_add_action_button (GIMP_EDITOR (layer_view), "layers",
397
"layers-anchor", NULL);
422
398
gimp_container_view_enable_dnd (GIMP_CONTAINER_VIEW (layer_view),
423
GTK_BUTTON (layer_view->anchor_button),
424
400
GIMP_TYPE_LAYER);
425
401
gtk_box_reorder_child (GTK_BOX (GIMP_EDITOR (layer_view)->button_box),
426
layer_view->anchor_button, 5);
532
507
layer_view->mode_changed_handler_id =
533
gimp_container_add_handler (container, "mode_changed",
508
gimp_container_add_handler (container, "mode-changed",
534
509
G_CALLBACK (gimp_layer_tree_view_layer_signal_handler),
536
511
layer_view->opacity_changed_handler_id =
537
gimp_container_add_handler (container, "opacity_changed",
512
gimp_container_add_handler (container, "opacity-changed",
538
513
G_CALLBACK (gimp_layer_tree_view_layer_signal_handler),
540
layer_view->preserve_trans_changed_handler_id =
541
gimp_container_add_handler (container, "preserve_trans_changed",
515
layer_view->lock_alpha_changed_handler_id =
516
gimp_container_add_handler (container, "lock-alpha-changed",
542
517
G_CALLBACK (gimp_layer_tree_view_layer_signal_handler),
544
519
layer_view->mask_changed_handler_id =
545
gimp_container_add_handler (container, "mask_changed",
520
gimp_container_add_handler (container, "mask-changed",
546
521
G_CALLBACK (gimp_layer_tree_view_mask_changed),
548
523
layer_view->alpha_changed_handler_id =
549
gimp_container_add_handler (container, "alpha_changed",
524
gimp_container_add_handler (container, "alpha-changed",
550
525
G_CALLBACK (gimp_layer_tree_view_alpha_changed),
531
gimp_layer_tree_view_set_context (GimpContainerView *view,
532
GimpContext *context)
534
GimpContainerTreeView *tree_view = GIMP_CONTAINER_TREE_VIEW (view);
535
GimpLayerTreeView *layer_view = GIMP_LAYER_TREE_VIEW (view);
537
parent_view_iface->set_context (view, context);
539
if (tree_view->model)
544
for (iter_valid = gtk_tree_model_get_iter_first (tree_view->model, &iter);
546
iter_valid = gtk_tree_model_iter_next (tree_view->model, &iter))
548
GimpViewRenderer *renderer;
550
gtk_tree_model_get (tree_view->model, &iter,
551
layer_view->model_column_mask, &renderer,
556
gimp_view_renderer_set_context (renderer, context);
557
g_object_unref (renderer);
556
564
gimp_layer_tree_view_insert_item (GimpContainerView *view,
557
565
GimpViewable *viewable,
612
gimp_layer_tree_view_set_preview_size (GimpContainerView *view)
620
gimp_layer_tree_view_set_view_size (GimpContainerView *view)
614
622
GimpContainerTreeView *tree_view = GIMP_CONTAINER_TREE_VIEW (view);
615
GimpLayerTreeView *layer_view = GIMP_LAYER_TREE_VIEW (view);
621
preview_size = gimp_container_view_get_preview_size (view, &border_width);
623
for (iter_valid = gtk_tree_model_get_iter_first (tree_view->model, &iter);
625
iter_valid = gtk_tree_model_iter_next (tree_view->model, &iter))
624
if (tree_view->model)
627
GimpViewRenderer *renderer;
629
gtk_tree_model_get (tree_view->model, &iter,
630
layer_view->model_column_mask, &renderer,
626
GimpLayerTreeView *layer_view = GIMP_LAYER_TREE_VIEW (view);
632
view_size = gimp_container_view_get_view_size (view, &border_width);
634
for (iter_valid = gtk_tree_model_get_iter_first (tree_view->model, &iter);
636
iter_valid = gtk_tree_model_iter_next (tree_view->model, &iter))
635
gimp_view_renderer_set_size (renderer, preview_size, border_width);
636
g_object_unref (renderer);
638
GimpViewRenderer *renderer;
640
gtk_tree_model_get (tree_view->model, &iter,
641
layer_view->model_column_mask, &renderer,
646
gimp_view_renderer_set_size (renderer, view_size, border_width);
647
g_object_unref (renderer);
640
parent_view_iface->set_preview_size (view);
652
parent_view_iface->set_view_size (view);
652
664
GtkTreeViewDropPosition *return_drop_pos,
653
665
GdkDragAction *return_drag_action)
667
/* If we are dropping a new layer, check if the destionation image
668
* has a floating selection.
655
670
if (src_type == GIMP_DND_TYPE_URI_LIST ||
656
671
src_type == GIMP_DND_TYPE_TEXT_PLAIN ||
657
672
src_type == GIMP_DND_TYPE_NETSCAPE_URL ||
658
GIMP_IS_LAYER (src_viewable))
673
src_type == GIMP_DND_TYPE_COMPONENT ||
674
src_type == GIMP_DND_TYPE_PIXBUF ||
675
GIMP_IS_DRAWABLE (src_viewable))
660
GimpLayer *dest_layer = GIMP_LAYER (dest_viewable);
661
GimpImage *dest_image = gimp_item_get_image (GIMP_ITEM (dest_layer));
677
GimpImage *dest_image = GIMP_ITEM_TREE_VIEW (tree_view)->image;
663
679
if (gimp_image_floating_sel (dest_image))
666
if (! gimp_drawable_has_alpha (GIMP_DRAWABLE (dest_layer)) &&
667
drop_pos == GTK_TREE_VIEW_DROP_AFTER)
670
if (GIMP_IS_LAYER (src_viewable))
672
GimpLayer *src_layer = GIMP_LAYER (src_viewable);
673
GimpImage *src_image = gimp_item_get_image (GIMP_ITEM (src_layer));
675
if (src_image == dest_image &&
676
! gimp_drawable_has_alpha (GIMP_DRAWABLE (src_layer)))
681
if (GIMP_CONTAINER_TREE_VIEW_CLASS (parent_class)->drop_possible (tree_view,
689
if (return_drop_pos &&
690
(src_type == GIMP_DND_TYPE_COLOR ||
691
src_type == GIMP_DND_TYPE_PATTERN))
693
if (drop_pos == GTK_TREE_VIEW_DROP_BEFORE)
694
*return_drop_pos = GTK_TREE_VIEW_DROP_INTO_OR_BEFORE;
696
*return_drop_pos = GTK_TREE_VIEW_DROP_INTO_OR_AFTER;
706
gimp_layer_tree_view_drop_viewable (GimpContainerTreeView *view,
707
GimpViewable *src_viewable,
708
GimpViewable *dest_viewable,
709
GtkTreeViewDropPosition drop_pos)
711
if (GIMP_IS_PATTERN (src_viewable))
713
gimp_drawable_bucket_fill_full (GIMP_DRAWABLE (dest_viewable),
714
GIMP_PATTERN_BUCKET_FILL,
715
GIMP_NORMAL_MODE, GIMP_OPACITY_OPAQUE,
716
FALSE, /* no seed fill */
717
FALSE, 0.0, FALSE, /* fill params */
718
0.0, 0.0, /* ignored */
719
NULL, GIMP_PATTERN (src_viewable));
720
gimp_image_flush (GIMP_ITEM_TREE_VIEW (view)->gimage);
724
GIMP_CONTAINER_TREE_VIEW_CLASS (parent_class)->drop_viewable (view,
683
return GIMP_CONTAINER_TREE_VIEW_CLASS (parent_class)->drop_possible (tree_view,
759
715
GimpViewable *dest_viewable,
760
716
GtkTreeViewDropPosition drop_pos)
762
GimpItemTreeView *item_view = GIMP_ITEM_TREE_VIEW (view);
763
GimpImage *gimage = item_view->gimage;
767
index = gimp_image_get_layer_index (gimage, GIMP_LAYER (dest_viewable));
769
if (drop_pos == GTK_TREE_VIEW_DROP_AFTER)
718
GimpItemTreeView *item_view = GIMP_ITEM_TREE_VIEW (view);
719
GimpContainerView *cont_view = GIMP_CONTAINER_VIEW (view);
720
GimpImage *image = item_view->image;
726
index = gimp_image_get_layer_index (image, GIMP_LAYER (dest_viewable));
728
if (drop_pos == GTK_TREE_VIEW_DROP_AFTER)
772
732
for (list = uri_list; list; list = g_list_next (list))
774
734
const gchar *uri = list->data;
775
GimpLayer *new_layer;
776
736
GimpPDBStatusType status;
777
737
GError *error = NULL;
779
new_layer = file_open_layer (gimage->gimp, item_view->context, NULL,
780
gimage, uri, &status, &error);
739
new_layers = file_open_layers (image->gimp,
740
gimp_container_view_get_context (cont_view),
743
uri, GIMP_RUN_INTERACTIVE, NULL,
784
GimpItem *new_item = GIMP_ITEM (new_layer);
788
width = gimp_image_get_width (gimage);
789
height = gimp_image_get_height (gimage);
791
gimp_item_offsets (new_item, &off_x, &off_y);
793
off_x = (width - gimp_item_width (new_item)) / 2 - off_x;
794
off_y = (height - gimp_item_height (new_item)) / 2 - off_y;
796
gimp_item_translate (new_item, off_x, off_y, FALSE);
798
gimp_image_add_layer (gimage, new_layer, index++);
748
gimp_image_add_layers (image, new_layers, index,
750
gimp_image_get_width (image),
751
gimp_image_get_height (image),
754
index += g_list_length (new_layers);
756
g_list_free (new_layers);
800
758
else if (status != GIMP_PDB_CANCEL)
802
gchar *filename = file_utils_uri_to_utf8_filename (uri);
760
gchar *filename = file_utils_uri_display_name (uri);
804
g_message (_("Opening '%s' failed:\n\n%s"),
805
filename, error->message);
762
gimp_message (image->gimp, NULL, GIMP_MESSAGE_ERROR,
763
_("Opening '%s' failed:\n\n%s"),
764
filename, error->message);
807
766
g_clear_error (&error);
808
767
g_free (filename);
812
gimp_image_flush (gimage);
771
gimp_image_flush (image);
775
gimp_layer_tree_view_drop_component (GimpContainerTreeView *tree_view,
776
GimpImage *src_image,
777
GimpChannelType component,
778
GimpViewable *dest_viewable,
779
GtkTreeViewDropPosition drop_pos)
781
GimpItemTreeView *item_view = GIMP_ITEM_TREE_VIEW (tree_view);
782
GimpChannel *channel;
789
index = gimp_image_get_layer_index (item_view->image,
790
GIMP_LAYER (dest_viewable));
792
if (drop_pos == GTK_TREE_VIEW_DROP_AFTER)
796
channel = gimp_channel_new_from_component (src_image, component, NULL, NULL);
798
new_item = gimp_item_convert (GIMP_ITEM (channel), item_view->image,
799
GIMP_TYPE_LAYER, TRUE);
801
g_object_unref (channel);
803
gimp_enum_get_value (GIMP_TYPE_CHANNEL_TYPE, component,
804
NULL, NULL, &desc, NULL);
805
gimp_object_take_name (GIMP_OBJECT (new_item),
806
g_strdup_printf (_("%s Channel Copy"), desc));
808
gimp_image_add_layer (item_view->image, GIMP_LAYER (new_item), index);
809
gimp_image_flush (item_view->image);
813
gimp_layer_tree_view_drop_pixbuf (GimpContainerTreeView *tree_view,
815
GimpViewable *dest_viewable,
816
GtkTreeViewDropPosition drop_pos)
818
GimpItemTreeView *item_view = GIMP_ITEM_TREE_VIEW (tree_view);
819
GimpImage *image = item_view->image;
820
GimpLayer *new_layer;
825
index = gimp_image_get_layer_index (image, GIMP_LAYER (dest_viewable));
827
if (drop_pos == GTK_TREE_VIEW_DROP_AFTER)
832
gimp_layer_new_from_pixbuf (pixbuf, image,
833
gimp_image_base_type_with_alpha (image),
835
GIMP_OPACITY_OPAQUE, GIMP_NORMAL_MODE);
837
gimp_image_add_layer (image, new_layer, index);
838
gimp_image_flush (image);
885
for (list = GIMP_LIST (gimage->layers)->list;
911
for (list = GIMP_LIST (image->layers)->list;
887
913
list = g_list_next (list))
889
915
GimpDrawable *drawable = list->data;
891
if (gimp_drawable_has_alpha (drawable))
893
iter = gimp_container_view_lookup (view,
894
(GimpViewable *) drawable);
917
iter = gimp_container_view_lookup (view, (GimpViewable *) drawable);
897
gtk_list_store_set (GTK_LIST_STORE (tree_view->model), iter,
898
tree_view->model_column_name_attributes,
920
gtk_list_store_set (GTK_LIST_STORE (tree_view->model), iter,
921
tree_view->model_column_name_attributes,
922
gimp_drawable_has_alpha (drawable) ?
923
NULL : layer_view->bold_attrs,
907
/* Paint Mode, Opacity and Preserve trans. callbacks */
930
/* Paint Mode, Opacity and Lock alpha callbacks */
909
932
#define BLOCK() \
910
933
g_signal_handlers_block_by_func (layer, \
919
942
gimp_layer_tree_view_paint_mode_menu_callback (GtkWidget *widget,
920
943
GimpLayerTreeView *view)
925
gimage = GIMP_ITEM_TREE_VIEW (view)->gimage;
927
layer = (GimpLayer *)
928
GIMP_ITEM_TREE_VIEW_GET_CLASS (view)->get_active_item (gimage);
946
GimpLayer *layer = NULL;
948
image = GIMP_ITEM_TREE_VIEW (view)->image;
951
layer = (GimpLayer *)
952
GIMP_ITEM_TREE_VIEW_GET_CLASS (view)->get_active_item (image);
932
GimpLayerModeEffects mode =
933
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
936
if (gimp_layer_get_mode (layer) != mode)
958
if (gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (widget),
960
gimp_layer_get_mode (layer) != (GimpLayerModeEffects) mode)
939
963
gboolean push_undo = TRUE;
941
965
/* compress layer mode undos */
942
undo = gimp_image_undo_can_compress (gimage, GIMP_TYPE_ITEM_UNDO,
966
undo = gimp_image_undo_can_compress (image, GIMP_TYPE_ITEM_UNDO,
943
967
GIMP_UNDO_LAYER_MODE);
945
969
if (undo && GIMP_ITEM_UNDO (undo)->item == GIMP_ITEM (layer))
946
970
push_undo = FALSE;
949
gimp_layer_set_mode (layer, mode, push_undo);
973
gimp_layer_set_mode (layer, (GimpLayerModeEffects) mode, push_undo);
952
gimp_image_flush (gimage);
976
gimp_image_flush (image);
955
gimp_undo_refresh_preview (undo);
979
gimp_undo_refresh_preview (undo, gimp_container_view_get_context (GIMP_CONTAINER_VIEW (view)));
961
gimp_layer_tree_view_preserve_button_toggled (GtkWidget *widget,
962
GimpLayerTreeView *view)
985
gimp_layer_tree_view_lock_alpha_button_toggled (GtkWidget *widget,
986
GimpLayerTreeView *view)
965
989
GimpLayer *layer;
967
gimage = GIMP_ITEM_TREE_VIEW (view)->gimage;
991
image = GIMP_ITEM_TREE_VIEW (view)->image;
969
993
layer = (GimpLayer *)
970
GIMP_ITEM_TREE_VIEW_GET_CLASS (view)->get_active_item (gimage);
994
GIMP_ITEM_TREE_VIEW_GET_CLASS (view)->get_active_item (image);
974
gboolean preserve_trans;
976
preserve_trans = GTK_TOGGLE_BUTTON (widget)->active;
978
if (gimp_layer_get_preserve_trans (layer) != preserve_trans)
1000
lock_alpha = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
1002
if (gimp_layer_get_lock_alpha (layer) != lock_alpha)
981
1005
gboolean push_undo = TRUE;
983
1007
/* compress opacity undos */
984
undo = gimp_image_undo_can_compress (gimage, GIMP_TYPE_ITEM_UNDO,
985
GIMP_UNDO_LAYER_PRESERVE_TRANS);
1008
undo = gimp_image_undo_can_compress (image, GIMP_TYPE_ITEM_UNDO,
1009
GIMP_UNDO_LAYER_LOCK_ALPHA);
987
1011
if (undo && GIMP_ITEM_UNDO (undo)->item == GIMP_ITEM (layer))
988
1012
push_undo = FALSE;
991
gimp_layer_set_preserve_trans (layer, preserve_trans, push_undo);
1015
gimp_layer_set_lock_alpha (layer, lock_alpha, push_undo);
994
gimp_image_flush (gimage);
1018
gimp_image_flush (image);
1065
1089
gimp_layer_tree_view_update_options (GimpLayerTreeView *view,
1066
1090
GimpLayer *layer)
1068
gimp_paint_mode_menu_set_history (GTK_OPTION_MENU (view->paint_mode_menu),
1071
if (layer->preserve_trans !=
1072
GTK_TOGGLE_BUTTON (view->preserve_trans_toggle)->active)
1092
BLOCK (view->paint_mode_menu,
1093
gimp_layer_tree_view_paint_mode_menu_callback);
1095
gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (view->paint_mode_menu),
1098
UNBLOCK (view->paint_mode_menu,
1099
gimp_layer_tree_view_paint_mode_menu_callback);
1101
if (layer->lock_alpha !=
1102
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (view->lock_alpha_toggle)))
1074
BLOCK (view->preserve_trans_toggle,
1075
gimp_layer_tree_view_preserve_button_toggled);
1077
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view->preserve_trans_toggle),
1078
layer->preserve_trans);
1080
UNBLOCK (view->preserve_trans_toggle,
1081
gimp_layer_tree_view_preserve_button_toggled);
1104
BLOCK (view->lock_alpha_toggle,
1105
gimp_layer_tree_view_lock_alpha_button_toggled);
1107
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view->lock_alpha_toggle),
1110
UNBLOCK (view->lock_alpha_toggle,
1111
gimp_layer_tree_view_lock_alpha_button_toggled);
1084
1114
if (layer->opacity * 100.0 != view->opacity_adjustment->value)
1159
1190
closure = g_cclosure_new (G_CALLBACK (gimp_layer_tree_view_mask_callback),
1160
1191
layer_view, NULL);
1161
1192
g_object_watch_closure (G_OBJECT (renderer), closure);
1162
g_signal_connect_closure (mask, "apply_changed", closure, FALSE);
1163
g_signal_connect_closure (mask, "edit_changed", closure, FALSE);
1164
g_signal_connect_closure (mask, "show_changed", closure, FALSE);
1193
g_signal_connect_closure (mask, "apply-changed", closure, FALSE);
1194
g_signal_connect_closure (mask, "edit-changed", closure, FALSE);
1195
g_signal_connect_closure (mask, "show-changed", closure, FALSE);
1167
1198
gtk_list_store_set (GTK_LIST_STORE (tree_view->model), iter,