Commit 30b68cb166ceb88d602eb2f943f811da32cf825c
1 parent
4c176b46
Exists in
master
and in
5 other branches
Implementando indicador de insert, otimizando toggles
Showing
9 changed files
with
91 additions
and
125 deletions
Show diff stats
src/gtk/v3270/oia.c
... | ... | @@ -421,7 +421,22 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, struct v3270_me |
421 | 421 | cairo_show_text(cr,gettext(msg)); |
422 | 422 | } |
423 | 423 | |
424 | -// trace("%s ends",__FUNCTION__); | |
424 | +} | |
425 | + | |
426 | +static void draw_insert(cairo_t *cr, H3270 *host, GdkColor *color, GdkRectangle *rect) | |
427 | +{ | |
428 | + if(lib3270_get_toggle(host,LIB3270_TOGGLE_INSERT)) | |
429 | + { | |
430 | + double y = rect->y+(rect->height-2); | |
431 | + | |
432 | + gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND); | |
433 | + | |
434 | + cairo_move_to(cr,rect->x,y); | |
435 | + cairo_rel_line_to(cr,rect->width/2,-(rect->height/1.7)); | |
436 | + cairo_line_to(cr,rect->x+rect->width,y); | |
437 | + cairo_stroke(cr); | |
438 | + } | |
439 | + | |
425 | 440 | } |
426 | 441 | |
427 | 442 | void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect) |
... | ... | @@ -446,8 +461,6 @@ void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_me |
446 | 461 | { V3270_OIA_SSL, setup_double_char_position }, |
447 | 462 | }; |
448 | 463 | |
449 | -// static const V3270_OIA_FIELD left[] = { V3270_OIA_UNDERA, V3270_OIA_CONNECTION }; | |
450 | - | |
451 | 464 | int f; |
452 | 465 | int rCol = metrics->left+(cols*metrics->width); |
453 | 466 | int lCol = metrics->left+1; |
... | ... | @@ -514,8 +527,6 @@ void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_me |
514 | 527 | |
515 | 528 | memset(rect+V3270_OIA_MESSAGE,0,sizeof(GdkRectangle)); |
516 | 529 | |
517 | -// trace("%s lcol=%d rcol=%d",__FUNCTION__,lCol,rCol); | |
518 | - | |
519 | 530 | if(lCol < rCol) |
520 | 531 | { |
521 | 532 | GdkRectangle *r = rect+V3270_OIA_MESSAGE; |
... | ... | @@ -529,6 +540,10 @@ void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_me |
529 | 540 | cairo_save(cr); |
530 | 541 | v3270_draw_ssl_status(cr,host,metrics,color,rect+V3270_OIA_SSL); |
531 | 542 | cairo_restore(cr); |
543 | + | |
544 | + cairo_save(cr); | |
545 | + draw_insert(cr,host,color,rect+V3270_OIA_INSERT); | |
546 | + cairo_restore(cr); | |
532 | 547 | } |
533 | 548 | |
534 | 549 | /** |
... | ... | @@ -810,6 +825,23 @@ void v3270_draw_alt_status(v3270 *terminal) |
810 | 825 | update_text_field(terminal,terminal->keyflags & KEY_FLAG_ALT,V3270_OIA_ALT,"A"); |
811 | 826 | } |
812 | 827 | |
828 | +void v3270_draw_ins_status(v3270 *terminal) | |
829 | +{ | |
830 | + GdkRectangle *r; | |
831 | + cairo_t *cr; | |
832 | + | |
833 | + if(!terminal->surface) | |
834 | + return; | |
835 | + | |
836 | + cr = set_update_region(terminal,&r,V3270_OIA_INSERT); | |
837 | + | |
838 | + draw_insert(cr,terminal->host,terminal->color,r); | |
839 | + | |
840 | + cairo_destroy(cr); | |
841 | + gtk_widget_queue_draw_area(GTK_WIDGET(terminal),r->x,r->y,r->width,r->height); | |
842 | + | |
843 | +} | |
844 | + | |
813 | 845 | static gboolean update_timer(struct timer_info *info) |
814 | 846 | { |
815 | 847 | cairo_t * cr; | ... | ... |
src/gtk/v3270/private.h
... | ... | @@ -96,6 +96,7 @@ void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v327 |
96 | 96 | |
97 | 97 | void v3270_draw_shift_status(v3270 *terminal); |
98 | 98 | void v3270_draw_alt_status(v3270 *terminal); |
99 | +void v3270_draw_ins_status(v3270 *terminal); | |
99 | 100 | |
100 | 101 | void v3270_update_cursor_surface(v3270 *widget,unsigned char chr,unsigned short attr); |
101 | 102 | ... | ... |
src/gtk/v3270/widget.c
src/include/lib3270.h
... | ... | @@ -294,17 +294,6 @@ |
294 | 294 | LIB3270_EXPORT void lib3270_register_schange(H3270 *h,LIB3270_STATE tx, void (*func)(H3270 *, int, void *),void *data); |
295 | 295 | |
296 | 296 | /** |
297 | - * Register a toggle change callback. | |
298 | - * | |
299 | - * @param h Session handle. | |
300 | - * @param ix Toggle id | |
301 | - * @param func Function to call when toggle changes. | |
302 | - * | |
303 | - * @return 0 if ok, EINVAL if the toggle id is invalid. | |
304 | - */ | |
305 | - LIB3270_EXPORT int lib3270_register_tchange(H3270 *h, LIB3270_TOGGLE ix, void (*func)(H3270 *h, int, LIB3270_TOGGLE_TYPE reason)); | |
306 | - | |
307 | - /** | |
308 | 297 | * Network connect operation, keep main loop running |
309 | 298 | * |
310 | 299 | * Sets 'reconnect_host', 'current_host' and 'full_current_host' as |
... | ... | @@ -431,10 +420,8 @@ |
431 | 420 | * @param ix Toggle id. |
432 | 421 | * @param value New toggle state (non zero for true). |
433 | 422 | * |
434 | - * @return 0 if the toggle wasn't changed, non zero if it was changed. | |
435 | - * | |
436 | 423 | */ |
437 | - LIB3270_EXPORT int lib3270_set_toggle(H3270 *h, LIB3270_TOGGLE ix, int value); | |
424 | + LIB3270_EXPORT void lib3270_set_toggle(H3270 *h, LIB3270_TOGGLE ix, int value); | |
438 | 425 | |
439 | 426 | /** |
440 | 427 | * Translate a string toggle name to the corresponding value. | ... | ... |
src/lib3270/appres.h
... | ... | @@ -30,13 +30,12 @@ struct toggle { |
30 | 30 | // Widget w[2]; /* the menu item widgets */ |
31 | 31 | // const char *label[2]; /* labels */ |
32 | 32 | void (*upcall)(H3270 *, struct toggle *, LIB3270_TOGGLE_TYPE); /* change value */ |
33 | - void (*callback)(H3270 *, int, LIB3270_TOGGLE_TYPE); | |
33 | +// void (*callback)(H3270 *, int, LIB3270_TOGGLE_TYPE); | |
34 | 34 | |
35 | 35 | }; |
36 | 36 | |
37 | 37 | #define toggled(ix) (appres.toggle[ix].value) |
38 | -#define toggle_toggle(t) \ | |
39 | - { (t)->value = !(t)->value; } | |
38 | +// #define toggle_toggle(t) { (t)->value = !(t)->value; } | |
40 | 39 | |
41 | 40 | /* Application resources */ |
42 | 41 | ... | ... |
src/lib3270/kybd.c
... | ... | @@ -18,7 +18,7 @@ |
18 | 18 | * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple |
19 | 19 | * Place, Suite 330, Boston, MA, 02111-1307, USA |
20 | 20 | * |
21 | - * Este programa está nomeado como kybd.c e possui 4414 linhas de código. | |
21 | + * Este programa está nomeado como kybd.c e possui - linhas de código. | |
22 | 22 | * |
23 | 23 | * Contatos: |
24 | 24 | * |
... | ... | @@ -98,8 +98,7 @@ static unsigned char pa_xlate[] = { |
98 | 98 | static unsigned long unlock_id; |
99 | 99 | static time_t unlock_delay_time; |
100 | 100 | #define UNLOCK_MS 350 /* 0.35s after last unlock */ |
101 | -static Boolean key_Character(int code, Boolean with_ge, Boolean pasting, | |
102 | - Boolean *skipped); | |
101 | +static Boolean key_Character(int code, Boolean with_ge, Boolean pasting,Boolean *skipped); | |
103 | 102 | static Boolean flush_ta(void); |
104 | 103 | static void key_AID(unsigned char aid_code); |
105 | 104 | static void kybdlock_set(unsigned int bits, const char *cause); |
... | ... | @@ -527,10 +526,11 @@ key_AID(unsigned char aid_code) |
527 | 526 | /* Act as if the host had written our input. */ |
528 | 527 | h3270.buffer_addr = h3270.cursor_addr; |
529 | 528 | } |
530 | - if (!IN_SSCP || aid_code != AID_CLEAR) { | |
529 | + if (!IN_SSCP || aid_code != AID_CLEAR) | |
530 | + { | |
531 | 531 | status_twait(&h3270); |
532 | 532 | mcursor_waiting(&h3270); |
533 | - set_toggle(INSERT,0); | |
533 | + lib3270_set_toggle(&h3270,LIB3270_TOGGLE_INSERT,0); | |
534 | 534 | kybdlock_set(KL_OIA_TWAIT | KL_OIA_LOCKED, "key_AID"); |
535 | 535 | } |
536 | 536 | aid = aid_code; |
... | ... | @@ -745,15 +745,12 @@ key_Character_wrapper(Widget w unused, XEvent *event unused, String *params, |
745 | 745 | * Handle an ordinary displayable character key. Lots of stuff to handle |
746 | 746 | * insert-mode, protected fields and etc. |
747 | 747 | */ |
748 | -static Boolean | |
749 | -key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped) | |
748 | +static Boolean key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped) | |
750 | 749 | { |
751 | 750 | register int baddr, faddr, xaddr; |
752 | 751 | register unsigned char fa; |
753 | 752 | enum dbcs_why why; |
754 | 753 | |
755 | -// reset_idle_timer(); | |
756 | - | |
757 | 754 | if (skipped != NULL) |
758 | 755 | *skipped = False; |
759 | 756 | |
... | ... | @@ -798,7 +795,7 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped) |
798 | 795 | /* Add the character. */ |
799 | 796 | if (h3270.ea_buf[baddr].cc == EBC_so) { |
800 | 797 | |
801 | - if (toggled(INSERT)) { | |
798 | + if (toggled(LIB3270_TOGGLE_INSERT)) { | |
802 | 799 | if (!ins_prep(faddr, baddr, 1)) |
803 | 800 | return False; |
804 | 801 | } else { |
... | ... | @@ -835,7 +832,7 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped) |
835 | 832 | /* fall through... */ |
836 | 833 | case DBCS_LEFT: |
837 | 834 | if (why == DBCS_ATTRIBUTE) { |
838 | - if (toggled(INSERT)) { | |
835 | + if (toggled(LIB3270_TOGGLE_INSERT)) { | |
839 | 836 | if (!ins_prep(faddr, baddr, 1)) |
840 | 837 | return False; |
841 | 838 | } else { |
... | ... | @@ -852,7 +849,7 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped) |
852 | 849 | } else { |
853 | 850 | Boolean was_si; |
854 | 851 | |
855 | - if (toggled(INSERT)) { | |
852 | + if (toggled(LIB3270_TOGGLE_INSERT)) { | |
856 | 853 | /* |
857 | 854 | * Inserting SBCS into a DBCS subfield. |
858 | 855 | * If this is the first position, we |
... | ... | @@ -909,7 +906,7 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped) |
909 | 906 | break; |
910 | 907 | default: |
911 | 908 | case DBCS_NONE: |
912 | - if (toggled(INSERT) && !ins_prep(faddr, baddr, 1)) | |
909 | + if (toggled(LIB3270_TOGGLE_INSERT) && !ins_prep(faddr, baddr, 1)) | |
913 | 910 | return False; |
914 | 911 | break; |
915 | 912 | } |
... | ... | @@ -1292,73 +1289,28 @@ retry: |
1292 | 1289 | */ |
1293 | 1290 | void key_ACharacter(unsigned char c, enum keytype keytype, enum iaction cause,Boolean *skipped) |
1294 | 1291 | { |
1295 | -// register int i; | |
1296 | -// struct akeysym ak; | |
1297 | - | |
1298 | -// reset_idle_timer(); | |
1299 | - | |
1300 | 1292 | if (skipped != NULL) |
1301 | 1293 | *skipped = False; |
1302 | 1294 | |
1303 | -// ak.keysym = c; | |
1304 | -// ak.keytype = keytype; | |
1295 | + trace_event(" %s -> Key(\"%s\")\n",ia_name[(int) cause], ctl_see((int) c)); | |
1305 | 1296 | |
1306 | -/* | |
1307 | - switch (composing) { | |
1308 | - case NONE: | |
1309 | - break; | |
1310 | - case COMPOSE: | |
1311 | - for (i = 0; i < n_composites; i++) | |
1312 | - if (ak_eq(composites[i].k1, ak) || | |
1313 | - ak_eq(composites[i].k2, ak)) | |
1314 | - break; | |
1315 | - if (i < n_composites) { | |
1316 | - cc_first.keysym = c; | |
1317 | - cc_first.keytype = keytype; | |
1318 | - composing = FIRST; | |
1319 | - status_compose(True, c, keytype); | |
1320 | - } else { | |
1321 | - lib3270_ring_bell(); | |
1322 | - composing = NONE; | |
1323 | - status_compose(False, 0, KT_STD); | |
1324 | - } | |
1325 | - return; | |
1326 | - case FIRST: | |
1327 | - composing = NONE; | |
1328 | - status_compose(False, 0, KT_STD); | |
1329 | - for (i = 0; i < n_composites; i++) | |
1330 | - if ((ak_eq(composites[i].k1, cc_first) && | |
1331 | - ak_eq(composites[i].k2, ak)) || | |
1332 | - (ak_eq(composites[i].k1, ak) && | |
1333 | - ak_eq(composites[i].k2, cc_first))) | |
1334 | - break; | |
1335 | - if (i < n_composites) { | |
1336 | - c = composites[i].translation.keysym; | |
1337 | - keytype = composites[i].translation.keytype; | |
1338 | - } else { | |
1339 | - lib3270_ring_bell(); | |
1340 | - return; | |
1341 | - } | |
1342 | - break; | |
1343 | - } | |
1344 | -*/ | |
1345 | - | |
1346 | - trace_event(" %s -> Key(\"%s\")\n", | |
1347 | - ia_name[(int) cause], ctl_see((int) c)); | |
1348 | - if (IN_3270) { | |
1349 | - if (c < ' ') { | |
1297 | + if (IN_3270) | |
1298 | + { | |
1299 | + if (c < ' ') | |
1300 | + { | |
1350 | 1301 | trace_event(" dropped (control char)\n"); |
1351 | 1302 | return; |
1352 | 1303 | } |
1353 | - (void) key_Character((int) asc2ebc[c], keytype == KT_GE, False, | |
1354 | - skipped); | |
1304 | + (void) key_Character((int) asc2ebc[c], keytype == KT_GE, False, skipped); | |
1355 | 1305 | } |
1356 | 1306 | #if defined(X3270_ANSI) /*[*/ |
1357 | - else if (IN_ANSI) { | |
1307 | + else if (IN_ANSI) | |
1308 | + { | |
1358 | 1309 | net_sendc((char) c); |
1359 | 1310 | } |
1360 | 1311 | #endif /*]*/ |
1361 | - else { | |
1312 | + else | |
1313 | + { | |
1362 | 1314 | trace_event(" dropped (not connected)\n"); |
1363 | 1315 | } |
1364 | 1316 | } |
... | ... | @@ -1533,7 +1485,7 @@ do_reset(Boolean explicit) |
1533 | 1485 | } |
1534 | 1486 | |
1535 | 1487 | /* Always clear insert mode. */ |
1536 | - set_toggle(INSERT,0); | |
1488 | + lib3270_set_toggle(&h3270,LIB3270_TOGGLE_INSERT,0); | |
1537 | 1489 | |
1538 | 1490 | /* Otherwise, if not connect, reset is a no-op. */ |
1539 | 1491 | if (!CONNECTED) | ... | ... |
src/lib3270/paste.c
... | ... | @@ -133,14 +133,14 @@ |
133 | 133 | return -1; |
134 | 134 | } |
135 | 135 | |
136 | - static int paste_char(PASTE_DATA *data, unsigned char c) | |
136 | + static int paste_char(H3270 *session, PASTE_DATA *data, unsigned char c) | |
137 | 137 | { |
138 | 138 | |
139 | 139 | if(toggled(SMART_PASTE)) |
140 | 140 | { |
141 | - int faddr = find_field_attribute(&h3270,h3270.cursor_addr); | |
142 | - if(FA_IS_PROTECTED(h3270.ea_buf[faddr].fa)) | |
143 | - h3270.cursor_addr++; | |
141 | + int faddr = find_field_attribute(session,session->cursor_addr); | |
142 | + if(FA_IS_PROTECTED(session->ea_buf[faddr].fa)) | |
143 | + session->cursor_addr++; | |
144 | 144 | else |
145 | 145 | key_ACharacter(c, KT_STD, IA_PASTE, NULL); |
146 | 146 | } |
... | ... | @@ -197,7 +197,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str) |
197 | 197 | switch(*str) |
198 | 198 | { |
199 | 199 | case '\t': |
200 | - last = paste_char(&data, ' '); | |
200 | + last = paste_char(h,&data, ' '); | |
201 | 201 | break; |
202 | 202 | |
203 | 203 | case '\n': |
... | ... | @@ -218,7 +218,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str) |
218 | 218 | break; |
219 | 219 | |
220 | 220 | default: |
221 | - last = paste_char(&data, *str); | |
221 | + last = paste_char(h,&data, *str); | |
222 | 222 | |
223 | 223 | } |
224 | 224 | str++; | ... | ... |
src/lib3270/toggle.h
... | ... | @@ -59,14 +59,14 @@ |
59 | 59 | #define AID_WAIT LIB3270_TOGGLE_AID_WAIT |
60 | 60 | #define FULL_SCREEN LIB3270_TOGGLE_FULL_SCREEN |
61 | 61 | #define RECONNECT LIB3270_TOGGLE_RECONNECT |
62 | - #define INSERT LIB3270_TOGGLE_INSERT | |
62 | +// #define INSERT LIB3270_TOGGLE_INSERT | |
63 | 63 | #define KEYPAD LIB3270_TOGGLE_KEYPAD |
64 | 64 | #define SMART_PASTE LIB3270_TOGGLE_SMART_PASTE |
65 | 65 | #define N_TOGGLES LIB3270_TOGGLE_COUNT |
66 | 66 | |
67 | 67 | #define LIB3270_TOGGLE_ID LIB3270_TOGGLE |
68 | 68 | |
69 | - #define register_3270_toggle_monitor(ix,callback) lib3270_register_tchange(NULL,ix,callback) | |
69 | +// #define register_3270_toggle_monitor(ix,callback) lib3270_register_tchange(NULL,ix,callback) | |
70 | 70 | #define get_3270_toggle_by_name(x) lib3270_get_toggle_id(x) |
71 | 71 | |
72 | 72 | // Compatibility macros |
... | ... | @@ -75,7 +75,7 @@ |
75 | 75 | |
76 | 76 | #define get_3270_toggle_name(ix) lib3270_get_toggle_name(ix) |
77 | 77 | #define get_toggle_name(ix) lib3270_get_toggle_name(ix) |
78 | - #define set_toggle(ix,value) lib3270_set_toggle(NULL,ix,value) | |
78 | +// #define set_toggle(ix,value) lib3270_set_toggle(NULL,ix,value) | |
79 | 79 | #define get_toggle_by_name(name) lib3270_get_toggle_id(name) |
80 | 80 | |
81 | 81 | #endif /* TOGGLE3270_H_INCLUDED */ | ... | ... |
src/lib3270/toggles.c
... | ... | @@ -79,6 +79,7 @@ static const char *toggle_names[LIB3270_TOGGLE_COUNT] = |
79 | 79 | }; |
80 | 80 | |
81 | 81 | |
82 | +/* | |
82 | 83 | static void no_callback(H3270 *h, int value, LIB3270_TOGGLE_TYPE reason) |
83 | 84 | { |
84 | 85 | } |
... | ... | @@ -106,6 +107,7 @@ LIB3270_EXPORT int lib3270_register_tchange(H3270 *h, LIB3270_TOGGLE_ID ix, void |
106 | 107 | |
107 | 108 | return 0; |
108 | 109 | } |
110 | +*/ | |
109 | 111 | |
110 | 112 | LIB3270_EXPORT unsigned char lib3270_get_toggle(H3270 *session, LIB3270_TOGGLE ix) |
111 | 113 | { |
... | ... | @@ -117,54 +119,46 @@ LIB3270_EXPORT unsigned char lib3270_get_toggle(H3270 *session, LIB3270_TOGGLE i |
117 | 119 | } |
118 | 120 | |
119 | 121 | /* |
120 | - * Generic toggle stuff | |
122 | + * Call the internal update routine | |
121 | 123 | */ |
122 | -static void do_toggle_reason(H3270 *session, LIB3270_TOGGLE ix, LIB3270_TOGGLE_TYPE reason) | |
124 | +static void toggle_notify(H3270 *session, struct toggle *t, LIB3270_TOGGLE ix) | |
123 | 125 | { |
124 | - struct toggle *t = &appres.toggle[ix]; | |
125 | - | |
126 | - /* | |
127 | - * Change the value, call the internal update routine, and reset the | |
128 | - * menu label(s). | |
129 | - */ | |
130 | - toggle_toggle(t); | |
131 | - t->upcall(session, t, reason); | |
132 | - t->callback(session,t->value, (int) reason); | |
126 | + t->upcall(session, t, TT_INTERACTIVE); | |
127 | +// t->callback(session,t->value, (int) TT_INTERACTIVE); | |
133 | 128 | |
134 | 129 | if(session->update_toggle) |
135 | - session->update_toggle(session,ix,t->value,reason,toggle_names[ix]); | |
130 | + session->update_toggle(session,ix,t->value,TT_INTERACTIVE,toggle_names[ix]); | |
136 | 131 | |
137 | 132 | } |
138 | 133 | |
139 | -LIB3270_EXPORT int lib3270_set_toggle(H3270 *session, LIB3270_TOGGLE ix, int value) | |
134 | +LIB3270_EXPORT void lib3270_set_toggle(H3270 *session, LIB3270_TOGGLE ix, int value) | |
140 | 135 | { |
141 | - Boolean v = ((Boolean) (value != 0)); // Convert int in Boolean | |
142 | - | |
143 | 136 | struct toggle *t; |
144 | 137 | |
145 | 138 | CHECK_SESSION_HANDLE(session); |
146 | 139 | |
147 | 140 | if(ix < 0 || ix >= LIB3270_TOGGLE_COUNT) |
148 | - return 0; | |
141 | + return; | |
149 | 142 | |
150 | 143 | t = &appres.toggle[ix]; |
144 | + t->value = (value != 0); | |
151 | 145 | |
152 | - if(t->value == v) | |
153 | - return 0; | |
154 | - | |
155 | - do_toggle_reason(session, ix, TT_INTERACTIVE); | |
156 | - | |
157 | - return -1; | |
146 | + toggle_notify(session,t,ix); | |
158 | 147 | } |
159 | 148 | |
160 | 149 | LIB3270_EXPORT int lib3270_toggle(H3270 *session, LIB3270_TOGGLE ix) |
161 | 150 | { |
151 | + struct toggle *t; | |
152 | + | |
162 | 153 | CHECK_SESSION_HANDLE(session); |
163 | 154 | |
164 | 155 | if(ix < 0 || ix >= LIB3270_TOGGLE_COUNT) |
165 | - return EINVAL; | |
156 | + return; | |
157 | + | |
158 | + t = &appres.toggle[ix]; | |
166 | 159 | |
167 | - do_toggle_reason(session, ix, TT_INTERACTIVE); | |
160 | + t->value = !t->value; | |
161 | + toggle_notify(session,t,ix); | |
168 | 162 | |
169 | 163 | return 0; |
170 | 164 | } |
... | ... | @@ -183,7 +177,7 @@ void initialize_toggles(H3270 *session, struct toggle *toggle) |
183 | 177 | |
184 | 178 | for(f=0;f<LIB3270_TOGGLE_COUNT;f++) |
185 | 179 | { |
186 | - toggle[f].callback = no_callback; | |
180 | +// toggle[f].callback = no_callback; | |
187 | 181 | toggle[f].upcall = toggle_nop; |
188 | 182 | } |
189 | 183 | ... | ... |