Fix bug #332821 [a11y composer]

Boby Wang <[email protected]>
Newsgroups gmane.comp.gnome.evolution.patches
Organization Sun China Engineering Research Institute
Message-ID <1141375021.886.31.camel@sweeper>
Hi,
   I have attached a patch for bug #332321
URL: http://bugzilla.gnome.org/show_bug.cgi?id=332821
   Please review it.
   Thanks.
Boby.

_______________________________________________
Evolution-patches mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/evolution-patches
attachment-2.diff (text/x-patch, 10.5 KB)
Index: a11y/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/a11y/ChangeLog,v
retrieving revision 1.47
diff -p -r1.47 ChangeLog
*** a11y/ChangeLog	27 Jan 2006 14:50:37 -0000	1.47
--- a11y/ChangeLog	3 Mar 2006 08:17:42 -0000
***************
*** 1,3 ****
--- 1,15 ----
+ 2006-03-03  Boby Wang <[email protected]>
+ 
+ 	** Fix bug #332821
+ 
+ 	* widgets/Makefile.am:
+ 	* widgets/ea-widgets.c: (e_combo_button_a11y_init),
+ 	(e_expander_a11y_init):
+ 	* widgets/ea-widgets.h:
+ 	* add widgets/ea-expander.c:
+ 	* add widget/ea-expander.h"
+ 	Implement the accessibility of EExpander
+ 
  2006-01-27  Kjartan Maraas  <[email protected]>
  
  	reviewed by: Harish Krishnaswamy <[email protected]> 
