mirror of https://github.com/GNOME/gimp.git
Issue #1805 - Sample Points keep resetting themselves to "Pixel"
Don't destroy the color frames when the number of points changes. Instead, simply hide them so they keep their color model, but add an upper limit of an arbitrary number of 16 frames to keep around.
This commit is contained in:
parent
c6b63589c2
commit
370680f9bc
|
@ -422,15 +422,25 @@ gimp_sample_point_editor_points_changed (GimpSamplePointEditor *editor)
|
||||||
gtk_widget_set_visible (editor->empty_label,
|
gtk_widget_set_visible (editor->empty_label,
|
||||||
image_editor->image && n_points == 0);
|
image_editor->image && n_points == 0);
|
||||||
|
|
||||||
if (n_points < editor->n_color_frames)
|
/* Keep that many color frames around so they remember their color
|
||||||
|
* model. Let's hope nobody uses more and notices they get reset to
|
||||||
|
* "pixel". See https://gitlab.gnome.org/GNOME/gimp/issues/1805
|
||||||
|
*/
|
||||||
|
#define RANDOM_MAGIC 16
|
||||||
|
|
||||||
|
if (n_points < editor->n_color_frames &&
|
||||||
|
n_points < RANDOM_MAGIC &&
|
||||||
|
editor->n_color_frames > RANDOM_MAGIC)
|
||||||
{
|
{
|
||||||
for (i = n_points; i < editor->n_color_frames; i++)
|
for (i = RANDOM_MAGIC; i < editor->n_color_frames; i++)
|
||||||
{
|
{
|
||||||
gtk_widget_destroy (editor->color_frames[i]);
|
gtk_widget_destroy (editor->color_frames[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
editor->color_frames = g_renew (GtkWidget *, editor->color_frames,
|
editor->color_frames = g_renew (GtkWidget *, editor->color_frames,
|
||||||
n_points);
|
RANDOM_MAGIC);
|
||||||
|
|
||||||
|
editor->n_color_frames = RANDOM_MAGIC;
|
||||||
}
|
}
|
||||||
else if (n_points > editor->n_color_frames)
|
else if (n_points > editor->n_color_frames)
|
||||||
{
|
{
|
||||||
|
@ -461,14 +471,18 @@ gimp_sample_point_editor_points_changed (GimpSamplePointEditor *editor)
|
||||||
|
|
||||||
gtk_grid_attach (GTK_GRID (editor->grid), editor->color_frames[i],
|
gtk_grid_attach (GTK_GRID (editor->grid), editor->color_frames[i],
|
||||||
column, row, 1, 1);
|
column, row, 1, 1);
|
||||||
gtk_widget_show (editor->color_frames[i]);
|
|
||||||
|
|
||||||
g_object_set_data (G_OBJECT (editor->color_frames[i]),
|
g_object_set_data (G_OBJECT (editor->color_frames[i]),
|
||||||
"dirty", GINT_TO_POINTER (TRUE));
|
"dirty", GINT_TO_POINTER (TRUE));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
editor->n_color_frames = n_points;
|
editor->n_color_frames = n_points;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < editor->n_color_frames; i++)
|
||||||
|
{
|
||||||
|
gtk_widget_set_visible (editor->color_frames[i], i < n_points);
|
||||||
|
}
|
||||||
|
|
||||||
if (n_points > 0)
|
if (n_points > 0)
|
||||||
gimp_sample_point_editor_dirty (editor, -1);
|
gimp_sample_point_editor_dirty (editor, -1);
|
||||||
|
|
Loading…
Reference in New Issue