From bb4e13f2eb4d91e0b6c1081a4de2f4b3d3f22014 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Wed, 26 Nov 2014 23:51:53 +0000 Subject: [PATCH] Substituindo "widget" por "user_data" na estrutura de sessão --- src/include/lib3270.h | 24 ++++++++++++------------ src/include/lib3270/session.h | 4 ++-- src/lib3270/iocalls.c | 9 --------- src/lib3270/screen.c | 10 +++++----- src/lib3270/session.c | 9 +++++++-- src/plugins/rx3270/pluginmain.cc | 4 ++-- src/pw3270/v3270/draw.c | 2 +- src/pw3270/v3270/oia.c | 6 +++--- src/pw3270/v3270/widget.c | 62 +++++++++++++++++++++++++++++++------------------------------- 9 files changed, 63 insertions(+), 67 deletions(-) diff --git a/src/include/lib3270.h b/src/include/lib3270.h index f018bae..222c8fe 100644 --- a/src/include/lib3270.h +++ b/src/include/lib3270.h @@ -792,6 +792,18 @@ LIB3270_EXPORT void lib3270_main_iterate(H3270 *h, int wait); /** + * @brief Associate user data with 3270 session. + * + */ + LIB3270_EXPORT void lib3270_set_user_data(H3270 *h, void *ptr); + + /** + * @brief Get associated user data. + * + */ + LIB3270_EXPORT void * lib3270_get_user_data(H3270 *h); + + /** * @brief Iterate internal's lib3270 event loop. * * Use it only if the internal I/O calls wasn't replaced. @@ -818,18 +830,6 @@ LIB3270_EXPORT int lib3270_wait_for_ready(H3270 *hSession, int seconds); /** - * Get the session's widget. - * - * Get the handle to the GtkWidget who's handling this session. - * - * @param h Session handle. - * - * @return Associated GtkWidget (can be null) - * - */ - LIB3270_EXPORT void * lib3270_get_widget(H3270 *h); - - /** * "beep" to notify user. * * If available play a sound signal do alert user. diff --git a/src/include/lib3270/session.h b/src/include/lib3270/session.h index 10889cc..5e0e56f 100644 --- a/src/include/lib3270/session.h +++ b/src/include/lib3270/session.h @@ -282,8 +282,8 @@ char * rpq_warnbuf; int rpq_wbcnt; - // Widget info - void * widget; + // User data (Usually points to session's widget) + void * user_data; // selection char * paste_buffer; diff --git a/src/lib3270/iocalls.c b/src/lib3270/iocalls.c index 3a4897d..06f0b62 100644 --- a/src/lib3270/iocalls.c +++ b/src/lib3270/iocalls.c @@ -51,15 +51,6 @@ static void * internal_add_timeout(unsigned long interval_ms, H3270 *session, vo static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata ); static void internal_remove_poll(void *id); - -/* -// fdcalls -static void internal_remove_source(void *id); -static void * internal_add_input(int source, H3270 *session, void (*fn)(H3270 *session)); -static void * internal_add_output(int source, H3270 *session, void (*fn)(H3270 *session)); -static void * internal_add_except(int source, H3270 *session, void (*fn)(H3270 *session)); -*/ - static int internal_wait(H3270 *hSession, int seconds); static int internal_event_dispatcher(H3270 *hSession, int block); diff --git a/src/lib3270/screen.c b/src/lib3270/screen.c index d88a7d2..52eed45 100644 --- a/src/lib3270/screen.c +++ b/src/lib3270/screen.c @@ -688,7 +688,7 @@ void Error(H3270 *session, const char *fmt, ...) va_start(arg_ptr, fmt); - popup_handler(session,session->widget,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr); + popup_handler(session,session->user_data,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr); va_end(arg_ptr); @@ -703,7 +703,7 @@ void Warning(H3270 *session, const char *fmt, ...) trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Warning",fmt); va_start(arg_ptr, fmt); - popup_handler(session,session->widget,LIB3270_NOTIFY_WARNING, _( "3270 Warning" ),NULL,fmt,arg_ptr); + popup_handler(session,session->user_data,LIB3270_NOTIFY_WARNING, _( "3270 Warning" ),NULL,fmt,arg_ptr); va_end(arg_ptr); } @@ -718,7 +718,7 @@ void popup_an_error(H3270 *session, const char *fmt, ...) trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Error",fmt); va_start(args, fmt); - popup_handler(session,session->widget,LIB3270_NOTIFY_ERROR,_( "3270 Error" ),NULL,fmt,args); + popup_handler(session,session->user_data,LIB3270_NOTIFY_ERROR,_( "3270 Error" ),NULL,fmt,args); va_end(args); } @@ -732,7 +732,7 @@ void popup_system_error(H3270 *session, const char *title, const char *message, trace("%s: title=%s msg=%s",__FUNCTION__,"3270 Error",message); va_start(args, fmt); - popup_handler(session,session->widget,LIB3270_NOTIFY_ERROR,title ? title : _( "3270 Error" ), message,fmt,args); + popup_handler(session,session->user_data,LIB3270_NOTIFY_ERROR,title ? title : _( "3270 Error" ), message,fmt,args); va_end(args); } @@ -857,7 +857,7 @@ LIB3270_EXPORT void lib3270_popup_va(H3270 *session, LIB3270_NOTIFY id , const c trace("%s: title=%s msg=%s",__FUNCTION__,"3270 Error",message); - popup_handler(session,session->widget,id,title ? title : _( "3270 Error" ), message,fmt,args); + popup_handler(session,session->user_data,id,title ? title : _( "3270 Error" ), message,fmt,args); } LIB3270_EXPORT int lib3270_is_protected(H3270 *h, unsigned int baddr) diff --git a/src/lib3270/session.c b/src/lib3270/session.c index 4601460..e7f7838 100644 --- a/src/lib3270/session.c +++ b/src/lib3270/session.c @@ -320,9 +320,14 @@ LIB3270_EXPORT H3270 * lib3270_get_default_session_handle(void) return lib3270_session_new(""); } -LIB3270_EXPORT void * lib3270_get_widget(H3270 *h) +LIB3270_EXPORT void lib3270_set_user_data(H3270 *h, void *ptr) { CHECK_SESSION_HANDLE(h); - return h->widget; + h->user_data = ptr; } +LIB3270_EXPORT void * lib3270_get_user_data(H3270 *h) +{ + CHECK_SESSION_HANDLE(h); + return h->user_data; +} diff --git a/src/plugins/rx3270/pluginmain.cc b/src/plugins/rx3270/pluginmain.cc index d9140c4..09015bf 100644 --- a/src/plugins/rx3270/pluginmain.cc +++ b/src/plugins/rx3270/pluginmain.cc @@ -658,14 +658,14 @@ extern "C" int plugin::set_copy(const char *text) { - v3270_set_copy(GTK_WIDGET(lib3270_get_widget(hSession)),text); + v3270_set_copy(GTK_WIDGET(lib3270_get_user_data(hSession)),text); return 0; } string plugin::get_copy(void) { string rc; - gchar * ptr = v3270_get_copy(GTK_WIDGET(lib3270_get_widget(hSession))); + gchar * ptr = v3270_get_copy(GTK_WIDGET(lib3270_get_user_data(hSession))); if(ptr) { diff --git a/src/pw3270/v3270/draw.c b/src/pw3270/v3270/draw.c index 488aad7..257ccdc 100644 --- a/src/pw3270/v3270/draw.c +++ b/src/pw3270/v3270/draw.c @@ -379,7 +379,7 @@ void v3270_reload(GtkWidget *widget) void v3270_update_char(H3270 *session, int addr, unsigned char chr, unsigned short attr, unsigned char cursor) { - v3270 * terminal = GTK_V3270(session->widget); + v3270 * terminal = GTK_V3270(session->user_data); cairo_t * cr; GdkRectangle rect; int rows,cols; diff --git a/src/pw3270/v3270/oia.c b/src/pw3270/v3270/oia.c index 2326738..1232303 100644 --- a/src/pw3270/v3270/oia.c +++ b/src/pw3270/v3270/oia.c @@ -711,7 +711,7 @@ static void draw_cursor_position(cairo_t *cr, GdkRectangle *rect, struct v3270_m void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, unsigned char c, unsigned short attr) { - v3270 * terminal = GTK_V3270(session->widget); + v3270 * terminal = GTK_V3270(session->user_data); GdkRectangle saved; if(!terminal->surface) @@ -1027,7 +1027,7 @@ void v3270_stop_timer(GtkWidget *widget) void v3270_update_ssl(H3270 *session, LIB3270_SSL_STATE state) { - v3270 * terminal = GTK_V3270(session->widget); + v3270 * terminal = GTK_V3270(session->user_data); cairo_t * cr; GdkRectangle * r; @@ -1046,7 +1046,7 @@ void v3270_update_oia(H3270 *session, LIB3270_FLAG id, unsigned char on) cairo_t *cr; GdkRectangle *r; - v3270 *terminal = GTK_V3270(session->widget); + v3270 *terminal = GTK_V3270(session->user_data); if(!terminal->surface) return; diff --git a/src/pw3270/v3270/widget.c b/src/pw3270/v3270/widget.c index 37325d4..278f896 100644 --- a/src/pw3270/v3270/widget.c +++ b/src/pw3270/v3270/widget.c @@ -649,7 +649,7 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, int width, int heig static void set_timer(H3270 *session, unsigned char on) { - GtkWidget *widget = GTK_WIDGET(session->widget); + GtkWidget *widget = GTK_WIDGET(session->user_data); if(on) v3270_start_timer(widget); @@ -666,52 +666,52 @@ static void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value { case LIB3270_TOGGLE_CURSOR_POS: case LIB3270_TOGGLE_CROSSHAIR: - v3270_reload(GTK_WIDGET(session->widget)); - gtk_widget_queue_draw(GTK_WIDGET(session->widget)); + v3270_reload(GTK_WIDGET(session->user_data)); + gtk_widget_queue_draw(GTK_WIDGET(session->user_data)); break; case LIB3270_TOGGLE_CURSOR_BLINK: - GTK_V3270(session->widget)->cursor.show |= 1; + GTK_V3270(session->user_data)->cursor.show |= 1; break; case LIB3270_TOGGLE_INSERT: - v3270_draw_ins_status(GTK_V3270(session->widget)); - v3270_cursor_draw(GTK_V3270(session->widget)); + v3270_draw_ins_status(GTK_V3270(session->user_data)); + v3270_cursor_draw(GTK_V3270(session->user_data)); break; case LIB3270_TOGGLE_BOLD: - v3270_reload(GTK_WIDGET(session->widget)); - gtk_widget_queue_draw(GTK_WIDGET(session->widget)); + v3270_reload(GTK_WIDGET(session->user_data)); + gtk_widget_queue_draw(GTK_WIDGET(session->user_data)); break; case LIB3270_TOGGLE_FULL_SCREEN: if(value) - gtk_window_fullscreen(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(session->widget)))); + gtk_window_fullscreen(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(session->user_data)))); else - gtk_window_unfullscreen(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(session->widget)))); + gtk_window_unfullscreen(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(session->user_data)))); } #if GTK_CHECK_VERSION(2,26,0) - g_object_notify_by_pspec(G_OBJECT(session->widget), v3270_properties[PROP_TOGGLE+ix]); + g_object_notify_by_pspec(G_OBJECT(session->user_data), v3270_properties[PROP_TOGGLE+ix]); #else - g_object_notify(G_OBJECT(session->widget),name); + g_object_notify(G_OBJECT(session->user_data),name); #endif // GTK_CHECK_VERSION - g_signal_emit(GTK_WIDGET(session->widget), v3270_widget_signal[SIGNAL_TOGGLE_CHANGED], 0, (guint) ix, (gboolean) (value != 0), (gchar *) name); + g_signal_emit(GTK_WIDGET(session->user_data), v3270_widget_signal[SIGNAL_TOGGLE_CHANGED], 0, (guint) ix, (gboolean) (value != 0), (gchar *) name); } static void update_message(H3270 *session, LIB3270_MESSAGE id) { - g_signal_emit(GTK_WIDGET(session->widget), v3270_widget_signal[SIGNAL_MESSAGE_CHANGED], 0, (gint) id); + g_signal_emit(GTK_WIDGET(session->user_data), v3270_widget_signal[SIGNAL_MESSAGE_CHANGED], 0, (gint) id); } static void update_luname(H3270 *session, const char *name) { - v3270_update_luname(GTK_WIDGET(session->widget),name); + v3270_update_luname(GTK_WIDGET(session->user_data),name); } static void select_cursor(H3270 *session, LIB3270_CURSOR id) { - GtkWidget *widget = GTK_WIDGET(session->widget); + GtkWidget *widget = GTK_WIDGET(session->user_data); #if GTK_CHECK_VERSION(2,20,0) if(gtk_widget_get_realized(widget) && gtk_widget_get_has_window(widget)) @@ -726,7 +726,7 @@ static void select_cursor(H3270 *session, LIB3270_CURSOR id) static void ctlr_done(H3270 *session) { - GtkWidget *widget = GTK_WIDGET(session->widget); + GtkWidget *widget = GTK_WIDGET(session->user_data); #if GTK_CHECK_VERSION(2,20,0) if(gtk_widget_get_realized(widget) && gtk_widget_get_has_window(widget)) @@ -741,7 +741,7 @@ static void ctlr_done(H3270 *session) static void update_connect(H3270 *session, unsigned char connected) { - v3270 *widget = GTK_V3270(session->widget); + v3270 *widget = GTK_V3270(session->user_data); trace("%s - %s",__FUNCTION__,connected ? "Connected" : "Disconnected"); @@ -770,23 +770,23 @@ static void update_connect(H3270 *session, unsigned char connected) static void update_screen_size(H3270 *session,unsigned short rows, unsigned short cols) { // trace("Widget %p changes to %dx%d",session->widget,cols,rows); - v3270_reload(GTK_WIDGET(session->widget)); - gtk_widget_queue_draw(GTK_WIDGET(session->widget)); + v3270_reload(GTK_WIDGET(session->user_data)); + gtk_widget_queue_draw(GTK_WIDGET(session->user_data)); } static void update_model(H3270 *session, const char *name, int model, int rows, int cols) { #if GTK_CHECK_VERSION(2,26,0) - g_object_notify_by_pspec(G_OBJECT(session->widget), v3270_properties[PROP_MODEL]); + g_object_notify_by_pspec(G_OBJECT(session->user_data), v3270_properties[PROP_MODEL]); #else - g_object_notify(G_OBJECT(session->widget),"model"); + g_object_notify(G_OBJECT(session->user_data),"model"); #endif // GTK_CHECK_VERSION - g_signal_emit(GTK_WIDGET(session->widget),v3270_widget_signal[SIGNAL_MODEL_CHANGED], 0, (guint) model, name); + g_signal_emit(GTK_WIDGET(session->user_data),v3270_widget_signal[SIGNAL_MODEL_CHANGED], 0, (guint) model, name); } static void changed(H3270 *session, int offset, int len) { - GtkWidget * widget = session->widget; + GtkWidget * widget = session->user_data; GtkAccessible * obj = GTK_V3270(widget)->accessible; #ifdef WIN32 @@ -845,7 +845,7 @@ static void changed(H3270 *session, int offset, int len) static void set_selection(H3270 *session, unsigned char status) { - GtkWidget * widget = GTK_WIDGET(session->widget); + GtkWidget * widget = GTK_WIDGET(session->user_data); #if GTK_CHECK_VERSION(2,26,0) g_object_notify_by_pspec(G_OBJECT(widget), v3270_properties[PROP_SELECTION]); @@ -859,7 +859,7 @@ static void set_selection(H3270 *session, unsigned char status) static void update_selection(H3270 *session, int start, int end) { // Selected region changed - GtkWidget * widget = GTK_WIDGET(session->widget); + GtkWidget * widget = GTK_WIDGET(session->user_data); GtkAccessible * atk_obj = GTK_V3270(widget)->accessible; if(atk_obj) @@ -869,7 +869,7 @@ static void update_selection(H3270 *session, int start, int end) static void message(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *message, const char *text) { - g_signal_emit( GTK_WIDGET(session->widget), v3270_widget_signal[SIGNAL_MESSAGE], 0, + g_signal_emit( GTK_WIDGET(session->user_data), v3270_widget_signal[SIGNAL_MESSAGE], 0, (int) id, (gchar *) title, (gchar *) message, @@ -879,7 +879,7 @@ static void message(H3270 *session, LIB3270_NOTIFY id , const char *title, const static int emit_print_signal(H3270 *session) { - g_signal_emit(GTK_WIDGET(session->widget), v3270_widget_signal[SIGNAL_PRINT], 0); + g_signal_emit(GTK_WIDGET(session->user_data), v3270_widget_signal[SIGNAL_PRINT], 0); return 0; } @@ -910,7 +910,7 @@ static void v3270_init(v3270 *widget) return; } - widget->host->widget = widget; + widget->host->user_data = widget; widget->host->update = v3270_update_char; widget->host->changed = changed; @@ -1650,11 +1650,11 @@ GtkWidget * v3270_get_default_widget(void) return NULL; } - if(!(hSession->widget && GTK_IS_V3270(hSession->widget))) + if(!(hSession->user_data && GTK_IS_V3270(hSession->user_data))) { g_warning("No widget on default session on %s",__FUNCTION__); return NULL; } - return GTK_WIDGET(hSession->widget); + return GTK_WIDGET(hSession->user_data); } -- libgit2 0.21.2