Commit 9cdad54a5ab03923b781fd7343a35417b4613275
1 parent
dd84d543
Exists in
master
and in
1 other branch
Adjustments in the "window title" engine.
Showing
6 changed files
with
35 additions
and
22 deletions
Show diff stats
src/include/terminal.h
@@ -169,9 +169,13 @@ G_BEGIN_DECLS | @@ -169,9 +169,13 @@ G_BEGIN_DECLS | ||
169 | 169 | ||
170 | // Session | 170 | // Session |
171 | H3270 * host; /**< Related 3270 session */ | 171 | H3270 * host; /**< Related 3270 session */ |
172 | - gchar * session_name; /**< Session name (for window title) */ | ||
173 | gchar * remap_filename; /**< @brief XML file with remap table. */ | 172 | gchar * remap_filename; /**< @brief XML file with remap table. */ |
174 | 173 | ||
174 | + struct { | ||
175 | + gchar *name; /**< @brief Session name (for window title) */ | ||
176 | + gchar *title; /**< @brief Session title (for window title) */ | ||
177 | + } session; | ||
178 | + | ||
175 | // Auto disconnect | 179 | // Auto disconnect |
176 | struct | 180 | struct |
177 | { | 181 | { |
src/include/v3270.h
@@ -241,9 +241,11 @@ | @@ -241,9 +241,11 @@ | ||
241 | 241 | ||
242 | LIB3270_EXPORT const gchar * v3270_get_session_name(GtkWidget *widget); | 242 | LIB3270_EXPORT const gchar * v3270_get_session_name(GtkWidget *widget); |
243 | LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name); | 243 | LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name); |
244 | - | ||
245 | LIB3270_EXPORT gchar * v3270_get_session_title(GtkWidget *widget); | 244 | LIB3270_EXPORT gchar * v3270_get_session_title(GtkWidget *widget); |
246 | 245 | ||
246 | +// LIB3270_EXPORT gchar * v3270_get_title(GtkWidget *widget); | ||
247 | + LIB3270_EXPORT gchar * v3270_set_title(GtkWidget *widget, const gchar *title); | ||
248 | + | ||
247 | LIB3270_EXPORT int v3270_set_script(GtkWidget *widget, const gchar id); | 249 | LIB3270_EXPORT int v3270_set_script(GtkWidget *widget, const gchar id); |
248 | LIB3270_EXPORT void v3270_set_scaled_fonts(GtkWidget *widget, gboolean on); | 250 | LIB3270_EXPORT void v3270_set_scaled_fonts(GtkWidget *widget, gboolean on); |
249 | LIB3270_EXPORT int v3270_set_session_color_type(GtkWidget *widget, unsigned short colortype); | 251 | LIB3270_EXPORT int v3270_set_session_color_type(GtkWidget *widget, unsigned short colortype); |
src/terminal/properties/get.c
@@ -130,12 +130,12 @@ LIB3270_EXPORT const gchar * v3270_get_session_name(GtkWidget *widget) | @@ -130,12 +130,12 @@ LIB3270_EXPORT const gchar * v3270_get_session_name(GtkWidget *widget) | ||
130 | 130 | ||
131 | v3270 * terminal = GTK_V3270(widget); | 131 | v3270 * terminal = GTK_V3270(widget); |
132 | 132 | ||
133 | - if(terminal->session_name) | ||
134 | - return terminal->session_name; | 133 | + if(terminal->session.name) |
134 | + return terminal->session.name; | ||
135 | 135 | ||
136 | char id[] = { lib3270_get_session_id(terminal->host), 0 }; | 136 | char id[] = { lib3270_get_session_id(terminal->host), 0 }; |
137 | if(id[0]) | 137 | if(id[0]) |
138 | - return (terminal->session_name = g_strconcat(G_STRINGIFY(PRODUCT_NAME),":",id,NULL)); | 138 | + return (terminal->session.name = g_strconcat(G_STRINGIFY(PRODUCT_NAME),":",id,NULL)); |
139 | 139 | ||
140 | return G_STRINGIFY(PRODUCT_NAME); | 140 | return G_STRINGIFY(PRODUCT_NAME); |
141 | 141 | ||
@@ -145,12 +145,17 @@ LIB3270_EXPORT gchar * v3270_get_session_title(GtkWidget *widget) | @@ -145,12 +145,17 @@ LIB3270_EXPORT gchar * v3270_get_session_title(GtkWidget *widget) | ||
145 | { | 145 | { |
146 | g_return_val_if_fail(GTK_IS_V3270(widget),NULL); | 146 | g_return_val_if_fail(GTK_IS_V3270(widget),NULL); |
147 | 147 | ||
148 | - const char * url = lib3270_get_url(GTK_V3270(widget)->host); | 148 | + v3270 * terminal = GTK_V3270(widget); |
149 | + | ||
150 | + const gchar * title = terminal->session.title; | ||
151 | + | ||
152 | + if(!title) | ||
153 | + title = lib3270_get_url(GTK_V3270(widget)->host); | ||
149 | 154 | ||
150 | - if(!url) | ||
151 | - url = _( "No host defined" ); | 155 | + if(!title) |
156 | + title = _( "No host defined" ); | ||
152 | 157 | ||
153 | - return g_strconcat(v3270_get_session_name(widget)," - ",url,NULL); | 158 | + return g_strconcat(v3270_get_session_name(widget)," - ",title,NULL); |
154 | 159 | ||
155 | } | 160 | } |
156 | 161 |
src/terminal/properties/set.c
@@ -153,22 +153,18 @@ LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name) | @@ -153,22 +153,18 @@ LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name) | ||
153 | g_return_if_fail(GTK_IS_V3270(widget)); | 153 | g_return_if_fail(GTK_IS_V3270(widget)); |
154 | g_return_if_fail(name != NULL); | 154 | g_return_if_fail(name != NULL); |
155 | 155 | ||
156 | - if(GTK_V3270(widget)->session_name) { | 156 | + if(GTK_V3270(widget)->session.name) { |
157 | 157 | ||
158 | - debug("Old session name was \"%s\"",GTK_V3270(widget)->session_name); | ||
159 | - | ||
160 | - if(!strcmp(GTK_V3270(widget)->session_name,name)) { | 158 | + if(!strcmp(GTK_V3270(widget)->session.name,name)) { |
161 | // Same session name, keep it. | 159 | // Same session name, keep it. |
162 | return; | 160 | return; |
163 | } | 161 | } |
164 | 162 | ||
165 | - g_free(GTK_V3270(widget)->session_name); | 163 | + g_free(GTK_V3270(widget)->session.name); |
166 | 164 | ||
167 | } | 165 | } |
168 | 166 | ||
169 | - GTK_V3270(widget)->session_name = g_strdup(name); | ||
170 | - | ||
171 | - debug("New session name is \"%s\"",GTK_V3270(widget)->session_name); | 167 | + GTK_V3270(widget)->session.name = g_strdup(name); |
172 | 168 | ||
173 | g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[V3270_SIGNAL_SESSION_CHANGED], 0); | 169 | g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[V3270_SIGNAL_SESSION_CHANGED], 0); |
174 | g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.session_name); | 170 | g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.session_name); |
src/terminal/widget.c
@@ -590,10 +590,16 @@ static void v3270_destroy(GtkWidget *widget) | @@ -590,10 +590,16 @@ static void v3270_destroy(GtkWidget *widget) | ||
590 | 590 | ||
591 | v3270_clear_selection(terminal); | 591 | v3270_clear_selection(terminal); |
592 | 592 | ||
593 | - if(terminal->session_name) | 593 | + if(terminal->session.name) |
594 | { | 594 | { |
595 | - g_free(terminal->session_name); | ||
596 | - terminal->session_name = NULL; | 595 | + g_free(terminal->session.name); |
596 | + terminal->session.name = NULL; | ||
597 | + } | ||
598 | + | ||
599 | + if(terminal->session.title) | ||
600 | + { | ||
601 | + g_free(terminal->session.title); | ||
602 | + terminal->session.title = NULL; | ||
597 | } | 603 | } |
598 | 604 | ||
599 | GTK_WIDGET_CLASS(v3270_parent_class)->destroy(widget); | 605 | GTK_WIDGET_CLASS(v3270_parent_class)->destroy(widget); |
src/testprogram/testprogram.c
@@ -44,7 +44,7 @@ | @@ -44,7 +44,7 @@ | ||
44 | /*---[ Implement ]----------------------------------------------------------------------------------*/ | 44 | /*---[ Implement ]----------------------------------------------------------------------------------*/ |
45 | 45 | ||
46 | static void session_changed(GtkWidget *terminal, GtkWidget *window) { | 46 | static void session_changed(GtkWidget *terminal, GtkWidget *window) { |
47 | - gtk_window_set_title(GTK_WINDOW(window),v3270_get_session_name(terminal)); | 47 | + gtk_window_set_title(GTK_WINDOW(window),v3270_get_session_title(terminal)); |
48 | } | 48 | } |
49 | 49 | ||
50 | static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { | 50 | static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { |
@@ -80,7 +80,7 @@ | @@ -80,7 +80,7 @@ | ||
80 | // v3270_trace_window_new(terminal,NULL); | 80 | // v3270_trace_window_new(terminal,NULL); |
81 | 81 | ||
82 | // Setup and show main window | 82 | // Setup and show main window |
83 | - gtk_window_set_title(GTK_WINDOW(window),v3270_get_session_name(terminal)); | 83 | + gtk_window_set_title(GTK_WINDOW(window),v3270_get_session_title(terminal)); |
84 | gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); | 84 | gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); |
85 | gtk_window_set_default_size (GTK_WINDOW (window), 800, 500); | 85 | gtk_window_set_default_size (GTK_WINDOW (window), 800, 500); |
86 | gtk_container_add(GTK_CONTAINER(window),vBox); | 86 | gtk_container_add(GTK_CONTAINER(window),vBox); |