From 89693dd5a8048c7a75ee1b71819617c8212e7d2f Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Thu, 1 Mar 2012 13:06:42 +0000 Subject: [PATCH] Atualizando callbacks de configuração do tamanho da tela --- src/gtk2/screen.c | 6 +++--- src/include/lib3270/api.h | 4 ++-- src/lib/ctlr.c | 9 ++------- src/lib/screen.c | 12 ++++++++++-- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/gtk2/screen.c b/src/gtk2/screen.c index 21d7c52..57487d2 100644 --- a/src/gtk2/screen.c +++ b/src/gtk2/screen.c @@ -83,7 +83,7 @@ static gchar * convert_monocase(int c, gsize *sz); static gchar * convert_regular(int c, gsize *sz); static int popup_dialog(H3270 *session, PW3270_DIALOG type, const char *title, const char *msg, const char *fmt, va_list arg); - static void model_changed(H3270 *session, const char *name, int model, int cols, int rows); + static void model_changed(H3270 *session, const char *name, int model, int rows, int cols); #ifdef HAVE_ALTSCREEN static void view_changed(H3270 *session, unsigned short rows, unsigned short cols); @@ -102,7 +102,7 @@ warning, // void (*Warning)(const char *fmt, va_list arg); syserror, // void (*SysError)(const char *title, const char *message, const char *system); - model_changed, // void (*model_changed)(H3270 *session, const char *name, int model, int cols, int rows); + model_changed, // void (*model_changed)(H3270 *session, const char *name, int model, int rows, int cols); addch, // void (*addch)(int row, int col, unsigned char c, int attr); set_charset, // void (*charset)(char *dcs); @@ -874,7 +874,7 @@ } - static void model_changed(H3270 *session, const char *name, int model, int cols, int rows) + static void model_changed(H3270 *session, const char *name, int model, int rows, int cols) { int length = rows*cols; diff --git a/src/include/lib3270/api.h b/src/include/lib3270/api.h index bf5dcef..643e89a 100644 --- a/src/include/lib3270/api.h +++ b/src/include/lib3270/api.h @@ -274,7 +274,7 @@ void (*update_luname)(H3270 *session, const char *name); void (*update_status)(H3270 *session, LIB3270_STATUS id); void (*update_connect)(H3270 *session, unsigned char connected); - void (*update_model)(H3270 *session, int model); + void (*update_model)(H3270 *session, const char *name, int model, int rows, int cols); void (*set_timer)(H3270 *session, unsigned char on); void (*erase)(H3270 *session); @@ -496,7 +496,7 @@ void (*Error)(const char *fmt, va_list arg); void (*Warning)(const char *fmt, va_list arg); void (*SysError)(const char *title, const char *message, const char *system); - void (*model_changed)(H3270 *session, const char *name, int model, int cols, int rows); + void (*model_changed)(H3270 *session, const char *name, int model, int rows, int cols); int (*addch)(int row, int col, unsigned char c, unsigned short attr); void (*charset)(char *dcs); void (*title)(char *text); diff --git a/src/lib/ctlr.c b/src/lib/ctlr.c index 18fea23..491c950 100644 --- a/src/lib/ctlr.c +++ b/src/lib/ctlr.c @@ -200,14 +200,9 @@ int lib3270_set_model(H3270 *session, int model) if(CONNECTED) return EBUSY; - if(session->model_num != model) - { - ctlr_set_rows_cols(session,model,session->ov_cols,session->ov_rows); - ctlr_reinit(session,MODEL_CHANGE); + ctlr_set_rows_cols(session,model,session->ov_cols,session->ov_rows); + ctlr_reinit(session,MODEL_CHANGE); - if(session->update_model) - session->update_model(session,model); - } return 0; } diff --git a/src/lib/screen.c b/src/lib/screen.c index e8036c0..24d0700 100644 --- a/src/lib/screen.c +++ b/src/lib/screen.c @@ -153,6 +153,9 @@ int screen_init(H3270 *session) if(callbacks->toggle_changed) session->update_toggle = callbacks->toggle_changed; + if(callbacks->model_changed) + session->update_model = callbacks->model_changed; + if(callbacks->init()) { popup_an_error("Can't initialize terminal."); @@ -312,8 +315,13 @@ void update_model_info(H3270 *session, int model, int cols, int rows) /* Update the model name. */ (void) sprintf(session->model_name, "327%c-%d%s",appres.m3279 ? '9' : '8',session->model_num,appres.extended ? "-E" : ""); - if(callbacks && callbacks->model_changed) - callbacks->model_changed(session, session->model_name,session->model_num,cols,rows); + if(session->configure) + session->configure(session,rows,cols); + + if(session->update_model) + session->update_model(session, session->model_name,session->model_num,rows,cols); + else if(callbacks && callbacks->model_changed) + callbacks->model_changed(session, session->model_name,session->model_num,rows,cols); } LIB3270_EXPORT int lib3270_get_contents(H3270 *h, int first, int last, unsigned char *chr, unsigned short *attr) -- libgit2 0.21.2