Commit 307e7706577a0da4e6888dccfcb213315e14e215
1 parent
1f8ed5de
Exists in
master
and in
5 other branches
Work in progress
Showing
4 changed files
with
84 additions
and
53 deletions
Show diff stats
src/gtk/main.c
src/gtk/pw3270-GTK.cbp
| ... | ... | @@ -7,8 +7,8 @@ |
| 7 | 7 | <Option compiler="gcc" /> |
| 8 | 8 | <Build> |
| 9 | 9 | <Target title="Debug"> |
| 10 | - <Option output=".bin\Debug\pw3270-GTK" prefix_auto="1" extension_auto="1" /> | |
| 11 | - <Option object_output=".obj\Debug\" /> | |
| 10 | + <Option output=".bin/Debug/pw3270-GTK" prefix_auto="1" extension_auto="1" /> | |
| 11 | + <Option object_output=".obj/Debug/" /> | |
| 12 | 12 | <Option type="1" /> |
| 13 | 13 | <Option compiler="gcc" /> |
| 14 | 14 | <Compiler> |
| ... | ... | @@ -17,8 +17,8 @@ |
| 17 | 17 | </Compiler> |
| 18 | 18 | </Target> |
| 19 | 19 | <Target title="Release"> |
| 20 | - <Option output=".bin\Release\pw3270-GTK" prefix_auto="1" extension_auto="1" /> | |
| 21 | - <Option object_output=".obj\Release\" /> | |
| 20 | + <Option output=".bin/Release/pw3270-GTK" prefix_auto="1" extension_auto="1" /> | |
| 21 | + <Option object_output=".obj/Release/" /> | |
| 22 | 22 | <Option type="0" /> |
| 23 | 23 | <Option compiler="gcc" /> |
| 24 | 24 | <Compiler> |
| ... | ... | @@ -32,7 +32,7 @@ |
| 32 | 32 | <Compiler> |
| 33 | 33 | <Add option="-Wall" /> |
| 34 | 34 | <Add option="`pkg-config lib3270 gtk+-2.0 lib3270 --cflags`" /> |
| 35 | - <Add directory="..\include" /> | |
| 35 | + <Add directory="../include" /> | |
| 36 | 36 | </Compiler> |
| 37 | 37 | <Linker> |
| 38 | 38 | <Add option="`pkg-config lib3270 gtk+-2.0 lib3270 --libs`" /> |
| ... | ... | @@ -44,12 +44,12 @@ |
| 44 | 44 | <Unit filename="colors.c"> |
| 45 | 45 | <Option compilerVar="CC" /> |
| 46 | 46 | </Unit> |
| 47 | - <Unit filename="common\common.h" /> | |
| 48 | - <Unit filename="common\common.h.in" /> | |
| 49 | - <Unit filename="common\config.c"> | |
| 47 | + <Unit filename="common/common.h" /> | |
| 48 | + <Unit filename="common/common.h.in" /> | |
| 49 | + <Unit filename="common/config.c"> | |
| 50 | 50 | <Option compilerVar="CC" /> |
| 51 | 51 | </Unit> |
| 52 | - <Unit filename="common\sources.mak" /> | |
| 52 | + <Unit filename="common/sources.mak" /> | |
| 53 | 53 | <Unit filename="dialog.c"> |
| 54 | 54 | <Option compilerVar="CC" /> |
| 55 | 55 | </Unit> |
| ... | ... | @@ -66,74 +66,78 @@ |
| 66 | 66 | <Unit filename="print.c"> |
| 67 | 67 | <Option compilerVar="CC" /> |
| 68 | 68 | </Unit> |
| 69 | - <Unit filename="uiparser\accelerator.c"> | |
| 69 | + <Unit filename="uiparser/accelerator.c"> | |
| 70 | 70 | <Option compilerVar="CC" /> |
| 71 | 71 | </Unit> |
| 72 | - <Unit filename="uiparser\action.c"> | |
| 72 | + <Unit filename="uiparser/action.c"> | |
| 73 | 73 | <Option compilerVar="CC" /> |
| 74 | 74 | </Unit> |
| 75 | - <Unit filename="uiparser\menu.c"> | |
| 75 | + <Unit filename="uiparser/menu.c"> | |
| 76 | 76 | <Option compilerVar="CC" /> |
| 77 | 77 | </Unit> |
| 78 | - <Unit filename="uiparser\menubar.c"> | |
| 78 | + <Unit filename="uiparser/menubar.c"> | |
| 79 | 79 | <Option compilerVar="CC" /> |
| 80 | 80 | </Unit> |
| 81 | - <Unit filename="uiparser\menuitem.c"> | |
| 81 | + <Unit filename="uiparser/menuitem.c"> | |
| 82 | 82 | <Option compilerVar="CC" /> |
| 83 | 83 | </Unit> |
| 84 | - <Unit filename="uiparser\parsefile.c"> | |
| 84 | + <Unit filename="uiparser/parsefile.c"> | |
| 85 | 85 | <Option compilerVar="CC" /> |
| 86 | 86 | </Unit> |
| 87 | - <Unit filename="uiparser\parser.c"> | |
| 87 | + <Unit filename="uiparser/parser.c"> | |
| 88 | 88 | <Option compilerVar="CC" /> |
| 89 | 89 | </Unit> |
| 90 | - <Unit filename="uiparser\parser.h" /> | |
| 91 | - <Unit filename="uiparser\popup.c"> | |
| 90 | + <Unit filename="uiparser/parser.h" /> | |
| 91 | + <Unit filename="uiparser/popup.c"> | |
| 92 | 92 | <Option compilerVar="CC" /> |
| 93 | 93 | </Unit> |
| 94 | - <Unit filename="uiparser\private.h" /> | |
| 95 | - <Unit filename="uiparser\script.c"> | |
| 94 | + <Unit filename="uiparser/private.h" /> | |
| 95 | + <Unit filename="uiparser/script.c"> | |
| 96 | 96 | <Option compilerVar="CC" /> |
| 97 | 97 | </Unit> |
| 98 | - <Unit filename="uiparser\separator.c"> | |
| 98 | + <Unit filename="uiparser/separator.c"> | |
| 99 | 99 | <Option compilerVar="CC" /> |
| 100 | 100 | </Unit> |
| 101 | - <Unit filename="uiparser\sources.mak" /> | |
| 102 | - <Unit filename="uiparser\toolbar.c"> | |
| 101 | + <Unit filename="uiparser/sources.mak" /> | |
| 102 | + <Unit filename="uiparser/toolbar.c"> | |
| 103 | 103 | <Option compilerVar="CC" /> |
| 104 | 104 | </Unit> |
| 105 | - <Unit filename="uiparser\toolitem.c"> | |
| 105 | + <Unit filename="uiparser/toolitem.c"> | |
| 106 | 106 | <Option compilerVar="CC" /> |
| 107 | 107 | </Unit> |
| 108 | - <Unit filename="v3270\clipboard.c"> | |
| 108 | + <Unit filename="v3270/accessible.c"> | |
| 109 | 109 | <Option compilerVar="CC" /> |
| 110 | 110 | </Unit> |
| 111 | - <Unit filename="v3270\draw.c"> | |
| 111 | + <Unit filename="v3270/accessible.h" /> | |
| 112 | + <Unit filename="v3270/clipboard.c"> | |
| 112 | 113 | <Option compilerVar="CC" /> |
| 113 | 114 | </Unit> |
| 114 | - <Unit filename="v3270\genmarshal" /> | |
| 115 | - <Unit filename="v3270\iocallback.c"> | |
| 115 | + <Unit filename="v3270/draw.c"> | |
| 116 | 116 | <Option compilerVar="CC" /> |
| 117 | 117 | </Unit> |
| 118 | - <Unit filename="v3270\keyboard.c"> | |
| 118 | + <Unit filename="v3270/genmarshal" /> | |
| 119 | + <Unit filename="v3270/iocallback.c"> | |
| 119 | 120 | <Option compilerVar="CC" /> |
| 120 | 121 | </Unit> |
| 121 | - <Unit filename="v3270\locked.xbm" /> | |
| 122 | - <Unit filename="v3270\marshal.c"> | |
| 122 | + <Unit filename="v3270/keyboard.c"> | |
| 123 | 123 | <Option compilerVar="CC" /> |
| 124 | 124 | </Unit> |
| 125 | - <Unit filename="v3270\marshal.h" /> | |
| 126 | - <Unit filename="v3270\mouse.c"> | |
| 125 | + <Unit filename="v3270/locked.xbm" /> | |
| 126 | + <Unit filename="v3270/marshal.c"> | |
| 127 | 127 | <Option compilerVar="CC" /> |
| 128 | 128 | </Unit> |
| 129 | - <Unit filename="v3270\oia.c"> | |
| 129 | + <Unit filename="v3270/marshal.h" /> | |
| 130 | + <Unit filename="v3270/mouse.c"> | |
| 130 | 131 | <Option compilerVar="CC" /> |
| 131 | 132 | </Unit> |
| 132 | - <Unit filename="v3270\private.h" /> | |
| 133 | - <Unit filename="v3270\sources.mak" /> | |
| 134 | - <Unit filename="v3270\unlocked.xbm" /> | |
| 135 | - <Unit filename="v3270\v3270.h" /> | |
| 136 | - <Unit filename="v3270\widget.c"> | |
| 133 | + <Unit filename="v3270/oia.c"> | |
| 134 | + <Option compilerVar="CC" /> | |
| 135 | + </Unit> | |
| 136 | + <Unit filename="v3270/private.h" /> | |
| 137 | + <Unit filename="v3270/sources.mak" /> | |
| 138 | + <Unit filename="v3270/unlocked.xbm" /> | |
| 139 | + <Unit filename="v3270/v3270.h" /> | |
| 140 | + <Unit filename="v3270/widget.c"> | |
| 137 | 141 | <Option compilerVar="CC" /> |
| 138 | 142 | </Unit> |
| 139 | 143 | <Unit filename="valgrind.suppression" /> | ... | ... |
src/gtk/v3270/accessible.c
| ... | ... | @@ -40,14 +40,17 @@ |
| 40 | 40 | |
| 41 | 41 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ |
| 42 | 42 | |
| 43 | +static void atk_component_interface_init (AtkComponentIface *iface); | |
| 43 | 44 | static void atk_editable_text_interface_init (AtkEditableTextIface *iface); |
| 45 | + | |
| 44 | 46 | static void v3270_accessible_class_init (v3270AccessibleClass *klass); |
| 45 | 47 | static void v3270_accessible_init (v3270Accessible *widget); |
| 46 | 48 | |
| 47 | 49 | /*--[ Widget definition ]----------------------------------------------------------------------------*/ |
| 48 | 50 | |
| 49 | -G_DEFINE_TYPE_WITH_CODE (v3270Accessible, v3270_accessible, GTK_TYPE_V3270_ACCESSIBLE, | |
| 50 | - G_IMPLEMENT_INTERFACE (ATK_TYPE_EDITABLE_TEXT, atk_editable_text_interface_init) ) | |
| 51 | +G_DEFINE_TYPE_WITH_CODE (v3270Accessible, v3270_accessible, GTK_TYPE_ACCESSIBLE, | |
| 52 | + G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT, atk_component_interface_init) | |
| 53 | + G_IMPLEMENT_INTERFACE (ATK_TYPE_EDITABLE_TEXT, atk_editable_text_interface_init) ) | |
| 51 | 54 | |
| 52 | 55 | // G_IMPLEMENT_INTERFACE (ATK_TYPE_ACTION, atk_action_interface_init) |
| 53 | 56 | // G_IMPLEMENT_INTERFACE (ATK_TYPE_EDITABLE_TEXT, atk_editable_text_interface_init) |
| ... | ... | @@ -74,6 +77,20 @@ static void v3270_accessible_class_init(v3270AccessibleClass *klass) |
| 74 | 77 | */ |
| 75 | 78 | } |
| 76 | 79 | |
| 80 | +static void | |
| 81 | +atk_component_interface_init(AtkComponentIface *iface) | |
| 82 | +{ | |
| 83 | +/* | |
| 84 | + iface->get_extents = gtk_widget_accessible_get_extents; | |
| 85 | + iface->get_size = gtk_widget_accessible_get_size; | |
| 86 | + iface->get_layer = gtk_widget_accessible_get_layer; | |
| 87 | + iface->grab_focus = gtk_widget_accessible_grab_focus; | |
| 88 | + iface->set_extents = gtk_widget_accessible_set_extents; | |
| 89 | + iface->set_position = gtk_widget_accessible_set_position; | |
| 90 | + iface->set_size = gtk_widget_accessible_set_size; | |
| 91 | +*/ | |
| 92 | +} | |
| 93 | + | |
| 77 | 94 | static void v3270_accessible_init(v3270Accessible *widget) |
| 78 | 95 | { |
| 79 | 96 | trace("*********************************** %s",__FUNCTION__); | ... | ... |
src/gtk/v3270/widget.c
| ... | ... | @@ -57,10 +57,11 @@ |
| 57 | 57 | |
| 58 | 58 | // http://git.gnome.org/browse/gtk+/tree/gtk/gtkdrawingarea.c?h=gtk-3-0 |
| 59 | 59 | |
| 60 | -static void v3270_realize ( GtkWidget * widget); | |
| 60 | +static void v3270_realize ( GtkWidget * widget) ; | |
| 61 | 61 | static void v3270_size_allocate ( GtkWidget * widget, |
| 62 | - GtkAllocation * allocation); | |
| 63 | -static void v3270_send_configure ( v3270 * terminal); | |
| 62 | + GtkAllocation * allocation ); | |
| 63 | +static void v3270_send_configure ( v3270 * terminal ); | |
| 64 | +static AtkObject * v3270_get_accessible ( GtkWidget * widget ); | |
| 64 | 65 | |
| 65 | 66 | // Signals |
| 66 | 67 | static void v3270_activate (GtkWidget *widget); |
| ... | ... | @@ -231,6 +232,9 @@ static void v3270_class_init(v3270Class *klass) |
| 231 | 232 | widget_class->motion_notify_event = v3270_motion_notify_event; |
| 232 | 233 | widget_class->popup_menu = v3270_popup_menu; |
| 233 | 234 | |
| 235 | + /* Accessibility support */ | |
| 236 | + widget_class->get_accessible = v3270_get_accessible; | |
| 237 | + | |
| 234 | 238 | klass->activate = v3270_activate; |
| 235 | 239 | klass->toggle_changed = v3270_toggle_changed; |
| 236 | 240 | klass->message_changed = v3270_update_message; |
| ... | ... | @@ -433,15 +437,6 @@ static void v3270_class_init(v3270Class *klass) |
| 433 | 437 | pw3270_VOID__VOID_BOOL, |
| 434 | 438 | G_TYPE_NONE, 1, G_TYPE_BOOLEAN); |
| 435 | 439 | |
| 436 | -#ifdef DEBUG | |
| 437 | - trace("%s: Acessibility check starts",__FUNCTION__); | |
| 438 | - v3270_accessible_get_type(); | |
| 439 | - trace("%s: Acessibility check ends",__FUNCTION__); | |
| 440 | -#endif // DEBUG | |
| 441 | - | |
| 442 | -#if GTK_CHECK_VERSION(3,0,0) | |
| 443 | - gtk_widget_class_set_accessible_type(widget_class, GTK_TYPE_V3270_ACCESSIBLE); | |
| 444 | -#endif | |
| 445 | 440 | } |
| 446 | 441 | |
| 447 | 442 | void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, int width, int height) |
| ... | ... | @@ -1102,4 +1097,18 @@ const GtkWidgetClass * v3270_get_parent_class(void) |
| 1102 | 1097 | return GTK_WIDGET_CLASS(v3270_parent_class); |
| 1103 | 1098 | } |
| 1104 | 1099 | |
| 1100 | +static AtkObject * v3270_get_accessible(GtkWidget * widget) | |
| 1101 | +{ | |
| 1102 | + v3270 * terminal = GTK_V3270(widget); | |
| 1103 | + | |
| 1104 | +// trace("%s acc=%p",__FUNCTION__,terminal->accessible); | |
| 1105 | + | |
| 1106 | + if(!terminal->accessible) | |
| 1107 | + { | |
| 1108 | + terminal->accessible = g_object_new(GTK_TYPE_V3270_ACCESSIBLE,NULL); | |
| 1109 | + atk_object_initialize(ATK_OBJECT(terminal->accessible), widget); | |
| 1110 | + } | |
| 1111 | + | |
| 1112 | + return ATK_OBJECT(terminal->accessible); | |
| 1113 | +} | |
| 1105 | 1114 | ... | ... |