From 80db2fb4d1a7571e4bcd8dd60d9e8fd226c685cb Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Fri, 23 May 2003 11:03:13 +0000 Subject: [PATCH] implement +click on the eye icon the same way it was in 1.2 (hide 2003-05-23 Michael Natterer * app/widgets/gimpdrawabletreeview.c (gimp_drawable_tree_view_eye_clicked): implement +click on the eye icon the same way it was in 1.2 (hide all other drawables if any is visible, show them all otherwise). Fixes bug #113479. --- ChangeLog | 7 +++++ app/widgets/gimpdrawabletreeview.c | 43 +++++++++++++++++++++++------- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index e6798880fd..9daab63696 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-05-23 Michael Natterer + + * app/widgets/gimpdrawabletreeview.c + (gimp_drawable_tree_view_eye_clicked): implement +click on + the eye icon the same way it was in 1.2 (hide all other drawables + if any is visible, show them all otherwise). Fixes bug #113479. + 2003-05-22 Michael Natterer * app/vectors/Makefile.am diff --git a/app/widgets/gimpdrawabletreeview.c b/app/widgets/gimpdrawabletreeview.c index fde314e7e0..b863c3a68c 100644 --- a/app/widgets/gimpdrawabletreeview.c +++ b/app/widgets/gimpdrawabletreeview.c @@ -440,11 +440,10 @@ gimp_drawable_tree_view_eye_clicked (GtkCellRendererToggle *toggle, if (state & GDK_SHIFT_MASK) { - gboolean iter_valid; - - gimp_image_undo_group_start (gimage, - GIMP_UNDO_GROUP_DRAWABLE_VISIBILITY, - _("Set Drawable Exclusive Visible")); + GList *visible = NULL; + GList *invisible = NULL; + GList *list; + gboolean iter_valid; for (iter_valid = gtk_tree_model_get_iter_first (tree_view->model, &iter); @@ -456,16 +455,42 @@ gimp_drawable_tree_view_eye_clicked (GtkCellRendererToggle *toggle, tree_view->model_column_renderer, &renderer, -1); - if (renderer->viewable != (GimpViewable *) drawable) - gimp_drawable_set_visible (GIMP_DRAWABLE (renderer->viewable), - FALSE, TRUE); + if ((GimpDrawable *) renderer->viewable != drawable) + { + if (gimp_drawable_get_visible (GIMP_DRAWABLE (renderer->viewable))) + visible = g_list_prepend (visible, renderer->viewable); + else + invisible = g_list_prepend (invisible, renderer->viewable); + } g_object_unref (renderer); } + if (visible || invisible) + gimp_image_undo_group_start (gimage, + GIMP_UNDO_GROUP_DRAWABLE_VISIBILITY, + _("Set Drawable Exclusive Visible")); + gimp_drawable_set_visible (drawable, TRUE, TRUE); - gimp_image_undo_group_end (gimage); + if (visible) + { + for (list = visible; list; list = g_list_next (list)) + gimp_drawable_set_visible (GIMP_DRAWABLE (list->data), FALSE, + TRUE); + } + else if (invisible) + { + for (list = invisible; list; list = g_list_next (list)) + gimp_drawable_set_visible (GIMP_DRAWABLE (list->data), TRUE, + TRUE); + } + + if (visible || invisible) + gimp_image_undo_group_end (gimage); + + g_list_free (visible); + g_list_free (invisible); } else {