diff options
-rw-r--r-- | calendar/ChangeLog | 8 | ||||
-rw-r--r-- | calendar/gui/dialogs/cal-prefs-dialog.glade | 5 | ||||
-rw-r--r-- | calendar/gui/e-timezone-entry.c | 44 |
3 files changed, 56 insertions, 1 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index c83af061d5..9d6bf2584b 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,11 @@ +2006-06-05 Li Yuan <li.yuan@sun.com> + + * gui/dialogs/cal-prefs-dialog.glade: + add labelled by relationship between label and e-timezone-entry. + * gui/e-timezone-entry.c: (add_relation), + (e_timezone_entry_set_timezone): + add relationship between label and entry. + 2006-06-05 Srinivasa Ragavan <sragavan@novell.com> ** Fixed bug #268884 diff --git a/calendar/gui/dialogs/cal-prefs-dialog.glade b/calendar/gui/dialogs/cal-prefs-dialog.glade index 068c157087..86333965bd 100644 --- a/calendar/gui/dialogs/cal-prefs-dialog.glade +++ b/calendar/gui/dialogs/cal-prefs-dialog.glade @@ -103,7 +103,7 @@ <property name="column_spacing">6</property> <child> - <widget class="GtkLabel" id="label10"> + <widget class="GtkLabel" id="timezone_label"> <property name="visible">True</property> <property name="label" translatable="yes">Time _zone:</property> <property name="use_underline">True</property> @@ -165,6 +165,9 @@ <property name="int1">0</property> <property name="int2">0</property> <property name="last_modification_time">Thu, 13 Jan 2005 04:18:03 GMT</property> + <accessibility> + <atkrelation target="timezone_label" type="labelled-by"/> + </accessibility> </widget> <packing> <property name="left_attach">1</property> diff --git a/calendar/gui/e-timezone-entry.c b/calendar/gui/e-timezone-entry.c index fe57453540..e708a03618 100644 --- a/calendar/gui/e-timezone-entry.c +++ b/calendar/gui/e-timezone-entry.c @@ -71,6 +71,8 @@ static void on_entry_changed (GtkEntry *entry, ETimezoneEntry *tentry); static void on_button_clicked (GtkWidget *widget, ETimezoneEntry *tentry); +static void add_relation (ETimezoneEntry *tentry, + GtkWidget *widget); static void e_timezone_entry_set_entry (ETimezoneEntry *tentry); @@ -224,6 +226,46 @@ e_timezone_entry_get_timezone (ETimezoneEntry *tentry) return priv->zone; } +static void +add_relation (ETimezoneEntry *tentry, + GtkWidget *widget) +{ + AtkObject *a11ytentry, *a11yWidget; + AtkRelationSet *set; + AtkRelation *relation; + GPtrArray *target; + gpointer target_object; + + /* add a labelled_by relation for widget for accessibility */ + + a11ytentry = gtk_widget_get_accessible (GTK_WIDGET (tentry)); + a11yWidget = gtk_widget_get_accessible (widget); + + set = atk_object_ref_relation_set (a11yWidget); + if (set != NULL) { + relation = atk_relation_set_get_relation_by_type (set, + ATK_RELATION_LABELLED_BY); + /* check whether has a labelled_by relation already */ + if (relation != NULL) + return; + } + + set = atk_object_ref_relation_set (a11ytentry); + if (!set) + return; + + relation = atk_relation_set_get_relation_by_type (set, + ATK_RELATION_LABELLED_BY); + if (relation != NULL) { + target = atk_relation_get_target (relation); + target_object = g_ptr_array_index (target, 0); + if (ATK_IS_OBJECT (target_object)) { + atk_object_add_relationship (a11yWidget, + ATK_RELATION_LABELLED_BY, + ATK_OBJECT (target_object)); + } + } +} void e_timezone_entry_set_timezone (ETimezoneEntry *tentry, @@ -238,6 +280,8 @@ e_timezone_entry_set_timezone (ETimezoneEntry *tentry, priv->zone = zone; e_timezone_entry_set_entry (tentry); + + add_relation (tentry, priv->entry); } |