aboutsummaryrefslogtreecommitdiffstats
path: root/a11y/calendar/ea-calendar.c
diff options
context:
space:
mode:
authorBolian Yin <bolian.yin@sun.com>2003-11-04 16:15:56 +0800
committerBolian Yin <byin@src.gnome.org>2003-11-04 16:15:56 +0800
commitfd52cd5eeb0f48087306d3473ef20925e27b664d (patch)
treedff5ede4b4d6fa4b81d73a7083f0177cfb9b47f5 /a11y/calendar/ea-calendar.c
parent1ec2cf1777ae358c0bdf32e0ea8d0db04fb01bf6 (diff)
downloadgsoc2013-evolution-fd52cd5eeb0f48087306d3473ef20925e27b664d.tar
gsoc2013-evolution-fd52cd5eeb0f48087306d3473ef20925e27b664d.tar.gz
gsoc2013-evolution-fd52cd5eeb0f48087306d3473ef20925e27b664d.tar.bz2
gsoc2013-evolution-fd52cd5eeb0f48087306d3473ef20925e27b664d.tar.lz
gsoc2013-evolution-fd52cd5eeb0f48087306d3473ef20925e27b664d.tar.xz
gsoc2013-evolution-fd52cd5eeb0f48087306d3473ef20925e27b664d.tar.zst
gsoc2013-evolution-fd52cd5eeb0f48087306d3473ef20925e27b664d.zip
Fixes # 48509
2003-11-04 Bolian Yin <bolian.yin@sun.com> Fixes # 48509 * new files: ea-cell-table.h ea-cell-table.c * calendar/Makefile.am: add entries for new files * calendar/New files added: ea-day-view-main-item.c ea-day-view-main-item.h ea-day-view-cell.c ea-day-view-cell.h * Add debug info and remove some non-C99 compilers warnings. * calendar/ea-cal-view: add action interface. svn path=/trunk/; revision=23180
Diffstat (limited to 'a11y/calendar/ea-calendar.c')
-rw-r--r--a11y/calendar/ea-calendar.c145
1 files changed, 80 insertions, 65 deletions
diff --git a/a11y/calendar/ea-calendar.c b/a11y/calendar/ea-calendar.c
index b5296c2618..0882f9c653 100644
--- a/a11y/calendar/ea-calendar.c
+++ b/a11y/calendar/ea-calendar.c
@@ -31,57 +31,65 @@
#include "calendar/ea-cal-view.h"
#include "calendar/ea-cal-view-event.h"
#include "calendar/ea-day-view.h"
+#include "calendar/ea-day-view-main-item.h"
#include "calendar/ea-week-view.h"
#include "calendar/ea-gnome-calendar.h"
-EA_FACTORY (EA_TYPE_CAL_VIEW, ea_cal_view, ea_cal_view_new);
-EA_FACTORY (EA_TYPE_DAY_VIEW, ea_day_view, ea_day_view_new);
-EA_FACTORY (EA_TYPE_WEEK_VIEW, ea_week_view, ea_week_view_new);
-EA_FACTORY (EA_TYPE_GNOME_CALENDAR, ea_gnome_calendar, ea_gnome_calendar_new);
+EA_FACTORY (EA_TYPE_CAL_VIEW, ea_cal_view, ea_cal_view_new)
+EA_FACTORY (EA_TYPE_DAY_VIEW, ea_day_view, ea_day_view_new)
+EA_FACTORY_GOBJECT (EA_TYPE_DAY_VIEW_MAIN_ITEM, ea_day_view_main_item, ea_day_view_main_item_new)
+EA_FACTORY (EA_TYPE_WEEK_VIEW, ea_week_view, ea_week_view_new)
+EA_FACTORY (EA_TYPE_GNOME_CALENDAR, ea_gnome_calendar, ea_gnome_calendar_new)
static gboolean ea_calendar_focus_watcher (GSignalInvocationHint *ihint,
- guint n_param_values,
- const GValue *param_values,
- gpointer data);
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer data);
void
gnome_calendar_a11y_init (void)
{
- EA_SET_FACTORY (gnome_calendar_get_type(), ea_gnome_calendar);
- /* we only add focus watcher when accessibility is enabled
- */
- if (atk_get_root ())
- g_signal_add_emission_hook (g_signal_lookup ("event", E_TYPE_TEXT),
- 0, ea_calendar_focus_watcher,
- NULL, (GDestroyNotify) NULL);
+ EA_SET_FACTORY (gnome_calendar_get_type(), ea_gnome_calendar);
+ /* we only add focus watcher when accessibility is enabled
+ */
+ if (atk_get_root ()) {
+ g_signal_add_emission_hook (g_signal_lookup ("event", E_TYPE_TEXT),
+ 0, ea_calendar_focus_watcher,
+ NULL, (GDestroyNotify) NULL);
+ g_signal_add_emission_hook (g_signal_lookup ("event-after",
+ e_day_view_get_type()),
+ 0, ea_calendar_focus_watcher,
+ NULL, (GDestroyNotify) NULL);
+ g_signal_add_emission_hook (g_signal_lookup ("event",
+ e_day_view_main_item_get_type()),
+ 0, ea_calendar_focus_watcher,
+ NULL, (GDestroyNotify) NULL);
+
+ }
}
void
e_cal_view_a11y_init (void)
{
- EA_SET_FACTORY (e_cal_view_get_type(), ea_cal_view);
- /* we only add focus watcher when accessibility is enabled
- */
-#if 0
- if (atk_get_root ())
- g_signal_add_emission_hook (g_signal_lookup ("selection_time_changed",
- e_cal_view_get_type ()),
- 0, ea_calendar_focus_watcher,
- NULL, (GDestroyNotify) NULL);
-#endif
+ EA_SET_FACTORY (e_cal_view_get_type(), ea_cal_view);
}
void
e_day_view_a11y_init (void)
{
- EA_SET_FACTORY (e_day_view_get_type(), ea_day_view);
+ EA_SET_FACTORY (e_day_view_get_type(), ea_day_view);
+}
+
+void e_day_view_main_item_a11y_init (void)
+{
+ EA_SET_FACTORY (e_day_view_main_item_get_type (), ea_day_view_main_item);
}
void
e_week_view_a11y_init (void)
{
- EA_SET_FACTORY (e_week_view_get_type(), ea_week_view);
+ EA_SET_FACTORY (e_week_view_get_type(), ea_week_view);
}
gboolean
@@ -90,46 +98,53 @@ ea_calendar_focus_watcher (GSignalInvocationHint *ihint,
const GValue *param_values,
gpointer data)
{
- GObject *object;
- GdkEvent *event;
-
- object = g_value_get_object (param_values + 0);
- event = g_value_get_boxed (param_values + 1);
-
- if (E_IS_TEXT (object)) {
- /* "event" signal on canvas item
- */
- GnomeCanvasItem *canvas_item;
- AtkObject *ea_event;
-
- canvas_item = GNOME_CANVAS_ITEM (object);
- if (event->type == GDK_FOCUS_CHANGE) {
- if (event->focus_change.in)
- ea_event =
- ea_calendar_helpers_get_accessible_for (canvas_item);
- else
- /* focus out */
- ea_event = NULL;
- atk_focus_tracker_notify (ea_event);
-
- }
- }
-#if 0
- else if (E_IS_DAY_VIEW (object)) {
- /* "selection_time_changed" signal on day_view
- */
- if (ATK_IS_SELECTION (object)) {
- AtkSelection *atk_selection;
- AtkObject *atk_obj;
- atk_selection = ATK_SELECTION (object);
- atk_obj = atk_selection_ref_selection (atk_selection, 0);
+ GObject *object;
+ GdkEvent *event;
+ AtkObject *ea_event = NULL;
+ object = g_value_get_object (param_values + 0);
+ event = g_value_get_boxed (param_values + 1);
+
+ if (E_IS_TEXT (object)) {
+ /* "event" signal on canvas item
+ */
+ GnomeCanvasItem *canvas_item;
+
+ canvas_item = GNOME_CANVAS_ITEM (object);
+ if (event->type == GDK_FOCUS_CHANGE) {
+ if (event->focus_change.in)
+ ea_event =
+ ea_calendar_helpers_get_accessible_for (canvas_item);
+ else
+ /* focus out */
+ ea_event = NULL;
+ atk_focus_tracker_notify (ea_event);
+
+ }
+ }
+ else if (E_IS_DAY_VIEW (object)) {
+ EDayView *day_view = E_DAY_VIEW (object);
+ if (event->type == GDK_FOCUS_CHANGE) {
+ if (event->focus_change.in) {
+ /* give main item chance to emit focus */
+ gnome_canvas_item_grab_focus (day_view->main_canvas_item);
+ }
+ }
+ }
+ else if (E_IS_DAY_VIEW_MAIN_ITEM (object)) {
+ if (event->type == GDK_FOCUS_CHANGE) {
+ if (event->focus_change.in) {
+ /* we should emit focus on main item */
+ ea_event = atk_gobject_accessible_for_object (object);
+ }
+ else
+ /* focus out */
+ ea_event = NULL;
#ifdef ACC_DEBUG
- printf ("EvoAcc: ref a selection %p\n", atk_selection);
-#endif
- atk_focus_tracker_notify (atk_obj);
- }
- }
+ printf ("EvoAcc: focus notify on day main item %p\n", (void *)object);
#endif
- return TRUE;
+ atk_focus_tracker_notify (ea_event);
+ }
+ }
+ return TRUE;
}