mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-19 13:29:54 +00:00
Complete desktop background binding for current screen
This commit is contained in:
parent
b2db1c749f
commit
d122d72ad6
3 changed files with 15 additions and 14 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue