diff --git a/libs/gtkmm2ext/gtk_ui.cc b/libs/gtkmm2ext/gtk_ui.cc index bbef7a0825..e6212a35bd 100644 --- a/libs/gtkmm2ext/gtk_ui.cc +++ b/libs/gtkmm2ext/gtk_ui.cc @@ -511,12 +511,18 @@ UI::do_request (UIRequest* req) ======================================================================*/ void -UI::dump_errors (std::ostream& ostr) +UI::dump_errors (std::ostream& ostr, size_t limit) { Glib::Threads::Mutex::Lock lm (error_lock); ostr << endl << X_("Errors/Messages:") << endl; for (list::const_iterator i = error_stack.begin(); i != error_stack.end(); ++i) { ostr << *i << endl; + if (limit > 0) { + if (--limit == 0) { + ostr << "..." << endl; + break; + } + } } ostr << endl; } diff --git a/libs/gtkmm2ext/gtkmm2ext/gtk_ui.h b/libs/gtkmm2ext/gtkmm2ext/gtk_ui.h index be0dabb2e5..4b87a46313 100644 --- a/libs/gtkmm2ext/gtkmm2ext/gtk_ui.h +++ b/libs/gtkmm2ext/gtkmm2ext/gtk_ui.h @@ -143,7 +143,8 @@ public: void flush_pending (float timeout = 0); void toggle_errors (); void show_errors (); - void dump_errors (std::ostream&); + void dump_errors (std::ostream&, size_t limit = 0); + void clear_errors () { error_stack.clear (); } void touch_display (Touchable *); void set_tip (Gtk::Widget &w, const gchar *tip); void set_tip (Gtk::Widget &w, const std::string &tip);