Complete desktop background binding for current screen

This commit is contained in:
Vinyl Darkscratch 2018-03-01 22:08:13 -08:00
parent b2db1c749f
commit d122d72ad6
3 changed files with 15 additions and 14 deletions

View file

@ -104,7 +104,8 @@ end:
MacDesktop::CacheCurrentBackground(); MacDesktop::CacheCurrentBackground();
isCached = true; 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 #else
// XXX Implement me! // XXX Implement me!
#endif #endif

View file

@ -10,6 +10,6 @@
namespace MacDesktop { namespace MacDesktop {
void CacheCurrentBackground(); void CacheCurrentBackground();
bool ChangeBackground(std::string imageURL); void ChangeBackground(std::string imageURL, double red, double green, double blue);
bool ResetBackground(); void ResetBackground();
} }

View file

@ -11,28 +11,28 @@
#import <AppKit/AppKit.h> #import <AppKit/AppKit.h>
BOOL isCached = NO; BOOL isCached = NO;
NSURL *originalBackground; NSURL *originalBackground;
NSDictionary<NSWorkspaceDesktopImageOptionKey, id> *originalOptions; NSDictionary<NSWorkspaceDesktopImageOptionKey, id> *originalOptions;
NSScreen *mainscreen = [NSScreen mainScreen]; NSScreen *screen = [NSScreen mainScreen];
NSWorkspace *sharedworkspace = [NSWorkspace sharedWorkspace]; NSWorkspace *sharedworkspace = [NSWorkspace sharedWorkspace];
void MacDesktop::CacheCurrentBackground() { void MacDesktop::CacheCurrentBackground() {
originalBackground = [sharedworkspace desktopImageURLForScreen:mainscreen]; if (isCached == NO) {
originalOptions = [sharedworkspace desktopImageOptionsForScreen:mainscreen]; originalBackground = [sharedworkspace desktopImageURLForScreen:screen];
originalOptions = [sharedworkspace desktopImageOptionsForScreen:screen];
}
isCached = YES; 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())]; NSURL *URL = [NSURL fileURLWithPath:@(imageURL.c_str())];
NSDictionary<NSWorkspaceDesktopImageOptionKey, id> *options = @{NSWorkspaceDesktopImageScalingKey : @0, NSWorkspaceDesktopImageAllowClippingKey : @NO, NSWorkspaceDesktopImageFillColorKey : [NSColor blackColor]}; NSDictionary<NSWorkspaceDesktopImageOptionKey, id> *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]; [sharedworkspace setDesktopImageURL:[URL absoluteURL] forScreen:screen options:options error:nil];
return (bool)success;
} }
bool MacDesktop::ResetBackground() { void MacDesktop::ResetBackground() {
if (isCached == NO) return true; if (isCached) [sharedworkspace setDesktopImageURL:originalBackground forScreen:screen options:originalOptions error:nil];
BOOL success = [sharedworkspace setDesktopImageURL:originalBackground forScreen:mainscreen options:originalOptions error:nil];
return (bool)success;
} }