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,8 +81,9 @@ G_BEGIN_DECLS | ||
81 | SIGNAL_PRINT_SETUP, | 81 | SIGNAL_PRINT_SETUP, |
82 | SIGNAL_PRINT_APPLY, | 82 | SIGNAL_PRINT_APPLY, |
83 | SIGNAL_PRINT_DONE, | 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,7 +222,7 @@ G_BEGIN_DECLS | ||
221 | 222 | ||
222 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ | 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 | G_GNUC_INTERNAL GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT]; | 226 | G_GNUC_INTERNAL GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT]; |
226 | G_GNUC_INTERNAL const gchar * v3270_default_colors; | 227 | G_GNUC_INTERNAL const gchar * v3270_default_colors; |
227 | G_GNUC_INTERNAL const gchar * v3270_default_font; | 228 | G_GNUC_INTERNAL const gchar * v3270_default_font; |
src/terminal/widget.c
@@ -63,8 +63,8 @@ | @@ -63,8 +63,8 @@ | ||
63 | 63 | ||
64 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ | 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 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ | 69 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ |
70 | 70 | ||
@@ -389,6 +389,15 @@ static void v3270_class_init(v3270Class *klass) | @@ -389,6 +389,15 @@ static void v3270_class_init(v3270Class *klass) | ||
389 | v3270_VOID__VOID, | 389 | v3270_VOID__VOID, |
390 | G_TYPE_NONE, 0); | 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 | v3270_widget_signal[SIGNAL_UPDATE_CONFIG] = | 401 | v3270_widget_signal[SIGNAL_UPDATE_CONFIG] = |
393 | g_signal_new( "update_config", | 402 | g_signal_new( "update_config", |
394 | G_OBJECT_CLASS_TYPE (gobject_class), | 403 | G_OBJECT_CLASS_TYPE (gobject_class), |
@@ -978,10 +987,25 @@ LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name) | @@ -978,10 +987,25 @@ LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name) | ||
978 | g_return_if_fail(GTK_IS_V3270(widget)); | 987 | g_return_if_fail(GTK_IS_V3270(widget)); |
979 | g_return_if_fail(name != NULL); | 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 | g_free(GTK_V3270(widget)->session_name); | 999 | g_free(GTK_V3270(widget)->session_name); |
983 | 1000 | ||
1001 | + } | ||
1002 | + | ||
984 | GTK_V3270(widget)->session_name = g_strdup(name); | 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 | LIB3270_EXPORT int v3270_set_host_type(GtkWidget *widget, LIB3270_HOST_TYPE type) | 1011 | LIB3270_EXPORT int v3270_set_host_type(GtkWidget *widget, LIB3270_HOST_TYPE type) |
src/testprogram/testprogram.c
@@ -194,7 +194,7 @@ static void ft_clicked(GtkButton *button, GtkWidget *terminal) | @@ -194,7 +194,7 @@ static void ft_clicked(GtkButton *button, GtkWidget *terminal) | ||
194 | // | 194 | // |
195 | // V5.1 dialog | 195 | // V5.1 dialog |
196 | // | 196 | // |
197 | - GtkWidget *dialog = v3270ft_new(button); | 197 | + GtkWidget *dialog = v3270ft_new(GTK_WIDGET(button)); |
198 | 198 | ||
199 | /* | 199 | /* |
200 | // | 200 | // |
v3270.cbp
@@ -204,7 +204,6 @@ | @@ -204,7 +204,6 @@ | ||
204 | <Unit filename="src/trace/widget.c"> | 204 | <Unit filename="src/trace/widget.c"> |
205 | <Option compilerVar="CC" /> | 205 | <Option compilerVar="CC" /> |
206 | </Unit> | 206 | </Unit> |
207 | - <Unit filename="src/v3270/private.h" /> | ||
208 | <Extensions> | 207 | <Extensions> |
209 | <code_completion /> | 208 | <code_completion /> |
210 | <envvars /> | 209 | <envvars /> |