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,21 +30,41 @@ | ||
30 | #include "private.h" | 30 | #include "private.h" |
31 | #include <pw3270/actions.h> | 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 | GtkWidget * pw3270_terminal_new(GtkWidget *widget) { | 64 | GtkWidget * pw3270_terminal_new(GtkWidget *widget) { |
47 | 65 | ||
66 | + g_return_val_if_fail(PW3270_IS_APPLICATION_WINDOW(widget),NULL); | ||
67 | + | ||
48 | pw3270ApplicationWindow * window = PW3270_APPLICATION_WINDOW(widget); | 68 | pw3270ApplicationWindow * window = PW3270_APPLICATION_WINDOW(widget); |
49 | GtkWidget * terminal = v3270_new(); | 69 | GtkWidget * terminal = v3270_new(); |
50 | GtkWidget * label = gtk_label_new(v3270_get_session_name(terminal)); | 70 | GtkWidget * label = gtk_label_new(v3270_get_session_name(terminal)); |