[gimp] Bug 658902 - Show different icon for visible layer group members of...
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Bug 658902 - Show different icon for visible layer group members of...
- Date: Fri, 23 Sep 2011 21:46:22 +0000 (UTC)
commit 4e3c3089313544f2ec21f345123be1bc80ce0461
Author: Michael Natterer <mitch gimp org>
Date: Fri Sep 23 23:45:10 2011 +0200
Bug 658902 - Show different icon for visible layer group members of...
Set the "eye" renderer to inconsistent state if the item is visible,
but not effectively viewable because one of its parents is invisible.
app/widgets/gimpitemtreeview.c | 39 ++++++++++++++++++++++++++++++++-------
1 files changed, 32 insertions(+), 7 deletions(-)
---
diff --git a/app/widgets/gimpitemtreeview.c b/app/widgets/gimpitemtreeview.c
index 0be6cca..d836a56 100644
--- a/app/widgets/gimpitemtreeview.c
+++ b/app/widgets/gimpitemtreeview.c
@@ -82,6 +82,7 @@ struct _GimpItemTreeViewPriv
GtkWidget *delete_button;
gint model_column_visible;
+ gint model_column_viewable;
gint model_column_linked;
GtkCellRenderer *eye_cell;
GtkCellRenderer *chain_cell;
@@ -306,6 +307,11 @@ gimp_item_tree_view_init (GimpItemTreeView *view)
&tree_view->n_model_columns,
G_TYPE_BOOLEAN);
+ view->priv->model_column_viewable =
+ gimp_container_tree_store_columns_add (tree_view->model_columns,
+ &tree_view->n_model_columns,
+ G_TYPE_BOOLEAN);
+
view->priv->model_column_linked =
gimp_container_tree_store_columns_add (tree_view->model_columns,
&tree_view->n_model_columns,
@@ -355,6 +361,8 @@ gimp_item_tree_view_constructed (GObject *object)
gtk_tree_view_column_set_attributes (column, item_view->priv->eye_cell,
"active",
item_view->priv->model_column_visible,
+ "inconsistent",
+ item_view->priv->model_column_viewable,
NULL);
gimp_container_tree_view_add_toggle_cell (tree_view,
@@ -639,7 +647,7 @@ gimp_item_tree_view_add_options (GimpItemTreeView *view,
item_view_class = GIMP_ITEM_TREE_VIEW_GET_CLASS (view);
- view->priv->options_box = gtk_vbox_new (FALSE, content_spacing);
+ view->priv->options_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, content_spacing);
gtk_box_pack_start (GTK_BOX (view), view->priv->options_box,
FALSE, FALSE, 0);
gtk_box_reorder_child (GTK_BOX (view), view->priv->options_box, 0);
@@ -658,7 +666,7 @@ gimp_item_tree_view_add_options (GimpItemTreeView *view,
GtkWidget *label_widget;
gboolean group_created = FALSE;
- hbox = gtk_hbox_new (FALSE, button_spacing);
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, button_spacing);
gtk_box_pack_start (GTK_BOX (view->priv->options_box), hbox,
FALSE, FALSE, 0);
gtk_widget_show (hbox);
@@ -702,7 +710,7 @@ gimp_item_tree_view_get_lock_box (GimpItemTreeView *view)
"button-spacing", &button_spacing,
NULL);
- view->priv->lock_box = gtk_hbox_new (FALSE, button_spacing);
+ view->priv->lock_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, button_spacing);
gimp_item_tree_view_add_options (view, _("Lock:"), view->priv->lock_box);
@@ -932,6 +940,9 @@ gimp_item_tree_view_insert_item (GimpContainerView *view,
gtk_tree_store_set (GTK_TREE_STORE (tree_view->model), iter,
item_view->priv->model_column_visible,
gimp_item_get_visible (item),
+ item_view->priv->model_column_viewable,
+ gimp_item_get_visible (item) &&
+ ! gimp_item_is_visible (item),
item_view->priv->model_column_linked,
gimp_item_get_linked (item),
-1);
@@ -1258,10 +1269,24 @@ gimp_item_tree_view_visible_changed (GimpItem *item,
(GimpViewable *) item);
if (iter)
- gtk_tree_store_set (GTK_TREE_STORE (tree_view->model), iter,
- view->priv->model_column_visible,
- gimp_item_get_visible (item),
- -1);
+ {
+ GimpContainer *children;
+
+ gtk_tree_store_set (GTK_TREE_STORE (tree_view->model), iter,
+ view->priv->model_column_visible,
+ gimp_item_get_visible (item),
+ view->priv->model_column_viewable,
+ gimp_item_get_visible (item) &&
+ ! gimp_item_is_visible (item),
+ -1);
+
+ children = gimp_viewable_get_children (GIMP_VIEWABLE (item));
+
+ if (children)
+ gimp_container_foreach (children,
+ (GFunc) gimp_item_tree_view_visible_changed,
+ view);
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]