[evolution-patches] Patch about a11y bugs
- From: Li Yuan <Li Yuan Sun COM>
- To: evolution-patches ximian com
- Subject: [evolution-patches] Patch about a11y bugs
- Date: Thu, 23 Sep 2004 12:14:37 +0800
Hi, JP and Rodrigo
Now I have a patch in a11y directory for cvs HEAD. It fixes some a11y
bugs. The patch has passed our internel review.
Please help me to review it. Thanks a lot.
Li
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/a11y/ChangeLog,v
retrieving revision 1.19
diff -u -r1.19 ChangeLog
--- ChangeLog 30 Apr 2004 02:49:01 -0000 1.19
+++ ChangeLog 23 Sep 2004 03:59:25 -0000
@@ -1,3 +1,62 @@
+2004-09-23 Li Yuan <li yuan sun com>
+
+ * calendar/ea-cal-view-event.c: (ea_cal_view_event_get_type),
+ (ea_cal_view_event_get_name), (ea_cal_view_event_get_description):
+ Make accessibility name and description translatable.
+ (atk_action_interface_init), (ea_cal_view_event_do_action),
+ (ea_cal_view_event_get_n_actions),
+ (ea_cal_view_event_action_get_name):
+ Add action interface to ea-cal-view-event so that it can be
+ UI grabbed by GOK.
+ * calendar/ea-cal-view.c:
+ Make accessibility name and description translatable.
+ * calendar/ea-day-view-cell.c: (ea_day_view_cell_new):
+ Change atk role of ea-day-view-cell from ATK_ROLE_TABLE_CELL
+ to ATK_ROLE_UNKNOWN so that it can be UI grabbed by GOK.
+ (atk_component_interface_init), (component_interface_grab_focus):
+ Add a component interface function : grab_focus.
+ When grab focus, present the Evolution GUI to the front.
+ * calendar/ea-day-view-main-item.c:
+ (ea_day_view_main_item_get_description):
+ Make accessibility name and description translatable.
+ (ea_day_view_main_item_time_change_cb):
+ Notify the item_cell is selected.
+ * calendar/ea-day-view.c: (ea_day_view_get_name),
+ (ea_day_view_get_description):
+ Make accessibility name and description translatable.
+ * calendar/ea-gnome-calendar.c: (ea_gnome_calendar_get_name),
+ (ea_gnome_calendar_get_description), (ea_gnome_calendar_ref_child):
+ Make accessibility name and description translatable.
+ * calendar/ea-jump-button.c: (ea_jump_button_get_name),
+ (ea_jump_button_get_description):
+ Make accessibility name and description translatable.
+ * calendar/ea-week-view-cell.c: (ea_week_view_cell_get_name),
+ (atk_component_interface_init), (component_interface_get_extents),
+ (component_interface_grab_focus):
+ Add a component interface function : grab_focus.
+ Add support for different week start days.
+ When grab focus, present the Evolutioon GUI to the front.
+ * calendar/ea-week-view-main-item.c: (ea_week_view_main_item_new):
+ Set the atk role to ATK_ROLE_TABLE.
+ (ea_week_view_main_item_get_description):
+ Make accessibility name and description translatable.
+ (ea_week_view_main_item_time_change_cb):
+ Notify the item_cell is selected.
+ * calendar/ea-week-view.c: (ea_week_view_get_name),
+ (ea_week_view_get_description):
+ Make accessibility name and description translatable.
+ * widgets/ea-calendar-cell.c: (ea_calendar_cell_new):
+ Change atk role of ea-calendar-cell from ATK_ROLE_TABLE_CELL
+ to ATK_ROLE_UNKNOWN so that it can be UI grabbed by GOK.
+ * widgets/ea-calendar-item.c: (ea_calendar_item_class_init),
+ (ea_calendar_item_get_name), (ea_calendar_item_get_description):
+ Make accessibility name and description translatable.
+ (ea_calendar_item_ref_state_set),:
+ Implement ref_state_set so that ea-calendar-item can be UI
+ grabbed by GOK.
+ (ea_calendar_item_destory_cell_data):
+ Fix a crash here.
+
2004-04-29 Rodney Dawes <dobey ximian com>
* calendar/Makefile.am (INCLUDES): Add $(top_srcdir)/widgets/misc
Index: calendar/ea-cal-view-event.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/calendar/ea-cal-view-event.c,v
retrieving revision 1.9
diff -u -r1.9 ea-cal-view-event.c
--- calendar/ea-cal-view-event.c 10 Dec 2003 03:56:30 -0000 1.9
+++ calendar/ea-cal-view-event.c 23 Sep 2004 03:59:26 -0000
@@ -28,6 +28,7 @@
#include "ea-day-view.h"
#include "ea-week-view.h"
#include <gal/e-text/e-text.h>
+#include <libgnome/gnome-i18n.h>
static void ea_cal_view_event_class_init (EaCalViewEventClass *klass);
@@ -41,6 +42,12 @@
static void ea_cal_view_get_extents (AtkComponent *component,
gint *x, gint *y, gint *width, gint *height,
AtkCoordType coord_type);
+/* action interface */
+static void atk_action_interface_init (AtkActionIface *iface);
+static gboolean ea_cal_view_event_do_action (AtkAction *action, gint i);
+static gint ea_cal_view_event_get_n_actions (AtkAction *action);
+static G_CONST_RETURN gchar* ea_cal_view_event_action_get_name (AtkAction *action, gint i);
+
#ifdef ACC_DEBUG
static gint n_ea_cal_view_event_created = 0, n_ea_cal_view_event_destroyed = 0;
@@ -78,6 +85,13 @@
NULL
};
+ static const GInterfaceInfo atk_action_info = {
+ (GInterfaceInitFunc) atk_action_interface_init,
+ (GInterfaceFinalizeFunc) NULL,
+ NULL
+ };
+
+
/*
* Figure out the size of the class and instance
* we are run-time deriving from (atk object for E_TEXT, in this case)
@@ -96,6 +110,10 @@
"EaCalViewEvent", &tinfo, 0);
g_type_add_interface_static (type, ATK_TYPE_COMPONENT,
&atk_component_info);
+ g_type_add_interface_static (type, ATK_TYPE_ACTION,
+ &atk_action_info);
+
+
}
return type;
@@ -214,30 +232,30 @@
if (event && event->comp_data) {
if (e_cal_util_component_has_alarms (event->comp_data->icalcomp)) {
tmp_name = new_name;
- new_name = g_strconcat (new_name, "alarm ", NULL);
+ new_name = g_strconcat (new_name, _("alarm "), NULL);
g_free (tmp_name);
}
if (e_cal_util_component_has_recurrences (event->comp_data->icalcomp)) {
tmp_name = new_name;
- new_name = g_strconcat (new_name, "recurrence ", NULL);
+ new_name = g_strconcat (new_name, _("recurrence "), NULL);
g_free (tmp_name);
}
if (event->different_timezone) {
tmp_name = new_name;
- new_name = g_strconcat (new_name, "time-zone ", NULL);
+ new_name = g_strconcat (new_name, _("time-zone "), NULL);
g_free (tmp_name);
}
if (e_cal_util_component_has_organizer (event->comp_data->icalcomp)) {
tmp_name = new_name;
- new_name = g_strconcat (new_name, "meeting ", NULL);
+ new_name = g_strconcat (new_name, _("meeting "), NULL);
g_free (tmp_name);
}
}
tmp_name = new_name;
- new_name = g_strconcat (new_name, "event. Summary is ", NULL);
+ new_name = g_strconcat (new_name, _("event. Summary is "), NULL);
g_free (tmp_name);
summary = icalcomponent_get_summary (event->comp_data->icalcomp);
@@ -248,7 +266,7 @@
}
else {
tmp_name = new_name;
- new_name = g_strconcat (new_name, "empty", NULL);
+ new_name = g_strconcat (new_name, _("empty"), NULL);
g_free (tmp_name);
}
@@ -267,7 +285,7 @@
if (accessible->description)
return accessible->description;
- return "calendar view event";
+ return _("calendar view event");
}
static AtkObject *
@@ -480,3 +498,51 @@
printf ("Event Bounds (%d, %d, %d, %d)\n", *x, *y, *width, *height);
#endif
}
+
+#define CAL_VIEW_EVENT_ACTION_NUM 1
+
+static const char * action_name [CAL_VIEW_EVENT_ACTION_NUM] = {
+ N_("Grab Focus")
+};
+
+static void
+atk_action_interface_init (AtkActionIface *iface)
+{
+ g_return_if_fail (iface != NULL);
+
+ iface->do_action = ea_cal_view_event_do_action;
+ iface->get_n_actions = ea_cal_view_event_get_n_actions;
+ iface->get_name = ea_cal_view_event_action_get_name;
+}
+
+static gboolean
+ea_cal_view_event_do_action (AtkAction *action, gint i)
+{
+ AtkGObjectAccessible *atk_gobj;
+ AtkComponent *atk_comp;
+
+ atk_gobj = ATK_GOBJECT_ACCESSIBLE (action);
+
+ if (i == 0) {
+ atk_comp = (AtkComponent *)atk_gobj;
+ return atk_component_grab_focus (atk_comp);
+ }
+
+ return FALSE;
+
+}
+
+static gint
+ea_cal_view_event_get_n_actions (AtkAction *action)
+{
+ return CAL_VIEW_EVENT_ACTION_NUM;
+}
+
+static G_CONST_RETURN gchar*
+ea_cal_view_event_action_get_name (AtkAction *action, gint i)
+{
+ if (i >= 0 && i < CAL_VIEW_EVENT_ACTION_NUM)
+ return action_name [i];
+ return NULL;
+}
+
Index: calendar/ea-cal-view.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/calendar/ea-cal-view.c,v
retrieving revision 1.5
diff -u -r1.5 ea-cal-view.c
--- calendar/ea-cal-view.c 9 Dec 2003 01:28:57 -0000 1.5
+++ calendar/ea-cal-view.c 23 Sep 2004 03:59:26 -0000
@@ -30,6 +30,7 @@
#include "calendar-commands.h"
#include "goto.h"
#include <glib/gstrfuncs.h>
+#include <libgnome/gnome-i18n.h>
static void ea_cal_view_class_init (EaCalViewClass *klass);
@@ -302,11 +303,11 @@
#define CAL_VIEW_ACTION_NUM 5
static const char * action_name [CAL_VIEW_ACTION_NUM] = {
- "New Appointment",
- "New All Day Event",
- "New Meeting",
- "Go to Today",
- "Go to Date"
+ N_("New Appointment"),
+ N_("New All Day Event"),
+ N_("New Meeting"),
+ N_("Go to Today"),
+ N_("Go to Date")
};
static void
Index: calendar/ea-day-view-cell.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/calendar/ea-day-view-cell.c,v
retrieving revision 1.2
diff -u -r1.2 ea-day-view-cell.c
--- calendar/ea-day-view-cell.c 10 Dec 2003 03:56:30 -0000 1.2
+++ calendar/ea-day-view-cell.c 23 Sep 2004 03:59:28 -0000
@@ -103,6 +103,8 @@
gint *x, gint *y,
gint *width, gint *height,
AtkCoordType coord_type);
+static gboolean component_interface_grab_focus (AtkComponent *component);
+
static gpointer parent_class = NULL;
#ifdef ACC_DEBUG
@@ -175,7 +177,7 @@
object = g_object_new (EA_TYPE_DAY_VIEW_CELL, NULL);
atk_object = ATK_OBJECT (object);
atk_object_initialize (atk_object, obj);
- atk_object->role = ATK_ROLE_TABLE_CELL;
+ atk_object->role = ATK_ROLE_UNKNOWN;
#ifdef ACC_DEBUG
++n_ea_day_view_cell_created;
@@ -314,6 +316,7 @@
g_return_if_fail (iface != NULL);
iface->get_extents = component_interface_get_extents;
+ iface->grab_focus = component_interface_grab_focus;
}
static void
@@ -355,3 +358,39 @@
*width = day_view->day_widths[cell->column];
*height = day_view->row_height;
}
+
+static gboolean
+component_interface_grab_focus (AtkComponent *comp)
+{
+ GObject *g_obj;
+ EDayViewCell *cell;
+ EDayView *day_view;
+ GtkWidget *toplevel;
+
+ g_return_val_if_fail (EA_IS_DAY_VIEW_CELL (comp), FALSE);
+
+ g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (comp));
+ if (!g_obj)
+ return FALSE;
+
+ cell = E_DAY_VIEW_CELL (g_obj);
+ day_view = cell->day_view;
+
+ day_view->selection_start_day = cell->column;
+ day_view->selection_end_day = cell->column;
+ day_view->selection_start_row = cell->row;
+ day_view->selection_end_row = cell->row;
+
+ e_day_view_ensure_rows_visible (day_view,
+ day_view->selection_start_row,
+ day_view->selection_end_row);
+ e_day_view_update_calendar_selection_time (day_view);
+ gtk_widget_queue_draw (day_view->main_canvas);
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (day_view));
+ if (GTK_WIDGET_TOPLEVEL (toplevel))
+ gtk_window_present (GTK_WINDOW (toplevel));
+
+ return TRUE;
+}
+
Index: calendar/ea-day-view-main-item.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/calendar/ea-day-view-main-item.c,v
retrieving revision 1.3
diff -u -r1.3 ea-day-view-main-item.c
--- calendar/ea-day-view-main-item.c 10 Dec 2003 03:56:30 -0000 1.3
+++ calendar/ea-day-view-main-item.c 23 Sep 2004 03:59:32 -0000
@@ -28,6 +28,7 @@
#include "ea-day-view.h"
#include "ea-day-view-cell.h"
#include "ea-cell-table.h"
+#include <libgnome/gnome-i18n.h>
/* EaDayViewMainItem */
static void ea_day_view_main_item_class_init (EaDayViewMainItemClass *klass);
@@ -295,7 +296,7 @@
static G_CONST_RETURN gchar*
ea_day_view_main_item_get_description (AtkObject *accessible)
{
- return "a table to view and select the current time range";
+ return _("a table to view and select the current time range");
}
static gint
@@ -441,11 +442,16 @@
state_set = atk_object_ref_state_set (item_cell);
atk_state_set_add_state (state_set, ATK_STATE_FOCUSED);
g_object_unref (state_set);
- }
- g_signal_emit_by_name (ea_main_item,
+
+ g_signal_emit_by_name (ea_main_item,
"active-descendant-changed",
item_cell);
- g_signal_emit_by_name (data, "selection_changed");
+ g_signal_emit_by_name (data, "selection_changed");
+
+ atk_focus_tracker_notify (item_cell);
+ g_object_unref (item_cell);
+ }
+
}
/* helpers */
Index: calendar/ea-day-view.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/calendar/ea-day-view.c,v
retrieving revision 1.4
diff -u -r1.4 ea-day-view.c
--- calendar/ea-day-view.c 7 Nov 2003 07:12:35 -0000 1.4
+++ calendar/ea-day-view.c 23 Sep 2004 03:59:32 -0000
@@ -29,6 +29,7 @@
#include "ea-calendar-helpers.h"
#include "calendar-commands.h"
#include <glib/gstrfuncs.h>
+#include <libgnome/gnome-i18n.h>
static void ea_day_view_class_init (EaDayViewClass *klass);
@@ -143,14 +144,14 @@
--n_events;
if (n_events > 0)
g_snprintf (buffer, sizeof (buffer),
- ", %d events", n_events);
+ _(", %d events"), n_events);
view_type = gnome_calendar_get_view (gcal);
if (view_type == GNOME_CAL_WORK_WEEK_VIEW)
- accessible->name = g_strconcat ("work week view :",
+ accessible->name = g_strconcat (_("work week view :"),
label_text, buffer,
NULL);
else
- accessible->name = g_strconcat ("day view :",
+ accessible->name = g_strconcat (_("day view :"),
label_text, buffer,
NULL);
return accessible->name;
@@ -177,9 +178,9 @@
view_type = gnome_calendar_get_view (gcal);
if (view_type == GNOME_CAL_WORK_WEEK_VIEW)
- return "calendar view for a work week";
+ return _("calendar view for a work week");
else
- return "calendar view for one or more days";
+ return _("calendar view for one or more days");
}
}
Index: calendar/ea-gnome-calendar.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/calendar/ea-gnome-calendar.c,v
retrieving revision 1.4
diff -u -r1.4 ea-gnome-calendar.c
--- calendar/ea-gnome-calendar.c 4 Nov 2003 08:15:56 -0000 1.4
+++ calendar/ea-gnome-calendar.c 23 Sep 2004 03:59:33 -0000
@@ -26,6 +26,7 @@
#include "ea-gnome-calendar.h"
#include "calendar-commands.h"
#include <gtk/gtknotebook.h>
+#include <libgnome/gnome-i18n.h>
static void ea_gnome_calendar_class_init (EaGnomeCalendarClass *klass);
@@ -139,7 +140,7 @@
{
if (accessible->name)
return accessible->name;
- return "Gnome Calendar";
+ return _("Gnome Calendar");
}
static G_CONST_RETURN gchar*
@@ -147,7 +148,7 @@
{
if (accessible->description)
return accessible->description;
- return "Gnome Calendar";
+ return _("Gnome Calendar");
}
static gint
@@ -182,8 +183,8 @@
childWidget = gnome_calendar_get_search_bar_widget (calendarWidget);
child = gtk_widget_get_accessible (childWidget);
atk_object_set_parent (child, obj);
- atk_object_set_name (child, "search bar");
- atk_object_set_description (child, "evolution calendar search bar");
+ atk_object_set_name (child, _("search bar"));
+ atk_object_set_description (child, _("evolution calendar search bar"));
break;
case 1:
/* for the day/week view */
Index: calendar/ea-jump-button.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/calendar/ea-jump-button.c,v
retrieving revision 1.1
diff -u -r1.1 ea-jump-button.c
--- calendar/ea-jump-button.c 9 Dec 2003 07:09:24 -0000 1.1
+++ calendar/ea-jump-button.c 23 Sep 2004 03:59:35 -0000
@@ -28,6 +28,7 @@
#include "ea-week-view.h"
#include "e-week-view.h"
#include <libgnomecanvas/gnome-canvas.h>
+#include <libgnome/gnome-i18n.h>
static void ea_jump_button_class_init (EaJumpButtonClass *klass);
@@ -145,7 +146,7 @@
if (accessible->name)
return accessible->name;
- return "Jump";
+ return _("Jump button");
}
static G_CONST_RETURN gchar*
@@ -154,7 +155,7 @@
if (accessible->description)
return accessible->description;
- return "Click here, you can find more events.";
+ return _("Click here, you can find more events.");
}
static void
Index: calendar/ea-week-view-cell.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/calendar/ea-week-view-cell.c,v
retrieving revision 1.1
diff -u -r1.1 ea-week-view-cell.c
--- calendar/ea-week-view-cell.c 9 Dec 2003 07:09:24 -0000 1.1
+++ calendar/ea-week-view-cell.c 23 Sep 2004 03:59:39 -0000
@@ -103,6 +103,8 @@
gint *x, gint *y,
gint *width, gint *height,
AtkCoordType coord_type);
+static gboolean component_interface_grab_focus (AtkComponent *component);
+
static gpointer parent_class = NULL;
#ifdef ACC_DEBUG
@@ -208,6 +210,8 @@
GnomeCanvasItem *main_item;
gchar *new_name = g_strdup ("");
const gchar *row_label, *column_label;
+ gint new_column, new_row;
+ gint start_day;
atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible);
g_obj = atk_gobject_accessible_get_object (atk_gobj);
@@ -217,10 +221,20 @@
cell = E_WEEK_VIEW_CELL (g_obj);
main_item = cell->week_view->main_canvas_item;
ea_main_item = atk_gobject_accessible_for_object (G_OBJECT (main_item));
+
+ start_day = cell->week_view->display_start_day;
+ if (cell->column + start_day >= 7) {
+ new_column = cell->column + start_day - 7;
+ new_row = cell->row + 1;
+ } else {
+ new_column = cell->column + start_day;
+ new_row = cell->row;
+ }
+
column_label = atk_table_get_column_description (ATK_TABLE (ea_main_item),
- cell->column);
+ new_column);
row_label = atk_table_get_row_description (ATK_TABLE (ea_main_item),
- cell->row);
+ new_row);
new_name = g_strconcat (column_label, " ", row_label, NULL);
ATK_OBJECT_CLASS (parent_class)->set_name (accessible, new_name);
g_free (new_name);
@@ -314,6 +328,7 @@
g_return_if_fail (iface != NULL);
iface->get_extents = component_interface_get_extents;
+ iface->grab_focus = component_interface_grab_focus;
}
static void
@@ -328,6 +343,7 @@
GtkWidget *main_canvas;
gint week_view_width, week_view_height;
gint scroll_x, scroll_y;
+ gint start_day;
*x = *y = *width = *height = 0;
@@ -349,8 +365,114 @@
coord_type);
gnome_canvas_get_scroll_offsets (GNOME_CANVAS (week_view->main_canvas),
&scroll_x, &scroll_y);
- *x += week_view->col_offsets[cell->column] - scroll_x;
- *y += week_view->row_offsets[cell->row*2]- scroll_y;
- *width = week_view->col_widths[cell->column];
- *height = week_view->row_heights[ cell->row*2]*2;
+ start_day = week_view->display_start_day;
+ if (week_view->multi_week_view) {
+ if (week_view->compress_weekend && (cell->column == (5 - start_day))) {
+ *height = week_view->row_heights[cell->row*2];
+ *width = week_view->col_widths[cell->column];
+ *x += week_view->col_offsets[cell->column] - scroll_x;
+ *y += week_view->row_offsets[cell->row*2]- scroll_y;
+ } else if (week_view->compress_weekend && (cell->column == (6 - start_day))) {
+ *height = week_view->row_heights[cell->row*2];
+ *width = week_view->col_widths[cell->column - 1];
+ *x += week_view->col_offsets[cell->column - 1]- scroll_x;
+ *y += week_view->row_offsets[cell->row*2 + 1]- scroll_y;
+ } else if (week_view->compress_weekend && (cell->column > (6 - start_day))){
+ *height = week_view->row_heights[cell->row*2]*2;
+ *width = week_view->col_widths[cell->column - 1];
+ *x += week_view->col_offsets[cell->column - 1] - scroll_x;
+ *y += week_view->row_offsets[cell->row*2]- scroll_y;
+ } else {
+ *height = week_view->row_heights[cell->row*2]*2;
+ *width = week_view->col_widths[cell->column];
+ *x += week_view->col_offsets[cell->column] - scroll_x;
+ *y += week_view->row_offsets[cell->row*2]- scroll_y;
+ }
+ } else {
+ if (start_day < 3) {
+ if (cell->column < 3) {
+ *height = week_view->row_heights[cell->column*2]*2;
+ *width = week_view->col_widths[0];
+ *x += week_view->col_offsets[0] - scroll_x;
+ *y += week_view->row_offsets[cell->column*2]- scroll_y;
+ } else {
+ if (cell->column == 5 - start_day) {
+ *height = week_view->row_heights[(cell->column - 3)*2];
+ *width = week_view->col_widths[1];
+ *x += week_view->col_offsets[1] - scroll_x;
+ *y += week_view->row_offsets[(cell->column - 3)*2]- scroll_y;
+ } else if (cell->column == 6 - start_day) {
+ *height = week_view->row_heights[(cell->column - 4)*2];
+ *width = week_view->col_widths[1];
+ *x += week_view->col_offsets[1] - scroll_x;
+ *y += week_view->row_offsets[(cell->column - 3)*2 - 1]- scroll_y;
+ } else if (cell->column > 6 - start_day) {
+ *height = week_view->row_heights[(cell->column - 4)*2]*2;
+ *width = week_view->col_widths[1];
+ *x += week_view->col_offsets[1] - scroll_x;
+ *y += week_view->row_offsets[(cell->column - 4)*2]- scroll_y;
+ } else {
+ *height = week_view->row_heights[(cell->column - 3)*2]*2;
+ *width = week_view->col_widths[1];
+ *x += week_view->col_offsets[1] - scroll_x;
+ *y += week_view->row_offsets[(cell->column - 3)*2]- scroll_y;
+ }
+ }
+ } else if (cell->column < 4) {
+ if (cell->column == 5 - start_day) {
+ *height = week_view->row_heights[cell->column*2];
+ *width = week_view->col_widths[0];
+ *x += week_view->col_offsets[0] - scroll_x;
+ *y += week_view->row_offsets[cell->column*2]- scroll_y;
+ } else if (cell->column == 6 - start_day) {
+ *height = week_view->row_heights[(cell->column - 1)*2];
+ *width = week_view->col_widths[0];
+ *x += week_view->col_offsets[0] - scroll_x;
+ *y += week_view->row_offsets[cell->column*2 - 1]- scroll_y;
+ } else if (cell->column > 6 - start_day) {
+ *height = week_view->row_heights[(cell->column - 1)*2]*2;
+ *width = week_view->col_widths[0];
+ *x += week_view->col_offsets[0] - scroll_x;
+ *y += week_view->row_offsets[(cell->column - 1)*2]- scroll_y;
+ } else {
+ *height = week_view->row_heights[(cell->column)*2]*2;
+ *width = week_view->col_widths[0];
+ *x += week_view->col_offsets[0] - scroll_x;
+ *y += week_view->row_offsets[cell->column*2]- scroll_y;
+ }
+ } else {
+ *height = week_view->row_heights[(cell->column - 4)*2]*2;
+ *width = week_view->col_widths[1];
+ *x += week_view->col_offsets[1] - scroll_x;
+ *y += week_view->row_offsets[(cell->column - 4)*2]- scroll_y;
+ }
+ }
+}
+
+static gboolean
+component_interface_grab_focus (AtkComponent *comp)
+{
+ GObject *g_obj;
+ EWeekViewCell *cell;
+ EWeekView *week_view;
+ GtkWidget *toplevel;
+
+ g_return_val_if_fail (EA_IS_WEEK_VIEW_CELL (comp), FALSE);
+
+ g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (comp));
+ if (!g_obj)
+ return FALSE;
+
+ cell = E_WEEK_VIEW_CELL (g_obj);
+ week_view = cell->week_view;
+
+ week_view->selection_start_day = cell->row * 7 + cell->column;
+ week_view->selection_end_day = cell->row * 7 + cell->column;
+ gtk_widget_queue_draw (week_view->main_canvas);
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (week_view));
+ if (GTK_WIDGET_TOPLEVEL (toplevel))
+ gtk_window_present (GTK_WINDOW (toplevel));
+
+ return TRUE;
}
Index: calendar/ea-week-view-main-item.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/calendar/ea-week-view-main-item.c,v
retrieving revision 1.1
diff -u -r1.1 ea-week-view-main-item.c
--- calendar/ea-week-view-main-item.c 9 Dec 2003 07:09:24 -0000 1.1
+++ calendar/ea-week-view-main-item.c 23 Sep 2004 03:59:49 -0000
@@ -28,6 +28,7 @@
#include "ea-week-view.h"
#include "ea-week-view-cell.h"
#include "ea-cell-table.h"
+#include <libgnome/gnome-i18n.h>
/* EaWeekViewMainItem */
static void ea_week_view_main_item_class_init (EaWeekViewMainItemClass *klass);
@@ -242,6 +243,7 @@
NULL));
atk_object_initialize (accessible, obj);
+ accessible->role = ATK_ROLE_TABLE;
#ifdef ACC_DEBUG
++n_ea_week_view_main_item_created;
@@ -296,7 +298,7 @@
static G_CONST_RETURN gchar*
ea_week_view_main_item_get_description (AtkObject *accessible)
{
- return "a table to view and select the current time range";
+ return _("a table to view and select the current time range");
}
static gint
@@ -445,11 +447,14 @@
state_set = atk_object_ref_state_set (item_cell);
atk_state_set_add_state (state_set, ATK_STATE_FOCUSED);
g_object_unref (state_set);
- }
- g_signal_emit_by_name (ea_main_item,
+
+ g_signal_emit_by_name (ea_main_item,
"active-descendant-changed",
item_cell);
- g_signal_emit_by_name (data, "selection_changed");
+ g_signal_emit_by_name (data, "selection_changed");
+ atk_focus_tracker_notify (item_cell);
+ g_object_unref (item_cell);
+ }
}
/* helpers */
Index: calendar/ea-week-view.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/calendar/ea-week-view.c,v
retrieving revision 1.7
diff -u -r1.7 ea-week-view.c
--- calendar/ea-week-view.c 23 Apr 2004 07:04:33 -0000 1.7
+++ calendar/ea-week-view.c 23 Sep 2004 03:59:51 -0000
@@ -29,6 +29,7 @@
#include "ea-calendar-helpers.h"
#include "calendar-commands.h"
#include <gal/e-text/e-text.h>
+#include <libgnome/gnome-i18n.h>
static void ea_week_view_class_init (EaWeekViewClass *klass);
@@ -144,17 +145,17 @@
--n_events;
if (n_events > 0)
g_snprintf (buffer, sizeof (buffer),
- ", %d events", n_events);
+ _(", %d events"), n_events);
view_type = gnome_calendar_get_view (gcal);
if (view_type == GNOME_CAL_MONTH_VIEW)
- accessible->name = g_strconcat ("month view :",
+ accessible->name = g_strconcat (_("month view :"),
label_text, buffer,
NULL);
else
- accessible->name = g_strconcat ("week view :",
+ accessible->name = g_strconcat (_("week view :"),
label_text, buffer,
NULL);
return accessible->name;
@@ -181,9 +182,9 @@
view_type = gnome_calendar_get_view (gcal);
if (view_type == GNOME_CAL_MONTH_VIEW)
- return "calendar view for a month";
+ return _("calendar view for a month");
else
- return "calendar view for one or more weeks";
+ return _("calendar view for one or more weeks");
}
}
Index: widgets/ea-calendar-cell.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/widgets/ea-calendar-cell.c,v
retrieving revision 1.2
diff -u -r1.2 ea-calendar-cell.c
--- widgets/ea-calendar-cell.c 10 Dec 2003 03:56:31 -0000 1.2
+++ widgets/ea-calendar-cell.c 23 Sep 2004 03:59:53 -0000
@@ -172,7 +172,7 @@
object = g_object_new (EA_TYPE_CALENDAR_CELL, NULL);
atk_object = ATK_OBJECT (object);
atk_object_initialize (atk_object, obj);
- atk_object->role = ATK_ROLE_TABLE_CELL;
+ atk_object->role = ATK_ROLE_UNKNOWN;
#ifdef ACC_DEBUG
++n_ea_calendar_cell_created;
Index: widgets/ea-calendar-item.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/widgets/ea-calendar-item.c,v
retrieving revision 1.4
diff -u -r1.4 ea-calendar-item.c
--- widgets/ea-calendar-item.c 10 Dec 2003 03:56:31 -0000 1.4
+++ widgets/ea-calendar-item.c 23 Sep 2004 04:00:01 -0000
@@ -28,6 +28,7 @@
#include <string.h>
#include <libgnomecanvas/gnome-canvas.h>
#include <glib/gdate.h>
+#include <libgnome/gnome-i18n.h>
#include "ea-calendar-item.h"
#include "ea-calendar-cell.h"
#include "ea-cell-table.h"
@@ -42,6 +43,7 @@
static G_CONST_RETURN gchar* ea_calendar_item_get_description (AtkObject *accessible);
static gint ea_calendar_item_get_n_children (AtkObject *accessible);
static AtkObject *ea_calendar_item_ref_child (AtkObject *accessible, gint index);
+static AtkStateSet* ea_calendar_item_ref_state_set (AtkObject *accessible);
/* atk table interface */
static void atk_table_interface_init (AtkTableIface *iface);
@@ -201,6 +203,7 @@
class->get_name = ea_calendar_item_get_name;
class->get_description = ea_calendar_item_get_description;
+ class->ref_state_set = ea_calendar_item_ref_state_set;
class->get_n_children = ea_calendar_item_get_n_children;
class->ref_child = ea_calendar_item_ref_child;
@@ -279,7 +282,7 @@
&end_year, &end_month, &end_day)) {
++start_month;
++end_month;
- sprintf (new_name, "calendar (from %d-%d-%d to %d-%d-%d)",
+ sprintf (new_name, _("calendar (from %d-%d-%d to %d-%d-%d)"),
start_year, start_month, start_day,
end_year, end_month, end_day);
}
@@ -313,7 +316,24 @@
if (accessible->description)
return accessible->description;
- return "evolution calendar item";
+ return _("evolution calendar item");
+}
+
+static AtkStateSet*
+ea_calendar_item_ref_state_set (AtkObject *accessible)
+{
+ AtkStateSet *state_set;
+ GObject *g_obj;
+
+ state_set = ATK_OBJECT_CLASS (parent_class)->ref_state_set (accessible);
+ g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(accessible));
+ if (!g_obj)
+ return state_set;
+
+ atk_state_set_add_state (state_set, ATK_STATE_ENABLED);
+ atk_state_set_add_state (state_set, ATK_STATE_SENSITIVE);
+
+ return state_set;
}
static gint
@@ -1039,9 +1059,9 @@
cell_data = g_object_get_data (G_OBJECT(ea_calitem),
"ea-calendar-cell-table");
if (cell_data) {
- ea_cell_table_destroy (cell_data);
g_object_set_data (G_OBJECT(ea_calitem),
"ea-calendar-cell-table", NULL);
+ ea_cell_table_destroy (cell_data);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]