#import "MacDarkMode.hpp" #import #import #import #import @interface MacDarkMode : NSObject {} @end @implementation MacDarkMode namespace Slic3r { namespace GUI { bool mac_dark_mode() { NSString *style = [[NSUserDefaults standardUserDefaults] stringForKey:@"AppleInterfaceStyle"]; return style && [style isEqualToString:@"Dark"]; } double mac_max_scaling_factor() { double scaling = 1.; // if ([NSScreen screens] == nil) { // scaling = [[NSScreen mainScreen] backingScaleFactor]; // } else { // for (int i = 0; i < [[NSScreen screens] count]; ++ i) // scaling = std::max(scaling, [[[NSScreen screens] objectAtIndex:0] backingScaleFactor]); // } return scaling; } void set_miniaturizable(void * window) { [(NSView*) window window].styleMask |= NSMiniaturizableWindowMask; } } } @end /* textColor for NSButton */ @implementation NSButton (NSButton_Extended) - (NSColor *)textColor { NSAttributedString *attrTitle = [self attributedTitle]; int len = [attrTitle length]; NSRange range = NSMakeRange(0, MIN(len, 1)); // get the font attributes from the first character NSDictionary *attrs = [attrTitle fontAttributesInRange:range]; NSColor *textColor = [NSColor controlTextColor]; if (attrs) { textColor = [attrs objectForKey:NSForegroundColorAttributeName]; } return textColor; } - (void)setTextColor:(NSColor *)textColor { NSMutableAttributedString *attrTitle = [[NSMutableAttributedString alloc] initWithAttributedString:[self attributedTitle]]; int len = [attrTitle length]; NSRange range = NSMakeRange(0, len); [attrTitle addAttribute:NSForegroundColorAttributeName value:textColor range:range]; [attrTitle fixAttributesInRange:range]; [self setAttributedTitle:attrTitle]; [attrTitle release]; } @end #include #include #include @implementation wxCocoaOutlineView (Edit) - (BOOL)outlineView: (NSOutlineView*) view shouldEditTableColumn:(nullable NSTableColumn *)tableColumn item:(nonnull id)item { wxDataViewColumn* const col((wxDataViewColumn *)[tableColumn getColumnPointer]); wxDataViewItem item2([static_cast(item) pointer]); wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); // Before doing anything we send an event asking if editing of this item is really wanted. wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_EDITING_STARTED, dvc, col, item2); dvc->GetEventHandler()->ProcessEvent( event ); if( !event.IsAllowed() ) return NO; return YES; } @end