diff --git a/ChangeLog b/ChangeLog index b36a3d6bc7..d3a9089fcb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Fri Jun 25 22:09:04 BST 1999 Andy Thomas + + * lc_dialog.c + + Fixed problem when preview sizes are changed in L&C&P + dialog and then the busy cursors stuff tried to change + the cursor on a dialog that has been removed. (ie + the LCP dialog should be unregistered when it is destroyed) + + Small previews in LCP dialog image menu do not get created when no preview preference is set. + Thu Jun 24 18:13:35 PDT 1999 Manish Singh * plug-ins/common/mkgen.pl diff --git a/app/lc_dialog.c b/app/lc_dialog.c index 67a5071a5a..5db4dfe5df 100644 --- a/app/lc_dialog.c +++ b/app/lc_dialog.c @@ -256,6 +256,8 @@ lc_dialog_rebuild (int new_preview_size) { flag = 1; gimage = lc_dialog->gimage; + /* Unregister the dialog */ + dialog_unregister (lc_dialog->shell); lc_dialog_free (); } @@ -292,14 +294,18 @@ void lc_dialog_menu_preview_dirty (GtkObject *obj, gpointer client_data) { + if(!preview_size) + return; /* Update preview at a less busy time */ - /* printf("menu_preview_dirty:: adding %p to obj %p\n",client_data,obj); */ gtk_idle_add((GtkFunction)image_menu_preview_update_do,(gpointer)obj); } void lc_dialog_preview_update(GimpImage *gimage) { + if(!preview_size) + return; + layers_dialog_invalidate_previews(gimage); gtk_idle_add((GtkFunction)image_menu_preview_update_do,gimage); } @@ -566,40 +572,46 @@ lc_dialog_create_image_menu_cb (gpointer im, gtk_container_add (GTK_CONTAINER (menu_item), hbox); gtk_widget_show(hbox); - vbox = gtk_vbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); - gtk_widget_show(vbox); - - wcolor_box = gtk_preview_new(GTK_PREVIEW_COLOR); - gtk_preview_set_dither (GTK_PREVIEW (wcolor_box), GDK_RGB_DITHER_MAX); - - lc_dialog_fill_preview_with_thumb(wcolor_box, - gimage, - MENU_THUMBNAIL_WIDTH, - MENU_THUMBNAIL_HEIGHT); - - gtk_widget_set_usize( GTK_WIDGET (wcolor_box) , - MENU_THUMBNAIL_WIDTH , - MENU_THUMBNAIL_HEIGHT); - - gtk_container_add(GTK_CONTAINER(vbox), wcolor_box); - gtk_widget_show(wcolor_box); + if(preview_size) + { + + vbox = gtk_vbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); + gtk_widget_show(vbox); + + wcolor_box = gtk_preview_new(GTK_PREVIEW_COLOR); + gtk_preview_set_dither (GTK_PREVIEW (wcolor_box), GDK_RGB_DITHER_MAX); + + lc_dialog_fill_preview_with_thumb(wcolor_box, + gimage, + MENU_THUMBNAIL_WIDTH, + MENU_THUMBNAIL_HEIGHT); + + gtk_widget_set_usize( GTK_WIDGET (wcolor_box) , + MENU_THUMBNAIL_WIDTH , + MENU_THUMBNAIL_HEIGHT); + + gtk_container_add(GTK_CONTAINER(vbox), wcolor_box); + gtk_widget_show(wcolor_box); + + if(gtk_object_get_data(GTK_OBJECT (gimage),"menu_preview_dirty") == NULL) + { + /* Only add this signal once */ + gtk_object_set_data(GTK_OBJECT (gimage),"menu_preview_dirty",(gpointer)1); + gtk_signal_connect_after (GTK_OBJECT (gimage), "dirty", + GTK_SIGNAL_FUNC(lc_dialog_menu_preview_dirty),NULL); + } + gtk_object_set_data(GTK_OBJECT(menu_item),"menu_preview",wcolor_box); + gtk_object_set_data(GTK_OBJECT(menu_item),"menu_preview_gimage",gimage); + + } + gtk_container_add (GTK_CONTAINER (data->menu), menu_item); + wlabel = gtk_label_new(menu_item_label); gtk_misc_set_alignment(GTK_MISC(wlabel), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(hbox), wlabel, TRUE, TRUE, 4); gtk_widget_show(wlabel); - - gtk_container_add (GTK_CONTAINER (data->menu), menu_item); - if(gtk_object_get_data(GTK_OBJECT (gimage),"menu_preview_dirty") == NULL) - { - /* Only add this signal once */ - gtk_object_set_data(GTK_OBJECT (gimage),"menu_preview_dirty",(gpointer)1); - gtk_signal_connect_after (GTK_OBJECT (gimage), "dirty", - GTK_SIGNAL_FUNC(lc_dialog_menu_preview_dirty),NULL); - } - gtk_object_set_data(GTK_OBJECT(menu_item),"menu_preview",wcolor_box); - gtk_object_set_data(GTK_OBJECT(menu_item),"menu_preview_gimage",gimage); gtk_widget_show (menu_item);