diff --git a/binding-mri/wallpaper-binding.cpp b/binding-mri/wallpaper-binding.cpp index 96eff9c..8f85305 100644 --- a/binding-mri/wallpaper-binding.cpp +++ b/binding-mri/wallpaper-binding.cpp @@ -104,7 +104,8 @@ end: MacDesktop::CacheCurrentBackground(); isCached = true; } - MacDesktop::ChangeBackground(imgname); + // imgname = shState->config().gameFolder + "/Wallpaper/" + imageName + "2x.bmp"; + MacDesktop::ChangeBackground(imgname, ((color >> 16) & 0xFF) / 255.0, ((color >> 8) & 0xFF) / 255.0, ((color) & 0xFF) / 255.0); #else // XXX Implement me! #endif diff --git a/src/mac-desktop.h b/src/mac-desktop.h index c3e92eb..5fd150b 100644 --- a/src/mac-desktop.h +++ b/src/mac-desktop.h @@ -10,6 +10,6 @@ namespace MacDesktop { void CacheCurrentBackground(); - bool ChangeBackground(std::string imageURL); - bool ResetBackground(); + void ChangeBackground(std::string imageURL, double red, double green, double blue); + void ResetBackground(); } \ No newline at end of file diff --git a/src/mac-desktop.mm b/src/mac-desktop.mm index f664e0a..be59ecf 100644 --- a/src/mac-desktop.mm +++ b/src/mac-desktop.mm @@ -11,28 +11,28 @@ #import BOOL isCached = NO; + NSURL *originalBackground; NSDictionary *originalOptions; -NSScreen *mainscreen = [NSScreen mainScreen]; +NSScreen *screen = [NSScreen mainScreen]; NSWorkspace *sharedworkspace = [NSWorkspace sharedWorkspace]; void MacDesktop::CacheCurrentBackground() { - originalBackground = [sharedworkspace desktopImageURLForScreen:mainscreen]; - originalOptions = [sharedworkspace desktopImageOptionsForScreen:mainscreen]; + if (isCached == NO) { + originalBackground = [sharedworkspace desktopImageURLForScreen:screen]; + originalOptions = [sharedworkspace desktopImageOptionsForScreen:screen]; + } isCached = YES; } -bool MacDesktop::ChangeBackground(std::string imageURL) { +void MacDesktop::ChangeBackground(std::string imageURL, double red, double green, double blue) { NSURL *URL = [NSURL fileURLWithPath:@(imageURL.c_str())]; - NSDictionary *options = @{NSWorkspaceDesktopImageScalingKey : @0, NSWorkspaceDesktopImageAllowClippingKey : @NO, NSWorkspaceDesktopImageFillColorKey : [NSColor blackColor]}; + NSDictionary *options = @{NSWorkspaceDesktopImageScalingKey : @3, NSWorkspaceDesktopImageAllowClippingKey : @0, NSWorkspaceDesktopImageFillColorKey : [NSColor colorWithSRGBRed:red green:green blue:blue alpha:1.0]}; - BOOL success = [sharedworkspace setDesktopImageURL:[URL absoluteURL] forScreen:mainscreen options:options error:nil]; - return (bool)success; + [sharedworkspace setDesktopImageURL:[URL absoluteURL] forScreen:screen options:options error:nil]; } -bool MacDesktop::ResetBackground() { - if (isCached == NO) return true; - BOOL success = [sharedworkspace setDesktopImageURL:originalBackground forScreen:mainscreen options:originalOptions error:nil]; - return (bool)success; +void MacDesktop::ResetBackground() { + if (isCached) [sharedworkspace setDesktopImageURL:originalBackground forScreen:screen options:originalOptions error:nil]; }