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 | ... | ... |