Commit 77beae4af1fce73310a0dc6f2aae9befd1521d2d

Authored by Perry Werneck
1 parent 8bf3ff86

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