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 | 169 | |
| 170 | 170 | // Session |
| 171 | 171 | H3270 * host; /**< Related 3270 session */ |
| 172 | - gchar * session_name; /**< Session name (for window title) */ | |
| 173 | 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 | 179 | // Auto disconnect |
| 176 | 180 | struct |
| 177 | 181 | { | ... | ... |
src/include/v3270.h
| ... | ... | @@ -241,9 +241,11 @@ |
| 241 | 241 | |
| 242 | 242 | LIB3270_EXPORT const gchar * v3270_get_session_name(GtkWidget *widget); |
| 243 | 243 | LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name); |
| 244 | - | |
| 245 | 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 | 249 | LIB3270_EXPORT int v3270_set_script(GtkWidget *widget, const gchar id); |
| 248 | 250 | LIB3270_EXPORT void v3270_set_scaled_fonts(GtkWidget *widget, gboolean on); |
| 249 | 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 | 130 | |
| 131 | 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 | 136 | char id[] = { lib3270_get_session_id(terminal->host), 0 }; |
| 137 | 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 | 140 | return G_STRINGIFY(PRODUCT_NAME); |
| 141 | 141 | |
| ... | ... | @@ -145,12 +145,17 @@ LIB3270_EXPORT gchar * v3270_get_session_title(GtkWidget *widget) |
| 145 | 145 | { |
| 146 | 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 | 153 | g_return_if_fail(GTK_IS_V3270(widget)); |
| 154 | 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 | 159 | // Same session name, keep it. |
| 162 | 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 | 169 | g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[V3270_SIGNAL_SESSION_CHANGED], 0); |
| 174 | 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 | 590 | |
| 591 | 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 | 605 | GTK_WIDGET_CLASS(v3270_parent_class)->destroy(widget); | ... | ... |
src/testprogram/testprogram.c
| ... | ... | @@ -44,7 +44,7 @@ |
| 44 | 44 | /*---[ Implement ]----------------------------------------------------------------------------------*/ |
| 45 | 45 | |
| 46 | 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 | 50 | static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { |
| ... | ... | @@ -80,7 +80,7 @@ |
| 80 | 80 | // v3270_trace_window_new(terminal,NULL); |
| 81 | 81 | |
| 82 | 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 | 84 | gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); |
| 85 | 85 | gtk_window_set_default_size (GTK_WINDOW (window), 800, 500); |
| 86 | 86 | gtk_container_add(GTK_CONTAINER(window),vBox); | ... | ... |