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