summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoanmarie Diggs <joanmarie.diggs@gmail.com>2010-03-05 14:48:23 +0800
committerMatthias Clasen <mclasen@redhat.com>2010-03-12 17:57:19 -0500
commitf687aafe58a3077d91f73907c09ecdff0c1e8454 (patch)
tree3dd86110fba8e25ba7a73fa487e102f6b957c86e
parent8ba7712b4efef0061650d2dd730b44c527ff0098 (diff)
downloadgdk-pixbuf-f687aafe58a3077d91f73907c09ecdff0c1e8454.tar.gz
Add/Remove ATK_STATE_SENSITIVE according to cells' state.
Bug #569042. (cherry picked from commit 4759da26348fd1063e2da2e8f85d7a7fa7b41acd)
-rw-r--r--modules/other/gail/gailbooleancell.c19
-rw-r--r--modules/other/gail/gailbooleancell.h1
2 files changed, 19 insertions, 1 deletions
diff --git a/modules/other/gail/gailbooleancell.c b/modules/other/gail/gailbooleancell.c
index 3e9f83413..5c86d043e 100644
--- a/modules/other/gail/gailbooleancell.c
+++ b/modules/other/gail/gailbooleancell.c
@@ -32,6 +32,7 @@ static gboolean gail_boolean_cell_update_cache (GailRendererCell *ce
gchar *gail_boolean_cell_property_list[] = {
"active",
"radio",
+ "sensitive",
NULL
};
@@ -73,6 +74,7 @@ gail_boolean_cell_new (void)
cell->renderer = gtk_cell_renderer_toggle_new ();
g_object_ref_sink (cell->renderer);
boolean_cell->cell_value = FALSE;
+ boolean_cell->cell_sensitive = TRUE;
return atk_object;
}
@@ -83,8 +85,10 @@ gail_boolean_cell_update_cache (GailRendererCell *cell,
GailBooleanCell *boolean_cell = GAIL_BOOLEAN_CELL (cell);
gboolean rv = FALSE;
gboolean new_boolean;
+ gboolean new_sensitive;
- g_object_get (G_OBJECT(cell->renderer), "active", &new_boolean, NULL);
+ g_object_get (G_OBJECT(cell->renderer), "active", &new_boolean,
+ "sensitive", &new_sensitive, NULL);
if (boolean_cell->cell_value != new_boolean)
{
@@ -99,5 +103,18 @@ gail_boolean_cell_update_cache (GailRendererCell *cell,
gail_cell_remove_state (GAIL_CELL (cell), ATK_STATE_CHECKED, emit_change_signal);
}
+ if (boolean_cell->cell_sensitive != new_sensitive)
+ {
+ rv = TRUE;
+ boolean_cell->cell_sensitive = !(boolean_cell->cell_sensitive);
+
+ /* Update cell's state */
+
+ if (new_sensitive)
+ gail_cell_add_state (GAIL_CELL (cell), ATK_STATE_SENSITIVE, emit_change_signal);
+ else
+ gail_cell_remove_state (GAIL_CELL (cell), ATK_STATE_SENSITIVE, emit_change_signal);
+ }
+
return rv;
}
diff --git a/modules/other/gail/gailbooleancell.h b/modules/other/gail/gailbooleancell.h
index ac803cfeb..f888b1dcd 100644
--- a/modules/other/gail/gailbooleancell.h
+++ b/modules/other/gail/gailbooleancell.h
@@ -39,6 +39,7 @@ struct _GailBooleanCell
{
GailRendererCell parent;
gboolean cell_value;
+ gboolean cell_sensitive;
};
GType gail_boolean_cell_get_type (void);