X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Finterthread_progress_window.cc;h=c74f12914f3d37a62720e16edee0f44d6af56d09;hb=1a8ac58c1ac9d34655a975addffb85e683f4a77d;hp=7de3fd2b4d3217c430907444b23ba0f54bd9a4e1;hpb=3b594f8046f947613ea94612d1a00b664d41a6f7;p=ardour.git diff --git a/gtk2_ardour/interthread_progress_window.cc b/gtk2_ardour/interthread_progress_window.cc index 7de3fd2b4d..c74f12914f 100644 --- a/gtk2_ardour/interthread_progress_window.cc +++ b/gtk2_ardour/interthread_progress_window.cc @@ -19,9 +19,10 @@ #include #include +#include "gtkmm2ext/utils.h" #include "ardour/import_status.h" #include "interthread_progress_window.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace Gtk; @@ -49,10 +50,21 @@ InterthreadProgressWindow::InterthreadProgressWindow (ARDOUR::InterThreadInfo* i set_default_size (200, 100); show_all (); + hide (); + _interthread_info->cancel = false; // override on_hide Glib::signal_timeout().connect (sigc::mem_fun (*this, &InterthreadProgressWindow::update), 100); } +void +InterthreadProgressWindow::on_hide () +{ + if (_interthread_info && !_interthread_info->done) { + //catch user pressing 'esc' or WM close + _interthread_info->cancel = true; + } +} + void InterthreadProgressWindow::cancel_clicked () { @@ -86,7 +98,7 @@ bool ImportProgressWindow::update () { _cancel_button.set_sensitive (!_import_status->freeze); - _label.set_markup ("" + _import_status->doing_what + ""); + _label.set_markup ("" + Gtkmm2ext::markup_escape_text (_import_status->doing_what) + ""); /* use overall progress for the bar, rather than that for individual files */ _bar.set_fraction ((_import_status->current - 1 + _import_status->progress) / _import_status->total); @@ -98,8 +110,8 @@ ImportProgressWindow::update () if (c > _import_status->total) { c = _import_status->total; } - + _bar.set_text (string_compose (_("Importing file: %1 of %2"), c, _import_status->total)); - - return !(_import_status->done || _import_status->cancel); + + return !(_import_status->all_done || _import_status->cancel); }