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