Create the new display ID in set_property() not in gimp_display_new()

Make the ID a read-only property and set it when the "gimp"
construct-only property gets set. Removes code from gimp_display_new()
where it doesn't belong.
This commit is contained in:
Michael Natterer 2009-10-04 21:58:12 +02:00
parent 7e120a99f4
commit 161f1346db
1 changed files with 19 additions and 19 deletions

View File

@ -121,8 +121,7 @@ gimp_display_class_init (GimpDisplayClass *klass)
g_param_spec_int ("id", g_param_spec_int ("id",
NULL, NULL, NULL, NULL,
0, G_MAXINT, 0, 0, G_MAXINT, 0,
GIMP_PARAM_READWRITE | GIMP_PARAM_READABLE));
G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (object_class, PROP_GIMP, g_object_class_install_property (object_class, PROP_GIMP,
g_param_spec_object ("gimp", g_param_spec_object ("gimp",
@ -183,15 +182,27 @@ gimp_display_set_property (GObject *object,
switch (property_id) switch (property_id)
{ {
case PROP_ID:
display->ID = g_value_get_int (value);
break;
case PROP_GIMP: case PROP_GIMP:
display->gimp = g_value_get_object (value); /* don't ref the gimp */ {
display->config = GIMP_DISPLAY_CONFIG (display->gimp->config); gint ID;
display->gimp = g_value_get_object (value); /* don't ref the gimp */
display->config = GIMP_DISPLAY_CONFIG (display->gimp->config);
do
{
ID = display->gimp->next_display_ID++;
if (display->gimp->next_display_ID == G_MAXINT)
display->gimp->next_display_ID = 1;
}
while (gimp_display_get_by_ID (display->gimp, ID));
display->ID = ID;
}
break; break;
case PROP_ID:
case PROP_IMAGE: case PROP_IMAGE:
case PROP_SHELL: case PROP_SHELL:
g_assert_not_reached (); g_assert_not_reached ();
@ -358,7 +369,6 @@ gimp_display_new (Gimp *gimp,
GimpDisplay *display; GimpDisplay *display;
GimpImageWindow *window = NULL; GimpImageWindow *window = NULL;
GimpDisplayShell *shell; GimpDisplayShell *shell;
gint ID;
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
g_return_val_if_fail (image == NULL || GIMP_IS_IMAGE (image), NULL); g_return_val_if_fail (image == NULL || GIMP_IS_IMAGE (image), NULL);
@ -367,17 +377,7 @@ gimp_display_new (Gimp *gimp,
if (gimp->no_interface) if (gimp->no_interface)
return NULL; return NULL;
do
{
ID = gimp->next_display_ID++;
if (gimp->next_display_ID == G_MAXINT)
gimp->next_display_ID = 1;
}
while (gimp_display_get_by_ID (gimp, ID));
display = g_object_new (GIMP_TYPE_DISPLAY, display = g_object_new (GIMP_TYPE_DISPLAY,
"id", ID,
"gimp", gimp, "gimp", gimp,
NULL); NULL);