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)); | ... | ... |