Log errors in log even when a response-sender is listening, add error message when a monitor doesn't exist
This commit is contained in:
parent
7647fcd2c4
commit
279785f420
2 changed files with 27 additions and 18 deletions
|
@ -1,9 +1,5 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
config,
|
config, daemon_response::DaemonResponseSender, display_backend, error_handling_ctx, eww_state, script_var_handler::*,
|
||||||
daemon_response::DaemonResponseSender,
|
|
||||||
display_backend, error_handling_ctx,
|
|
||||||
eww_state::{self},
|
|
||||||
script_var_handler::*,
|
|
||||||
EwwPaths,
|
EwwPaths,
|
||||||
};
|
};
|
||||||
use anyhow::*;
|
use anyhow::*;
|
||||||
|
@ -237,8 +233,8 @@ impl App {
|
||||||
|
|
||||||
root_widget.get_style_context().add_class(&window_name.to_string());
|
root_widget.get_style_context().add_class(&window_name.to_string());
|
||||||
|
|
||||||
let monitor_geometry =
|
let monitor_geometry = get_monitor_geometry(monitor.or(window_def.monitor_number))?;
|
||||||
get_monitor_geometry(monitor.or(window_def.monitor_number).unwrap_or_else(get_default_monitor_index));
|
|
||||||
let eww_window = initialize_window(monitor_geometry, root_widget, window_def)?;
|
let eww_window = initialize_window(monitor_geometry, root_widget, window_def)?;
|
||||||
|
|
||||||
self.open_windows.insert(window_name.clone(), eww_window);
|
self.open_windows.insert(window_name.clone(), eww_window);
|
||||||
|
@ -254,7 +250,7 @@ impl App {
|
||||||
|
|
||||||
if let Err(err) = open_result {
|
if let Err(err) = open_result {
|
||||||
self.failed_windows.insert(window_name.to_string());
|
self.failed_windows.insert(window_name.to_string());
|
||||||
Err(err)
|
Err(err).with_context(|| format!("failed to open window `{}`", window_name))
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -373,22 +369,26 @@ fn on_screen_changed(window: >k::Window, _old_screen: Option<&gdk::Screen>) {
|
||||||
window.set_visual(visual.as_ref());
|
window.set_visual(visual.as_ref());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_default_monitor_index() -> i32 {
|
/// Get the monitor geometry of a given monitor number, or the default if none is given
|
||||||
|
fn get_monitor_geometry(n: Option<i32>) -> Result<gdk::Rectangle> {
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
gdk::Display::get_default().expect("could not get default display").get_default_screen().get_primary_monitor()
|
let display = gdk::Display::get_default().expect("could not get default display");
|
||||||
}
|
let monitor = match n {
|
||||||
|
Some(n) => display.get_monitor(n).with_context(|| format!("Failed to get monitor with index {}", n))?,
|
||||||
/// Get the monitor geometry of a given monitor number
|
None => display.get_primary_monitor().context("Failed to get primary monitor from GTK")?,
|
||||||
fn get_monitor_geometry(n: i32) -> gdk::Rectangle {
|
};
|
||||||
#[allow(deprecated)]
|
Ok(monitor.get_geometry())
|
||||||
gdk::Display::get_default().expect("could not get default display").get_default_screen().get_monitor_geometry(n)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// In case of an Err, send the error message to a sender.
|
/// In case of an Err, send the error message to a sender.
|
||||||
fn respond_with_error<T>(sender: DaemonResponseSender, result: Result<T>) -> Result<()> {
|
fn respond_with_error<T>(sender: DaemonResponseSender, result: Result<T>) -> Result<()> {
|
||||||
match result {
|
match result {
|
||||||
Ok(_) => sender.send_success(String::new()),
|
Ok(_) => sender.send_success(String::new()),
|
||||||
Err(e) => sender.send_failure(error_handling_ctx::format_error(&e)),
|
Err(e) => {
|
||||||
|
let formatted = error_handling_ctx::format_error(&e);
|
||||||
|
println!("{}", formatted);
|
||||||
|
sender.send_failure(formatted)
|
||||||
|
},
|
||||||
}
|
}
|
||||||
.context("sending response from main thread")
|
.context("sending response from main thread")
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,10 +49,19 @@ pub fn anyhow_err_to_diagnostic(err: &anyhow::Error) -> Diagnostic<usize> {
|
||||||
} else if let Some(err) = err.downcast_ref::<EvalError>() {
|
} else if let Some(err) = err.downcast_ref::<EvalError>() {
|
||||||
err.to_diagnostic()
|
err.to_diagnostic()
|
||||||
} else {
|
} else {
|
||||||
gen_diagnostic!(err)
|
gen_diagnostic!(format!("{:?}", err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// pub fn print_diagnostic(diagnostic: codespan_reporting::diagnostic::Diagnostic<usize>) {
|
||||||
|
// match stringify_diagnostic(diagnostic.clone()) {
|
||||||
|
// Ok(diag) => {
|
||||||
|
// eprintln!("{}", diag);
|
||||||
|
//}
|
||||||
|
// Err(_) => {
|
||||||
|
// log::error!("{:?}", diagnostic);
|
||||||
|
//}
|
||||||
|
|
||||||
pub fn stringify_diagnostic(mut diagnostic: codespan_reporting::diagnostic::Diagnostic<usize>) -> anyhow::Result<String> {
|
pub fn stringify_diagnostic(mut diagnostic: codespan_reporting::diagnostic::Diagnostic<usize>) -> anyhow::Result<String> {
|
||||||
diagnostic.labels.drain_filter(|label| Span(label.range.start, label.range.end, label.file_id).is_dummy());
|
diagnostic.labels.drain_filter(|label| Span(label.range.start, label.range.end, label.file_id).is_dummy());
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue