From 5af094cd1f08f4287c0585d5664441054eb39105 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Mon, 16 Apr 2012 19:54:39 +0000 Subject: [PATCH] Trabalhando com acessibilidade --- src/gtk/v3270/accessible.c | 38 ++++++++++++++++++++++++++++++++------ src/gtk/v3270/widget.c | 10 +++++----- src/lib3270/selection.c | 2 ++ 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/src/gtk/v3270/accessible.c b/src/gtk/v3270/accessible.c index 0c3da8f..3f513c0 100644 --- a/src/gtk/v3270/accessible.c +++ b/src/gtk/v3270/accessible.c @@ -83,24 +83,50 @@ static const gchar * v3270_accessible_get_description (AtkObject *accessible) return _( "3270 screen" ); } +static void v3270_accessible_focus_event(AtkObject *obj, gboolean focus_in) +{ + AtkObject *focus_obj = g_object_get_data (G_OBJECT (obj), "gail-focus-object"); + + if(focus_obj == NULL) + focus_obj = obj; + + atk_object_notify_state_change(focus_obj, ATK_STATE_FOCUSED, focus_in); +} + +static AtkAttributeSet * v3270_accessible_get_attributes (AtkObject *obj) +{ + AtkAttributeSet * attributes; + AtkAttribute * toolkit = g_new(AtkAttribute, 1); + + toolkit->name = g_strdup("toolkit"); + toolkit->value = g_strdup("gtk"); + + attributes = g_slist_append (NULL, toolkit); + + return attributes; +} + +static void v3270_accessible_initialize (AtkObject *obj, gpointer data) +{ + obj->role = ATK_ROLE_TEXT; +} + static void v3270_accessible_class_init(v3270AccessibleClass *klass) { AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - class->get_description = v3270_accessible_get_description; + class->get_description = v3270_accessible_get_description; + class->focus_event = v3270_accessible_focus_event; + class->get_attributes = v3270_accessible_get_attributes; + class->initialize = v3270_accessible_initialize; /* - class->focus_event = gtk_widget_accessible_focus_event; - klass->notify_gtk = gtk_widget_accessible_notify_gtk; class->get_parent = gtk_widget_accessible_get_parent; class->ref_relation_set = gtk_widget_accessible_ref_relation_set; class->ref_state_set = gtk_widget_accessible_ref_state_set; class->get_index_in_parent = gtk_widget_accessible_get_index_in_parent; - class->initialize = gtk_widget_accessible_initialize; - class->get_attributes = gtk_widget_accessible_get_attributes; - class->focus_event = gtk_widget_accessible_focus_event; */ } diff --git a/src/gtk/v3270/widget.c b/src/gtk/v3270/widget.c index cce142b..5bca397 100644 --- a/src/gtk/v3270/widget.c +++ b/src/gtk/v3270/widget.c @@ -616,8 +616,8 @@ static void update_model(H3270 *session, const char *name, int model, int rows, static void changed(H3270 *session, int offset, int len) { - GtkWidget * widget = session->widget; - AtkObject * obj = gtk_widget_get_accessible(widget); + GtkWidget * widget = session->widget; + GtkAccessible * obj = GTK_V3270(widget)->accessible; trace("%s: offset=%d len=%d",__FUNCTION__,offset,len) @@ -669,8 +669,8 @@ static void set_selection(H3270 *session, unsigned char status) static void update_selection(H3270 *session, int start, int end) { // Selected region changed - GtkWidget * widget = GTK_WIDGET(session->widget); - AtkObject * atk_obj = gtk_widget_get_accessible(widget); + GtkWidget * widget = GTK_WIDGET(session->widget); + GtkAccessible * atk_obj = GTK_V3270(widget)->accessible; if(atk_obj) g_signal_emit_by_name(atk_obj,"text-selection-changed"); @@ -1137,7 +1137,7 @@ int v3270_connect(GtkWidget *widget, const gchar *host) static gboolean notify_focus(GtkWidget *widget, GdkEventFocus *event) { - AtkObject *obj = gtk_widget_get_accessible (widget); + GtkAccessible *obj = GTK_V3270(widget)->accessible; if(obj) g_signal_emit_by_name (obj, "focus-event", event->in); diff --git a/src/lib3270/selection.c b/src/lib3270/selection.c index bf3349c..8f14a88 100644 --- a/src/lib3270/selection.c +++ b/src/lib3270/selection.c @@ -586,6 +586,7 @@ LIB3270_EXPORT int lib3270_drag_selection(H3270 *h, unsigned char flag, int orig if(!lib3270_get_selection_bounds(h,&first,&last)) return origin; +/* trace("%s: flag=%04x %s %s %s %s",__FUNCTION__, flag, flag & SELECTION_LEFT ? "Left" : "-", @@ -593,6 +594,7 @@ LIB3270_EXPORT int lib3270_drag_selection(H3270 *h, unsigned char flag, int orig flag & SELECTION_RIGHT ? "Right" : "-", flag & SELECTION_BOTTOM ? "Bottom" : "-" ); +*/ if(!flag) return origin; -- libgit2 0.21.2