Index: a11y/ea-expander.c
===================================================================
RCS file: a11y/ea-expander.c
diff -N a11y/ea-expander.c
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- a11y/ea-expander.c	3 Mar 2006 08:17:42 -0000
***************
*** 0 ****
--- 1,165 ----
+ /* Evolution Accessibility: ea-expander.c
+  *
+  * Copyright (C) 2006 Novell, Inc.
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of version 2 of the GNU General Public
+  * License as published by the Free Software Foundation.
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public
+  * License along with this program; if not, write to the
+  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+  * Boston, MA 02111-1307, USA.
+  *
+  * Author: Boby Wang <[email protected]> Sun Microsystem Inc., 2006
+  *
+  */
+ 
+ #include <config.h>
+ #include "ea-expander.h"
+ #include <gtk/gtkbutton.h>
+ #include <glib/gi18n.h>
+ 
+ static AtkObjectClass *parent_class;
+ static GType parent_type;
+ 
+ /* Action IDs */
+ enum {
+ 	ACTIVATE,
+ 	LAST_ACTION
+ };
+ 
+ static G_CONST_RETURN gchar*
+ ea_expander_get_name (AtkObject *a11y)
+ {
+ 	return _("Toggle Attachment Bar");
+ }
+ 
+ /* Action interface */
+ static G_CONST_RETURN gchar *
+ ea_expander_action_get_name (AtkAction *action, gint i)
+ {
+ 	switch (i)
+ 	{
+ 		case ACTIVATE:
+ 			return _("activate");
+ 		default:
+ 			return NULL;
+ 	}
+ }
+ 
+ static gboolean
+ ea_expander_do_action (AtkAction *action, gint i)
+ {
+ 	GtkWidget *widget;
+ 	EExpander *expander;
+ 
+ 	widget = GTK_ACCESSIBLE (action)->widget;
+ 	if (!widget || !GTK_WIDGET_IS_SENSITIVE (widget) || !GTK_WIDGET_VISIBLE (widget))
+ 		return FALSE;
+ 
+ 	expander = E_EXPANDER (widget);
+ 
+ 	switch (i)
+ 	{
+ 		case ACTIVATE:
+ 			g_signal_emit_by_name (expander, "activate");
+ 			return TRUE;
+ 		default:
+ 			return FALSE;
+ 	}
+ }
+ 
+ static gint
+ ea_expander_get_n_actions (AtkAction *action)
+ {
+ 	return LAST_ACTION;
+ }
+ 
+ static void
+ atk_action_interface_init (AtkActionIface *iface)
+ {
+ 	g_return_if_fail (iface != NULL);
+ 
+ 	iface->do_action = ea_expander_do_action;
+ 	iface->get_n_actions = ea_expander_get_n_actions;
+ 	iface->get_name = ea_expander_action_get_name;
+ }
+ 
+ static void
+ ea_expander_class_init (EaExpanderClass *klass)
+ {
+ 	AtkObjectClass *atk_object_class = ATK_OBJECT_CLASS (klass);
+ 
+ 	parent_class = g_type_class_ref (parent_type);
+ 
+ 	atk_object_class->get_name = ea_expander_get_name;
+ }
+ 
+ static void
+ ea_expander_init (EaExpander *a11y)
+ {
+ 	/* Empty */
+ }
+ 
+ GType
+ ea_expander_get_type (void)
+ {
+ 	static GType type = 0;
+ 
+ 	if (!type) {
+ 		AtkObjectFactory *factory;
+ 		GTypeQuery query;
+ 
+ 		GTypeInfo info = {
+ 			sizeof (EaExpanderClass),
+ 			(GBaseInitFunc) NULL,
+ 			(GBaseFinalizeFunc) NULL,
+ 			(GClassInitFunc) ea_expander_class_init,
+ 			(GClassFinalizeFunc) NULL,
+ 			NULL, /* class data */
+ 			sizeof (EaExpander),
+ 			0,
+ 			(GInstanceInitFunc) ea_expander_init,
+ 			NULL /* value_tree */
+ 		};
+ 
+ 		static const GInterfaceInfo atk_action_info = {
+ 			(GInterfaceInitFunc) atk_action_interface_init,
+ 			(GInterfaceFinalizeFunc) NULL,
+ 			NULL
+ 		};
+ 		
+ 		factory = atk_registry_get_factory (atk_get_default_registry (), GTK_TYPE_BIN);
+ 		parent_type = atk_object_factory_get_accessible_type (factory);
+ 		g_type_query (parent_type, &query);
+ 
+ 		info.class_size = query.class_size;
+ 		info.instance_size = query.instance_size;
+ 
+ 		type = g_type_register_static (parent_type, "EaExpander", &info, 0);
+ 		g_type_add_interface_static (type, ATK_TYPE_ACTION,
+ 						&atk_action_info);
+ 	}
+ 
+ 	return type;
+ }
+ 
+ AtkObject *
+ ea_expander_new (GtkWidget *widget)
+ {
+ 	EaExpander *a11y;
+ 
+ 	a11y = g_object_new (ea_expander_get_type (), NULL);
+ 
+ 	GTK_ACCESSIBLE (a11y)->widget = GTK_WIDGET (widget);
+ 	ATK_OBJECT (a11y)->role = ATK_ROLE_TOGGLE_BUTTON;
+ 
+ 	return ATK_OBJECT (a11y);
+ }
+ 
Index: a11y/ea-expander.h
===================================================================
RCS file: a11y/ea-expander.h
diff -N a11y/ea-expander.h
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- a11y/ea-expander.h	3 Mar 2006 08:17:42 -0000
***************
*** 0 ****
--- 1,50 ----
+ /* Evolution Accessibility: ea-expander.h
+  *
+  * Copyright (C) 2006 Novell, Inc.
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of version 2 of the GNU General Public
+  * License as published by the Free Software Foundation.
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public
+  * License along with this program; if not, write to the
+  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+  * Boston, MA 02111-1307, USA.
+  *
+  * Author: Boby Wang <[email protected]> Sun Microsystem Inc., 2006
+  *
+  */
+ 
+ #ifndef _EA_EXPANDER_H_
+ #define _EA_EXPANDER_H_
+ 
+ #include <gtk/gtkaccessible.h>
+ #include <misc/e-expander.h>
+ 
+ #define EA_TYPE_EXPANDER           (ea_expander_get_type ())
+ #define EA_EXPANDER(obj)           (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_EXPANDER, EaExpander))
+ #define EA_EXPANDER_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST ((klass,), EA_TYPE_EXPANDER, EaExpanderClass))
+ #define EA_IS_EXPANDER(obj)        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_EXPANDER))
+ #define EA_IS_EXPANDER_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_EXPANDER_CLASS))
+ 
+ typedef struct _EaExpander EaExpander;
+ typedef struct _EaExpanderClass EaExpanderClass;
+ 
+ struct _EaExpander {
+ 	GtkAccessible object;
+ };
+ 
+ struct _EaExpanderClass {
+ 	GtkAccessibleClass parent_class;
+ };
+ 
+ /* Standard Glib function */
+ GType ea_expander_get_type (void);
+ AtkObject* ea_expander_new (GtkWidget *expander);
+ 
+ #endif /* ! _EA_EXPANDER_H */_
Index: a11y/widgets/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/a11y/widgets/Makefile.am,v
retrieving revision 1.7
diff -p -r1.7 Makefile.am
*** a11y/widgets/Makefile.am	18 Jun 2005 18:26:08 -0000	1.7
--- a11y/widgets/Makefile.am	3 Mar 2006 08:17:42 -0000
*************** libevolution_widgets_a11y_la_SOURCES =		
*** 22,27 ****
--- 22,29 ----
  	ea-calendar-cell.h			\
  	ea-combo-button.c			\
  	ea-combo-button.h			\
+ 	ea-expander.c				\
+ 	ea-expander.h				\
  	ea-widgets.c				\
  	ea-widgets.h
  
Index: a11y/widgets/ea-widgets.c
===================================================================
RCS file: /cvs/gnome/evolution/a11y/widgets/ea-widgets.c,v
retrieving revision 1.4
diff -p -r1.4 ea-widgets.c
*** a11y/widgets/ea-widgets.c	27 Jan 2006 14:50:40 -0000	1.4
--- a11y/widgets/ea-widgets.c	3 Mar 2006 08:17:42 -0000
***************
*** 26,35 ****
--- 26,37 ----
  #include "ea-factory.h"
  #include "widgets/ea-calendar-item.h"
  #include "widgets/ea-combo-button.h"
+ #include "widgets/ea-expander.h"
  #include "ea-widgets.h"
  
  EA_FACTORY_GOBJECT (EA_TYPE_CALENDAR_ITEM, ea_calendar_item, ea_calendar_item_new)
  EA_FACTORY (EA_TYPE_COMBO_BUTTON, ea_combo_button, ea_combo_button_new)
+ EA_FACTORY (EA_TYPE_EXPANDER, ea_expander, ea_expander_new)
  
  void e_calendar_item_a11y_init (void)
  {
*************** void e_calendar_item_a11y_init (void)
*** 39,42 ****
--- 41,49 ----
  void e_combo_button_a11y_init (void)
  {
      EA_SET_FACTORY (e_combo_button_get_type (), ea_combo_button);
+ }
+ 
+ void e_expander_a11y_init (void)
+ {
+      EA_SET_FACTORY (e_expander_get_type (), ea_expander);
  }
Index: a11y/widgets/ea-widgets.h
===================================================================
RCS file: /cvs/gnome/evolution/a11y/widgets/ea-widgets.h,v
retrieving revision 1.2
diff -p -r1.2 ea-widgets.h
*** a11y/widgets/ea-widgets.h	4 Jan 2005 07:40:37 -0000	1.2
--- a11y/widgets/ea-widgets.h	3 Mar 2006 08:17:42 -0000
***************
*** 31,35 ****
--- 31,36 ----
  
  void e_calendar_item_a11y_init (void);
  void e_combo_button_a11y_init (void);
+ void e_expander_a11y_init (void);
  
  #endif /* _EA_WIDGETS_H__ */
Index: widgets/misc/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/widgets/misc/ChangeLog,v
retrieving revision 1.401
diff -p -r1.401 ChangeLog
*** widgets/misc/ChangeLog	28 Feb 2006 10:49:36 -0000	1.401
--- widgets/misc/ChangeLog	3 Mar 2006 08:17:46 -0000
***************
*** 1,3 ****
--- 1,10 ----
+ 2006-03-03  Boby Wang <[email protected]>
+ 
+ 	** Fix bug #332821
+ 
+ 	* e-expander.c: (e_expander_class_init):
+ 	Implement the accessibility feature of EExpander
+ 
  2006-02-28  Devashish Sharma  <[email protected]>
  
  	* e-reflow.c :(do_adjustment): Check and see if reflow->items 
Index: widgets/misc/e-expander.c
===================================================================
RCS file: /cvs/gnome/evolution/widgets/misc/e-expander.c,v
retrieving revision 1.4
diff -p -r1.4 e-expander.c
*** widgets/misc/e-expander.c	30 Jan 2006 12:28:04 -0000	1.4
--- widgets/misc/e-expander.c	3 Mar 2006 08:17:46 -0000
***************
*** 24,29 ****
--- 24,30 ----
  #include <config.h>
  
  #include "e-expander.h"
+ #include "ea-widgets.h"
  
  #include <gtk/gtklabel.h>
  #include <gtk/gtkcontainer.h>
*************** e_expander_class_init (EExpanderClass *k
*** 243,248 ****
--- 244,251 ----
  		  NULL, NULL,
  		  g_cclosure_marshal_VOID__VOID,
  		  G_TYPE_NONE, 0);
+ 
+   e_expander_a11y_init();
  }
  
  static void
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.