Commit f93289521b75eb98d340a9fdbd09ff45831ac557
1 parent
c03df224
Exists in
master
and in
1 other branch
Adding signal when session name changes (required for the HLLAPI plugin
module).
Showing
4 changed files
with
31 additions
and
7 deletions
Show diff stats
src/terminal/private.h
... | ... | @@ -81,8 +81,9 @@ G_BEGIN_DECLS |
81 | 81 | SIGNAL_PRINT_SETUP, |
82 | 82 | SIGNAL_PRINT_APPLY, |
83 | 83 | SIGNAL_PRINT_DONE, |
84 | + SIGNAL_SESSION_CHANGED, | |
84 | 85 | |
85 | - LAST_SIGNAL | |
86 | + V3270_LAST_SIGNAL | |
86 | 87 | }; |
87 | 88 | |
88 | 89 | |
... | ... | @@ -221,7 +222,7 @@ G_BEGIN_DECLS |
221 | 222 | |
222 | 223 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
223 | 224 | |
224 | - G_GNUC_INTERNAL guint v3270_widget_signal[LAST_SIGNAL]; | |
225 | + G_GNUC_INTERNAL guint v3270_widget_signal[V3270_LAST_SIGNAL]; | |
225 | 226 | G_GNUC_INTERNAL GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT]; |
226 | 227 | G_GNUC_INTERNAL const gchar * v3270_default_colors; |
227 | 228 | G_GNUC_INTERNAL const gchar * v3270_default_font; | ... | ... |
src/terminal/widget.c
... | ... | @@ -63,8 +63,8 @@ |
63 | 63 | |
64 | 64 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
65 | 65 | |
66 | - guint v3270_widget_signal[LAST_SIGNAL] = { 0 }; | |
67 | - GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT] = { 0 }; | |
66 | + guint v3270_widget_signal[V3270_LAST_SIGNAL] = { 0 }; | |
67 | + GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT] = { 0 }; | |
68 | 68 | |
69 | 69 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ |
70 | 70 | |
... | ... | @@ -389,6 +389,15 @@ static void v3270_class_init(v3270Class *klass) |
389 | 389 | v3270_VOID__VOID, |
390 | 390 | G_TYPE_NONE, 0); |
391 | 391 | |
392 | + v3270_widget_signal[SIGNAL_SESSION_CHANGED] = | |
393 | + g_signal_new( "session_changed", | |
394 | + G_OBJECT_CLASS_TYPE (gobject_class), | |
395 | + G_SIGNAL_RUN_FIRST, | |
396 | + 0, | |
397 | + NULL, NULL, | |
398 | + v3270_VOID__VOID, | |
399 | + G_TYPE_NONE, 0); | |
400 | + | |
392 | 401 | v3270_widget_signal[SIGNAL_UPDATE_CONFIG] = |
393 | 402 | g_signal_new( "update_config", |
394 | 403 | G_OBJECT_CLASS_TYPE (gobject_class), |
... | ... | @@ -978,10 +987,25 @@ LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name) |
978 | 987 | g_return_if_fail(GTK_IS_V3270(widget)); |
979 | 988 | g_return_if_fail(name != NULL); |
980 | 989 | |
981 | - if(GTK_V3270(widget)->session_name) | |
990 | + if(GTK_V3270(widget)->session_name) { | |
991 | + | |
992 | + debug("Old session name was \"%s\"",GTK_V3270(widget)->session_name); | |
993 | + | |
994 | + if(!strcmp(GTK_V3270(widget)->session_name,name)) { | |
995 | + // Same session name, keep it. | |
996 | + return; | |
997 | + } | |
998 | + | |
982 | 999 | g_free(GTK_V3270(widget)->session_name); |
983 | 1000 | |
1001 | + } | |
1002 | + | |
984 | 1003 | GTK_V3270(widget)->session_name = g_strdup(name); |
1004 | + | |
1005 | + debug("New session name is \"%s\"",GTK_V3270(widget)->session_name); | |
1006 | + | |
1007 | + g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[SIGNAL_SESSION_CHANGED], 0); | |
1008 | + | |
985 | 1009 | } |
986 | 1010 | |
987 | 1011 | LIB3270_EXPORT int v3270_set_host_type(GtkWidget *widget, LIB3270_HOST_TYPE type) | ... | ... |
src/testprogram/testprogram.c