diff --git a/src/mac-desktop.h b/src/mac-desktop.h index 961a705..c3e92eb 100644 --- a/src/mac-desktop.h +++ b/src/mac-desktop.h @@ -8,5 +8,8 @@ #include -bool ChangeBackground(std::string imageURL); -bool ResetBackground(); \ No newline at end of file +namespace MacDesktop { + void CacheCurrentBackground(); + bool ChangeBackground(std::string imageURL); + bool ResetBackground(); +} \ No newline at end of file diff --git a/src/mac-desktop.mm b/src/mac-desktop.mm index 47a8675..31e837b 100644 --- a/src/mac-desktop.mm +++ b/src/mac-desktop.mm @@ -10,16 +10,25 @@ #import #import -bool ChangeBackground(std::string imageURL) { +NSURL *originalBackground; +NSDictionary *originalOptions; + +NSScreen *mainscreen = [NSScreen mainScreen]; +NSWorkspace *sharedworkspace = [NSWorkspace sharedWorkspace]; + +void MacDesktop::CacheCurrentBackground() { + originalBackground = [sharedworkspace desktopImageURLForScreen:mainscreen]; + originalOptions = [sharedworkspace desktopImageOptionsForScreen:mainscreen]; +} + +bool MacDesktop::ChangeBackground(std::string imageURL) { NSURL *URL = [NSURL fileURLWithPath:@(imageURL.c_str())]; - NSScreen *mainscreen = [NSScreen mainScreen]; - NSWorkspace *sharedworkspace = [NSWorkspace sharedWorkspace]; BOOL success = [sharedworkspace setDesktopImageURL:[URL absoluteURL] forScreen:mainscreen options:[sharedworkspace desktopImageOptionsForScreen:mainscreen] error:nil]; return (bool)success; } -bool ResetBackground() { - // XXX Implement me! - return false; +bool MacDesktop::ResetBackground() { + BOOL success = [sharedworkspace setDesktopImageURL:originalBackground forScreen:mainscreen options:originalOptions error:nil]; + return (bool)success; }