diff --git a/src/pw3270/window.c b/src/pw3270/window.c index ee98e2e..97f03f0 100644 --- a/src/pw3270/window.c +++ b/src/pw3270/window.c @@ -358,37 +358,59 @@ } } + static void update_model(GtkWidget *widget, guint id, const gchar *name, GtkWidget **radio) + { + int f; + + trace("Widget %p changed to %s (id=%d)",widget,name,id); + set_integer_to_config("terminal","model",id); + set_string_to_config("terminal","model_name","%s",name); + + id -= 2; + for(f=0;radio[f];f++) + { + if(f == id) + { + if(!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(radio[f]))) + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(radio[f]),TRUE); + return; + } + } + } + static void setup_screen_sizes(GtkWidget *widget, GtkWidget *obj) { static const gchar * text[] = { "80x24", "80x32", "80x43", "132x27" }; GtkWidget * menu = gtk_menu_new(); int model = lib3270_get_model_number(v3270_get_session(obj))-2; GSList * group = NULL; - GtkWidget * item; int f; + GtkWidget **item = g_new0(GtkWidget *,G_N_ELEMENTS(text)+1); gtk_widget_set_sensitive(widget,TRUE); for(f=0;fterminal,"disconnected",G_CALLBACK(disconnected),widget); g_signal_connect(widget->terminal,"connected",G_CALLBACK(connected),widget); g_signal_connect(widget->terminal,"update_config",G_CALLBACK(update_config),0); - g_signal_connect(widget->terminal,"model_changed",G_CALLBACK(update_model),0); g_signal_connect(widget->terminal,"selecting",G_CALLBACK(selecting),group); g_signal_connect(widget->terminal,"popup",G_CALLBACK(popup_menu),popup); g_signal_connect(widget->terminal,"has_text",G_CALLBACK(has_text),group); -- libgit2 0.21.2