Commit c38bd9b91020430b37988cf45e70b86f2bacb01b

Authored by Perry Werneck
1 parent feec7d0e
Exists in master and in 1 other branch develop

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