diff --git a/src/lib3270/iocalls.c b/src/lib3270/iocalls.c index 6f41a04..6f161e4 100644 --- a/src/lib3270/iocalls.c +++ b/src/lib3270/iocalls.c @@ -529,8 +529,7 @@ static int internal_event_dispatcher(H3270 *hSession, int block) static int internal_callthread(int(*callback)(H3270 *, void *), H3270 *session, void *parm) { - callback(session,parm); - return 0; + return callback(session,parm); } static int internal_wait(H3270 *hSession, int seconds) @@ -697,20 +696,18 @@ LIB3270_EXPORT int lib3270_register_handlers(const struct lib3270_callbacks *cbk LIB3270_EXPORT int lib3270_call_thread(int(*callback)(H3270 *h, void *), H3270 *h, void *parm) { -// int rc; + int rc; CHECK_SESSION_HANDLE(h); - if(h->set_timer) - h->set_timer(h,1); + h->set_timer(h,1); lib3270_main_iterate(h,0); - callthread(callback,h,parm); + rc = callthread(callback,h,parm); lib3270_main_iterate(h,0); - if(h->set_timer) - h->set_timer(h,0); + h->set_timer(h,0); - return 0; + return rc; } LIB3270_EXPORT void lib3270_main_iterate(H3270 *hSession, int block) diff --git a/src/lib3270/session.c b/src/lib3270/session.c index 8f24178..1fabc5b 100644 --- a/src/lib3270/session.c +++ b/src/lib3270/session.c @@ -155,6 +155,10 @@ static void update_ssl(H3270 *session, LIB3270_SSL_STATE state) { } +static void set_timer(H3270 *session, unsigned char on) +{ +} + static void screen_disp(H3270 *session) { CHECK_SESSION_HANDLE(session); @@ -198,6 +202,7 @@ static void lib3270_session_init(H3270 *hSession, const char *model) hSession->set_width = nop_int; hSession->update_status = (void (*)(H3270 *, LIB3270_STATUS)) nop_int; hSession->autostart = nop; + hSession->set_timer = set_timer; // Set the defaults. hSession->extended = 1; diff --git a/src/pw3270/uiparser/action.c b/src/pw3270/uiparser/action.c index 7e82b91..d3a3fc8 100644 --- a/src/pw3270/uiparser/action.c +++ b/src/pw3270/uiparser/action.c @@ -140,18 +140,6 @@ dt->keypad[dt->pos++] = widget; } - static void disable_keypad(GtkWidget *terminal, GtkWidget **keypad) - { - while(*keypad) - gtk_widget_set_sensitive(*(keypad++),FALSE); - } - - static void enable_keypad(GtkWidget *terminal, const gchar *dunno, GtkWidget **keypad) - { - while(*keypad) - gtk_widget_set_sensitive(*(keypad++),TRUE); - } - void ui_setup_keypads(GHashTable *keypads, GtkWidget *window, GtkWidget *widget) { struct list_data dt; @@ -166,8 +154,5 @@ dt.keypad = g_new0(GtkWidget *,dt.total+1); g_hash_table_foreach(keypads,(GHFunc) insert_keypad, &dt); - g_signal_connect(widget,"disconnected",G_CALLBACK(disable_keypad),dt.keypad); - g_signal_connect(widget,"connected",G_CALLBACK(enable_keypad),dt.keypad); - - g_object_set_data_full(G_OBJECT(widget),"keypads",dt.keypad,g_free); + g_object_set_data_full(G_OBJECT(window),"keypads",dt.keypad,g_free); } diff --git a/src/pw3270/window.c b/src/pw3270/window.c index f1a143e..f6988ab 100644 --- a/src/pw3270/window.c +++ b/src/pw3270/window.c @@ -182,6 +182,7 @@ if(host) { + set_string_to_config("host","uri","%s",host); pw3270_set_host(widget,host); } else @@ -318,7 +319,8 @@ static void disconnected(GtkWidget *terminal, GtkWidget * window) { - GtkActionGroup **group = g_object_get_data(G_OBJECT(window),"action_groups"); + GtkActionGroup **group = g_object_get_data(G_OBJECT(window),"action_groups"); + GtkWidget **keypad = g_object_get_data(G_OBJECT(window),"keypads"); if(group) { @@ -327,13 +329,20 @@ gtk_action_group_set_sensitive(group[ACTION_GROUP_OFFLINE],TRUE); } + if(keypad) + { + while(*keypad) + gtk_widget_set_sensitive(*(keypad++),FALSE); + } + gtk_window_set_title(GTK_WINDOW(window),v3270_get_session_name(terminal)); } static void connected(GtkWidget *terminal, const gchar *host, GtkWidget * window) { gchar * title; - GtkActionGroup **group = g_object_get_data(G_OBJECT(window),"action_groups"); + GtkActionGroup **group = g_object_get_data(G_OBJECT(window),"action_groups"); + GtkWidget **keypad = g_object_get_data(G_OBJECT(window),"keypads"); if(group) { @@ -342,6 +351,12 @@ gtk_action_group_set_sensitive(group[ACTION_GROUP_PASTE],TRUE); } + if(keypad) + { + while(*keypad) + gtk_widget_set_sensitive(*(keypad++),TRUE); + } + set_string_to_config("host","uri","%s",host); title = g_strdup_printf("%s - %s",v3270_get_session_name(terminal),host); -- libgit2 0.21.2