From af92711df0be044c9f2ff4a563bcedb4b4f04e2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Commaille?= Date: Sun, 21 May 2023 11:16:04 +0200 Subject: [PATCH] notifications: Don't use Session as the helper widget --- src/session/avatar/data.rs | 13 +++++++++---- src/session/notifications.rs | 5 +---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/session/avatar/data.rs b/src/session/avatar/data.rs index cb0aba26..f24872ff 100644 --- a/src/session/avatar/data.rs +++ b/src/session/avatar/data.rs @@ -1,7 +1,10 @@ use gtk::{gdk, glib, prelude::*, subclass::prelude::*}; use super::AvatarImage; -use crate::utils::notifications::{paintable_as_notification_icon, string_as_notification_icon}; +use crate::{ + application::Application, + utils::notifications::{paintable_as_notification_icon, string_as_notification_icon}, +}; mod imp { use std::cell::RefCell; @@ -109,11 +112,13 @@ impl AvatarData { /// Get this avatar as a notification icon. /// /// Returns `None` if an error occurred while generating the icon. - pub fn as_notification_icon(&self, helper_widget: >k::Widget) -> Option { + pub fn as_notification_icon(&self) -> Option { + let window = Application::default().main_window().upcast(); + let icon = if let Some(paintable) = self.image().paintable() { - paintable_as_notification_icon(paintable.upcast_ref(), helper_widget) + paintable_as_notification_icon(paintable.upcast_ref(), &window) } else { - string_as_notification_icon(&self.display_name().unwrap_or_default(), helper_widget) + string_as_notification_icon(&self.display_name().unwrap_or_default(), &window) }; match icon { diff --git a/src/session/notifications.rs b/src/session/notifications.rs index 76b235c5..13774af1 100644 --- a/src/session/notifications.rs +++ b/src/session/notifications.rs @@ -156,10 +156,7 @@ impl Notifications { .set_default_action_and_target_value("app.show-room", Some(&payload.to_variant())); notification.set_body(Some(&body)); - if let Some(icon) = room - .avatar_data() - .as_notification_icon(session.upcast_ref()) - { + if let Some(icon) = room.avatar_data().as_notification_icon() { notification.set_icon(&icon); }