1
/* The GIMP -- an image manipulation program
1
/* GIMP - The GNU Image Manipulation Program
2
2
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
4
4
* This program is free software; you can redistribute it and/or modify
44
44
struct _LayerSelect
51
51
GimpLayer *orig_layer;
55
55
/* local function prototypes */
57
static LayerSelect * layer_select_new (GimpImage *gimage,
57
static LayerSelect * layer_select_new (GimpImage *image,
60
60
static void layer_select_destroy (LayerSelect *layer_select,
62
62
static void layer_select_advance (LayerSelect *layer_select,
76
76
LayerSelect *layer_select;
80
80
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
82
gimage = shell->gdisp->gimage;
82
image = shell->display->image;
84
layer = gimp_image_get_active_layer (gimage);
84
layer = gimp_image_get_active_layer (image);
89
layer_select = layer_select_new (gimage, layer,
90
gimage->gimp->config->layer_preview_size);
89
layer_select = layer_select_new (image, layer,
90
image->gimp->config->layer_preview_size);
91
91
layer_select_advance (layer_select, move);
93
93
gtk_window_set_screen (GTK_WINDOW (layer_select->shell),
115
115
layer_select = g_new0 (LayerSelect, 1);
117
layer_select->gimage = gimage;
117
layer_select->image = image;
118
118
layer_select->orig_layer = layer;
120
120
layer_select->shell = gtk_window_new (GTK_WINDOW_POPUP);
144
144
gtk_container_add (GTK_CONTAINER (frame2), hbox);
145
145
gtk_widget_show (hbox);
148
148
alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
149
149
gtk_box_pack_start (GTK_BOX (hbox), alignment, FALSE, FALSE, 0);
150
150
gtk_widget_show (alignment);
152
layer_select->preview = gimp_view_new_by_types (GIMP_TYPE_VIEW,
154
preview_size, 1, FALSE);
155
gimp_view_set_viewable (GIMP_VIEW (layer_select->preview),
153
gimp_view_new_by_types (gimp_get_user_context (image->gimp),
156
view_size, 1, FALSE);
157
gimp_view_set_viewable (GIMP_VIEW (layer_select->view),
156
158
GIMP_VIEWABLE (layer));
157
gtk_container_add (GTK_CONTAINER (alignment), layer_select->preview);
158
gtk_widget_show (layer_select->preview);
159
gtk_container_add (GTK_CONTAINER (alignment), layer_select->view);
160
gtk_widget_show (layer_select->view);
159
161
gtk_widget_show (alignment);
161
163
/* the layer name label */
176
178
gtk_widget_destroy (layer_select->shell);
178
180
if (layer_select->orig_layer !=
179
gimp_image_get_active_layer (layer_select->gimage))
181
gimp_image_get_active_layer (layer_select->image))
181
gimp_image_flush (layer_select->gimage);
183
gimp_image_flush (layer_select->image);
184
186
g_free (layer_select);
198
200
/* If there is a floating selection, allow no advancement */
199
if (gimp_image_floating_sel (layer_select->gimage))
201
if (gimp_image_floating_sel (layer_select->image))
202
current_layer = gimp_image_get_active_layer (layer_select->gimage);
204
current_layer = gimp_image_get_active_layer (layer_select->image);
204
index = gimp_container_get_child_index (layer_select->gimage->layers,
206
index = gimp_container_get_child_index (layer_select->image->layers,
205
207
GIMP_OBJECT (current_layer));
210
index = gimp_container_num_children (layer_select->gimage->layers) - 1;
211
else if (index >= gimp_container_num_children (layer_select->gimage->layers))
212
index = gimp_container_num_children (layer_select->image->layers) - 1;
213
else if (index >= gimp_container_num_children (layer_select->image->layers))
214
216
next_layer = (GimpLayer *)
215
gimp_container_get_child_by_index (layer_select->gimage->layers, index);
217
gimp_container_get_child_by_index (layer_select->image->layers, index);
217
219
if (next_layer && next_layer != current_layer)
219
current_layer = gimp_image_set_active_layer (layer_select->gimage,
221
current_layer = gimp_image_set_active_layer (layer_select->image,
222
224
if (current_layer)
224
gimp_view_set_viewable (GIMP_VIEW (layer_select->preview),
226
gimp_view_set_viewable (GIMP_VIEW (layer_select->view),
225
227
GIMP_VIEWABLE (current_layer));
226
228
gtk_label_set_text (GTK_LABEL (layer_select->label),
227
229
GIMP_OBJECT (current_layer)->name);
264
266
kevent = (GdkEventKey *) event;
266
268
switch (kevent->keyval)
268
case GDK_Alt_L: case GDK_Alt_R:
269
kevent->state &= ~GDK_MOD1_MASK;
271
case GDK_Control_L: case GDK_Control_R:
272
kevent->state &= ~GDK_CONTROL_MASK;
274
case GDK_Shift_L: case GDK_Shift_R:
275
kevent->state &= ~GDK_SHIFT_MASK;
270
case GDK_Alt_L: case GDK_Alt_R:
271
kevent->state &= ~GDK_MOD1_MASK;
273
case GDK_Control_L: case GDK_Control_R:
274
kevent->state &= ~GDK_CONTROL_MASK;
276
case GDK_Shift_L: case GDK_Shift_R:
277
kevent->state &= ~GDK_SHIFT_MASK;
279
281
if (! (kevent->state & GDK_CONTROL_MASK))
280
layer_select_destroy (layer_select, kevent->time);
282
layer_select_destroy (layer_select, kevent->time);