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