Commit c38bd9b91020430b37988cf45e70b86f2bacb01b
1 parent
feec7d0e
Exists in
master
and in
1 other branch
Melhorando sistema de callbacks.
Showing
1 changed file
with
34 additions
and
24 deletions
Show diff stats
widget.c
| ... | ... | @@ -918,7 +918,11 @@ static void release_activity_timer(v3270 *widget) |
| 918 | 918 | |
| 919 | 919 | static void v3270_init(v3270 *widget) |
| 920 | 920 | { |
| 921 | - widget->host = lib3270_session_new(""); | |
| 921 | + struct lib3270_session_callbacks *cbk; | |
| 922 | + | |
| 923 | + widget->host = lib3270_session_new(""); | |
| 924 | + widget->host->user_data = widget; | |
| 925 | + | |
| 922 | 926 | |
| 923 | 927 | trace("%s host->sz=%d expected=%d revision=%s expected=%s",__FUNCTION__,widget->host->sz,(int) sizeof(H3270),lib3270_get_revision(),PACKAGE_REVISION); |
| 924 | 928 | |
| ... | ... | @@ -928,29 +932,35 @@ static void v3270_init(v3270 *widget) |
| 928 | 932 | return; |
| 929 | 933 | } |
| 930 | 934 | |
| 931 | - widget->host->user_data = widget; | |
| 932 | - | |
| 933 | - widget->host->cbk.update = v3270_update_char; | |
| 934 | - widget->host->cbk.changed = changed; | |
| 935 | - widget->host->cbk.set_timer = set_timer; | |
| 936 | - | |
| 937 | - widget->host->cbk.set_selection = set_selection; | |
| 938 | - widget->host->cbk.update_selection = update_selection; | |
| 939 | - | |
| 940 | - widget->host->cbk.update_luname = update_luname; | |
| 941 | - widget->host->cbk.configure = update_screen_size; | |
| 942 | - widget->host->cbk.update_status = update_message; | |
| 943 | - widget->host->cbk.update_cursor = v3270_update_cursor; | |
| 944 | - widget->host->cbk.update_toggle = update_toggle; | |
| 945 | - widget->host->cbk.update_oia = v3270_update_oia; | |
| 946 | - widget->host->cbk.cursor = select_cursor; | |
| 947 | - widget->host->cbk.update_connect = update_connect; | |
| 948 | - widget->host->cbk.update_model = update_model; | |
| 949 | - widget->host->cbk.changed = changed; | |
| 950 | - widget->host->cbk.ctlr_done = ctlr_done; | |
| 951 | - widget->host->cbk.message = message; | |
| 952 | - widget->host->cbk.update_ssl = v3270_update_ssl; | |
| 953 | - widget->host->cbk.print = emit_print_signal; | |
| 935 | + cbk = lib3270_get_session_callbacks(widget->host,sizeof(struct lib3270_session_callbacks)); | |
| 936 | + if(!cbk) | |
| 937 | + { | |
| 938 | + g_error( _( "Invalid callback table, possible version mismatch in lib3270") ); | |
| 939 | + return; | |
| 940 | + } | |
| 941 | + | |
| 942 | + | |
| 943 | + cbk->update = v3270_update_char; | |
| 944 | + cbk->changed = changed; | |
| 945 | + cbk->set_timer = set_timer; | |
| 946 | + | |
| 947 | + cbk->set_selection = set_selection; | |
| 948 | + cbk->update_selection = update_selection; | |
| 949 | + | |
| 950 | + cbk->update_luname = update_luname; | |
| 951 | + cbk->configure = update_screen_size; | |
| 952 | + cbk->update_status = update_message; | |
| 953 | + cbk->update_cursor = v3270_update_cursor; | |
| 954 | + cbk->update_toggle = update_toggle; | |
| 955 | + cbk->update_oia = v3270_update_oia; | |
| 956 | + cbk->cursor = select_cursor; | |
| 957 | + cbk->update_connect = update_connect; | |
| 958 | + cbk->update_model = update_model; | |
| 959 | + cbk->changed = changed; | |
| 960 | + cbk->ctlr_done = ctlr_done; | |
| 961 | + cbk->message = message; | |
| 962 | + cbk->update_ssl = v3270_update_ssl; | |
| 963 | + cbk->print = emit_print_signal; | |
| 954 | 964 | |
| 955 | 965 | |
| 956 | 966 | // Reset timer | ... | ... |