diff -Naur mc-4.6.2/edit/editwidget.c mc-4.6.2.tpg/edit/editwidget.c --- mc-4.6.2/edit/editwidget.c 2009-02-04 20:50:33.000000000 +0000 +++ mc-4.6.2.tpg/edit/editwidget.c 2009-02-04 20:51:20.000000000 +0000 @@ -46,6 +46,9 @@ #include "../src/widget.h" /* buttonbar_redraw() */ #include "../src/menu.h" /* menubar_new() */ #include "../src/key.h" /* is_idle() */ +#include "../src/main.h" /* xterm_title_str */ +#include "../src/win.h" /* xterm_flag */ +#include "../src/layout.h" /* xterm_title */ WEdit *wedit; struct WMenu *edit_menubar; @@ -174,6 +177,11 @@ Dlg_head *edit_dlg; WButtonBar *edit_bar; + if (xterm_flag && xterm_title && xterm_title_str) { + fprintf (stdout, "\33]0;mc - %s/%s\7", xterm_title_str, _file); + fflush(stdout); + } + if (!made_directory) { char *dir = mhl_str_dir_plus_file (home_dir, EDIT_DIR); made_directory = (mkdir (dir, 0700) != -1 || errno == EEXIST); @@ -209,6 +217,8 @@ destroy_dlg (edit_dlg); + update_xterm_title_path(); + return 1; } diff -Naur mc-4.6.2/src/main.c mc-4.6.2.tpg/src/main.c --- mc-4.6.2/src/main.c 2009-02-04 20:50:33.000000000 +0000 +++ mc-4.6.2.tpg/src/main.c 2009-02-04 20:51:20.000000000 +0000 @@ -281,6 +281,9 @@ /* Is the LANG UTF-8 ? */ gboolean is_utf8 = FALSE; +/* The xterm title */ +char *xterm_title_str = NULL; + /* mc_home: The home of MC */ char *mc_home = NULL; @@ -1626,6 +1629,7 @@ char *p, *s; if (xterm_flag && xterm_title) { + if ( xterm_title_str ) mhl_mem_free (xterm_title_str); p = s = g_strdup (strip_home_and_password (current_panel->cwd)); do { #ifndef UTF8 @@ -1639,7 +1643,7 @@ numeric_keypad_mode (); fprintf (stdout, "\33]0;mc - %s\7", p); fflush (stdout); - g_free (p); + xterm_title_str = p; } } diff -Naur mc-4.6.2/src/main.h mc-4.6.2.tpg/src/main.h --- mc-4.6.2/src/main.h 2009-02-04 20:50:33.000000000 +0000 +++ mc-4.6.2.tpg/src/main.h 2009-02-04 20:52:24.000000000 +0000 @@ -69,6 +69,7 @@ extern int only_leading_plus_minus; extern int output_starts_shell; extern int midnight_shutdown; +extern char *xterm_title_str; extern gboolean is_utf8; extern char cmd_buf [512]; extern const char *shell; diff -Naur mc-4.6.2/src/view.c mc-4.6.2.tpg/src/view.c --- mc-4.6.2/src/view.c 2009-02-04 20:50:33.000000000 +0000 +++ mc-4.6.2.tpg/src/view.c 2009-02-04 20:51:20.000000000 +0000 @@ -3368,6 +3368,11 @@ WButtonBar *bar; Dlg_head *view_dlg; + if (xterm_flag && xterm_title && xterm_title_str) { + fprintf (stdout, "\33]0;mc - %s/%s\7", xterm_title_str, file); + fflush(stdout); + } + /* Create dialog and widgets, put them on the dialog */ view_dlg = create_dlg (0, 0, LINES, COLS, NULL, view_dialog_callback, @@ -3391,6 +3396,8 @@ } destroy_dlg (view_dlg); + update_xterm_title_path(); + return succeeded; }