1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-07-02 03:01:04 +02:00

Merge pull request #470 from JakeStanger/fix/tray

More tray fixes
This commit is contained in:
Jake Stanger 2024-03-17 14:12:56 +00:00 committed by GitHub
commit 5a3ba08ddd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 75 additions and 30 deletions

View file

@ -172,7 +172,7 @@ impl<'a> ImageProvider<'a> {
);
// Different error types makes this a bit awkward
match pixbuf.map(|pixbuf| Self::create_and_load_surface(&pixbuf, &image, scale))
match pixbuf.map(|pixbuf| Self::create_and_load_surface(&pixbuf, &image))
{
Ok(Err(err)) => error!("{err:?}"),
Err(err) => error!("{err:?}"),
@ -203,7 +203,7 @@ impl<'a> ImageProvider<'a> {
_ => unreachable!(), // handled above
}?;
Self::create_and_load_surface(&pixbuf, image, scale)
Self::create_and_load_surface(&pixbuf, image)
}
/// Attempts to create a Cairo surface from the provided `Pixbuf`,
@ -211,10 +211,13 @@ impl<'a> ImageProvider<'a> {
/// The surface is then loaded into the provided image.
///
/// This is necessary for HiDPI since `Pixbuf`s are always treated as scale factor 1.
fn create_and_load_surface(pixbuf: &Pixbuf, image: &gtk::Image, scale: i32) -> Result<()> {
pub fn create_and_load_surface(pixbuf: &Pixbuf, image: &gtk::Image) -> Result<()> {
let surface = unsafe {
let ptr =
gdk_cairo_surface_create_from_pixbuf(pixbuf.as_ptr(), scale, std::ptr::null_mut());
let ptr = gdk_cairo_surface_create_from_pixbuf(
pixbuf.as_ptr(),
image.scale_factor(),
std::ptr::null_mut(),
);
Surface::from_raw_full(ptr)
}?;