Commit 853ed0a3261910b724514240929aac5f989a129b
1 parent
e64bd907
Exists in
master
Implementando callback quando o modelo de terminal é alterado
Showing
2 changed files
with
10 additions
and
3 deletions
Show diff stats
src/include/lib3270/api.h
... | ... | @@ -274,6 +274,7 @@ |
274 | 274 | void (*update_luname)(H3270 *session, const char *name); |
275 | 275 | void (*update_status)(H3270 *session, LIB3270_STATUS id); |
276 | 276 | void (*update_connect)(H3270 *session, unsigned char connected); |
277 | + void (*update_model)(H3270 *session, int model); | |
277 | 278 | |
278 | 279 | void (*set_timer)(H3270 *session, unsigned char on); |
279 | 280 | void (*erase)(H3270 *session); | ... | ... |
src/lib/ctlr.c
... | ... | @@ -193,15 +193,21 @@ int lib3270_get_model(H3270 *session) |
193 | 193 | /** |
194 | 194 | * Deal with the relationships between model numbers and rows/cols. |
195 | 195 | * |
196 | - * @param model New model (updates model name | |
196 | + * @param model New model (updates model name) | |
197 | 197 | */ |
198 | 198 | int lib3270_set_model(H3270 *session, int model) |
199 | 199 | { |
200 | 200 | if(CONNECTED) |
201 | 201 | return EBUSY; |
202 | 202 | |
203 | - ctlr_set_rows_cols(session,model,session->ov_cols,session->ov_rows); | |
204 | - ctlr_reinit(session,MODEL_CHANGE); | |
203 | + if(session->model_num != model) | |
204 | + { | |
205 | + ctlr_set_rows_cols(session,model,session->ov_cols,session->ov_rows); | |
206 | + ctlr_reinit(session,MODEL_CHANGE); | |
207 | + | |
208 | + if(session->update_model) | |
209 | + session->update_model(session,model); | |
210 | + } | |
205 | 211 | return 0; |
206 | 212 | } |
207 | 213 | ... | ... |