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();
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

View file

@ -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();
}

View file

@ -11,28 +11,28 @@
#import <AppKit/AppKit.h>
BOOL isCached = NO;
NSURL *originalBackground;
NSDictionary<NSWorkspaceDesktopImageOptionKey, id> *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<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];
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];
}