diff --git a/src/terminal/private.h b/src/terminal/private.h
index d96eae0..0e8fd91 100644
--- a/src/terminal/private.h
+++ b/src/terminal/private.h
@@ -81,8 +81,9 @@ G_BEGIN_DECLS
SIGNAL_PRINT_SETUP,
SIGNAL_PRINT_APPLY,
SIGNAL_PRINT_DONE,
+ SIGNAL_SESSION_CHANGED,
- LAST_SIGNAL
+ V3270_LAST_SIGNAL
};
@@ -221,7 +222,7 @@ G_BEGIN_DECLS
/*--[ Globals ]--------------------------------------------------------------------------------------*/
- G_GNUC_INTERNAL guint v3270_widget_signal[LAST_SIGNAL];
+ G_GNUC_INTERNAL guint v3270_widget_signal[V3270_LAST_SIGNAL];
G_GNUC_INTERNAL GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT];
G_GNUC_INTERNAL const gchar * v3270_default_colors;
G_GNUC_INTERNAL const gchar * v3270_default_font;
diff --git a/src/terminal/widget.c b/src/terminal/widget.c
index c7d7702..6332848 100644
--- a/src/terminal/widget.c
+++ b/src/terminal/widget.c
@@ -63,8 +63,8 @@
/*--[ Globals ]--------------------------------------------------------------------------------------*/
- guint v3270_widget_signal[LAST_SIGNAL] = { 0 };
- GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT] = { 0 };
+ guint v3270_widget_signal[V3270_LAST_SIGNAL] = { 0 };
+ GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT] = { 0 };
/*--[ Prototipes ]-----------------------------------------------------------------------------------*/
@@ -389,6 +389,15 @@ static void v3270_class_init(v3270Class *klass)
v3270_VOID__VOID,
G_TYPE_NONE, 0);
+ v3270_widget_signal[SIGNAL_SESSION_CHANGED] =
+ g_signal_new( "session_changed",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL, NULL,
+ v3270_VOID__VOID,
+ G_TYPE_NONE, 0);
+
v3270_widget_signal[SIGNAL_UPDATE_CONFIG] =
g_signal_new( "update_config",
G_OBJECT_CLASS_TYPE (gobject_class),
@@ -978,10 +987,25 @@ LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name)
g_return_if_fail(GTK_IS_V3270(widget));
g_return_if_fail(name != NULL);
- if(GTK_V3270(widget)->session_name)
+ if(GTK_V3270(widget)->session_name) {
+
+ debug("Old session name was \"%s\"",GTK_V3270(widget)->session_name);
+
+ if(!strcmp(GTK_V3270(widget)->session_name,name)) {
+ // Same session name, keep it.
+ return;
+ }
+
g_free(GTK_V3270(widget)->session_name);
+ }
+
GTK_V3270(widget)->session_name = g_strdup(name);
+
+ debug("New session name is \"%s\"",GTK_V3270(widget)->session_name);
+
+ g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[SIGNAL_SESSION_CHANGED], 0);
+
}
LIB3270_EXPORT int v3270_set_host_type(GtkWidget *widget, LIB3270_HOST_TYPE type)
diff --git a/src/testprogram/testprogram.c b/src/testprogram/testprogram.c
index 74a3b73..718be9b 100644
--- a/src/testprogram/testprogram.c
+++ b/src/testprogram/testprogram.c
@@ -194,7 +194,7 @@ static void ft_clicked(GtkButton *button, GtkWidget *terminal)
//
// V5.1 dialog
//
- GtkWidget *dialog = v3270ft_new(button);
+ GtkWidget *dialog = v3270ft_new(GTK_WIDGET(button));
/*
//
diff --git a/v3270.cbp b/v3270.cbp
index 8ad8479..9da2607 100644
--- a/v3270.cbp
+++ b/v3270.cbp
@@ -204,7 +204,6 @@
-
--
libgit2 0.21.2