Compare commits
No commits in common. "f63dbd95a7ad36e7bb865d575b31b46f77b2caaf" and "de1bd6400704215a22dbf4381adf19547beb8e0d" have entirely different histories.
f63dbd95a7
...
de1bd64007
2 changed files with 2 additions and 24 deletions
|
@ -7,14 +7,11 @@ use crate::ui::widget::button::Button;
|
|||
|
||||
const WINDOW_SIZE: (f64, f64) = (600., 250.);
|
||||
|
||||
/// Show an error dialog.
|
||||
/// The title and message are extracted from the error chain in the given `Report`.
|
||||
pub fn error<T: Data>(err: Report, _parent: WindowHandle) -> WindowDesc<T> {
|
||||
let (title, msg) = {
|
||||
let count = err.chain().count();
|
||||
|
||||
if count == 1 {
|
||||
// If there is only one error, that's all we can show.
|
||||
(
|
||||
String::from("An error occurred!"),
|
||||
err.root_cause().to_string(),
|
||||
|
@ -23,20 +20,13 @@ pub fn error<T: Data>(err: Report, _parent: WindowHandle) -> WindowDesc<T> {
|
|||
let first = err.chain().next().unwrap();
|
||||
let root = err.root_cause();
|
||||
|
||||
// If there is more than one error in the chain we want to show
|
||||
// - The first one: This will describe the overall operation that failed
|
||||
// - The root cause: The actual thing that failed (e.g. 'No such file or directory')
|
||||
// - The one before the root cause: With diligent `wrap_err` usage, this will provide
|
||||
// context to the root cause (e.g. the file name we failed to access)
|
||||
//
|
||||
// If there are only two errors, the first one is also the context to the root cause.
|
||||
if count > 2 {
|
||||
// The second to last one, the context to the root cause
|
||||
let context = err.chain().nth(count - 2).unwrap();
|
||||
|
||||
(format!("{first}!"), format!("{}: {}", context, root))
|
||||
} else {
|
||||
("An error occurred!".to_string(), format!("{}: {}", first, root))
|
||||
(format!("{first}!"), root.to_string())
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -56,7 +56,7 @@ impl std::io::Write for ChannelWriter {
|
|||
}
|
||||
|
||||
pub fn create_tracing_subscriber(tx: UnboundedSender<Vec<u8>>, level: Option<LogLevel>) {
|
||||
let mut env_layer = if let Some(level) = level {
|
||||
let env_layer = if let Some(level) = level {
|
||||
EnvFilter::from(level)
|
||||
} else if cfg!(debug_assertions) {
|
||||
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"))
|
||||
|
@ -64,18 +64,6 @@ pub fn create_tracing_subscriber(tx: UnboundedSender<Vec<u8>>, level: Option<Log
|
|||
EnvFilter::new("error,dtmm=info")
|
||||
};
|
||||
|
||||
// The internal implementation of Druid's GTK file dialog turns
|
||||
// cancelling the dialog into an error. The, also internal, wrapper
|
||||
// then logs and swallows the error.
|
||||
// Therefore, as a consumer of the library, we don't have any way
|
||||
// to customize this behavior, and instead have to filter out the
|
||||
// tracing event.
|
||||
env_layer = env_layer.add_directive(
|
||||
"druid_shell::backend::gtk::window=off"
|
||||
.parse()
|
||||
.expect("Invalid env filter directive"),
|
||||
);
|
||||
|
||||
let stdout_layer = fmt::layer().pretty();
|
||||
|
||||
let channel_layer = fmt::layer()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue