Commit 77beae4af1fce73310a0dc6f2aae9befd1521d2d
1 parent
8bf3ff86
Exists in
master
and in
4 other branches
Implementing window title changes.
Showing
1 changed file
with
26 additions
and
6 deletions
Show diff stats
src/widgets/window/terminal.c
| ... | ... | @@ -30,21 +30,41 @@ |
| 30 | 30 | #include "private.h" |
| 31 | 31 | #include <pw3270/actions.h> |
| 32 | 32 | |
| 33 | - static gboolean on_terminal_focus(GtkWidget *terminal, GdkEvent *event, pw3270ApplicationWindow * window) { | |
| 33 | + static void session_changed(GtkWidget *terminal, GtkWidget *label) { | |
| 34 | 34 | |
| 35 | - debug("Focus on terminal %p", terminal); | |
| 35 | + gtk_label_set_text(GTK_LABEL(label),v3270_get_session_name(terminal)); | |
| 36 | 36 | |
| 37 | - window->terminal = terminal; | |
| 37 | + // Do I have to change the window title? | |
| 38 | + GtkWidget * toplevel = gtk_widget_get_toplevel(terminal); | |
| 39 | + if(PW3270_IS_APPLICATION_WINDOW(toplevel)) { | |
| 40 | + | |
| 41 | + pw3270ApplicationWindow * window = PW3270_APPLICATION_WINDOW(toplevel); | |
| 42 | + | |
| 43 | + if(window->terminal == terminal) { | |
| 44 | + g_autofree gchar * title = v3270_get_session_title(terminal); | |
| 45 | + gtk_window_set_title(GTK_WINDOW(window), title); | |
| 46 | + } | |
| 47 | + | |
| 48 | + } | |
| 38 | 49 | |
| 39 | - return FALSE; | |
| 40 | 50 | } |
| 41 | 51 | |
| 42 | - static void session_changed(GtkWidget *terminal, GtkWidget *label) { | |
| 43 | - gtk_label_set_text(GTK_LABEL(label),v3270_get_session_name(terminal)); | |
| 52 | + static gboolean on_terminal_focus(GtkWidget *terminal, GdkEvent *event, pw3270ApplicationWindow * window) { | |
| 53 | + | |
| 54 | + // Store the active terminal widget. | |
| 55 | + window->terminal = terminal; | |
| 56 | + | |
| 57 | + // Change window title | |
| 58 | + g_autofree gchar * title = v3270_get_session_title(terminal); | |
| 59 | + gtk_window_set_title(GTK_WINDOW(window), title); | |
| 60 | + | |
| 61 | + return FALSE; | |
| 44 | 62 | } |
| 45 | 63 | |
| 46 | 64 | GtkWidget * pw3270_terminal_new(GtkWidget *widget) { |
| 47 | 65 | |
| 66 | + g_return_val_if_fail(PW3270_IS_APPLICATION_WINDOW(widget),NULL); | |
| 67 | + | |
| 48 | 68 | pw3270ApplicationWindow * window = PW3270_APPLICATION_WINDOW(widget); |
| 49 | 69 | GtkWidget * terminal = v3270_new(); |
| 50 | 70 | GtkWidget * label = gtk_label_new(v3270_get_session_name(terminal)); | ... | ... |