comparison mac/dw.m @ 1957:c15af2f757e2

Mac: Initial code to support Dark Mode on Mojave.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 24 Jul 2019 20:31:55 +0000
parents 2924bc788170
children 45abd53a3fc6
comparison
equal deleted inserted replaced
1956:2924bc788170 1957:c15af2f757e2
393 return image_exts[i]; 393 return image_exts[i];
394 } 394 }
395 return NULL; 395 return NULL;
396 } 396 }
397 397
398 unsigned long _DW_COLOR_ROW_ODD = DW_RGB(230, 230, 230);
399 unsigned long _DW_COLOR_ROW_EVEN = DW_RGB_TRANSPARENT;
400
398 unsigned long _get_color(unsigned long thiscolor) 401 unsigned long _get_color(unsigned long thiscolor)
399 { 402 {
400 if(thiscolor & DW_RGB_COLOR) 403 if(thiscolor & DW_RGB_COLOR)
401 { 404 {
402 return thiscolor & ~DW_RGB_COLOR; 405 return thiscolor & ~DW_RGB_COLOR;
419 422
420 /* Create a default colors for a thread */ 423 /* Create a default colors for a thread */
421 void _init_colors(void) 424 void _init_colors(void)
422 { 425 {
423 NSColor *fgcolor = [[NSColor grayColor] retain]; 426 NSColor *fgcolor = [[NSColor grayColor] retain];
424 427 #ifdef BUILDING_FOR_MOJAVE
428 if (@available(macOS 10.14, *))
429 {
430 NSArray<NSColor *> *bgColors = [NSColor alternatingContentBackgroundColors];
431 if(bgColors)
432 {
433 NSColor *color = bgColors[0];
434 NSColor* device_color = [color colorUsingColorSpace:[NSColorSpace deviceRGBColorSpace]];
435 CGFloat red, green, blue;
436 [device_color getRed:&red green:&green blue:&blue alpha:NULL];
437 _DW_COLOR_ROW_ODD = DW_RGB((int)(red * 255), (int)(green *255), (int)(blue *255));
438 color = bgColors[1];
439 device_color = [color colorUsingColorSpace:[NSColorSpace deviceRGBColorSpace]];
440 [device_color getRed:&red green:&green blue:&blue alpha:NULL];
441 _DW_COLOR_ROW_EVEN = DW_RGB((int)(red * 255), (int)(green *255), (int)(blue *255));
442 }
443 }
444 #endif
425 pthread_setspecific(_dw_fg_color_key, fgcolor); 445 pthread_setspecific(_dw_fg_color_key, fgcolor);
426 pthread_setspecific(_dw_bg_color_key, NULL); 446 pthread_setspecific(_dw_bg_color_key, NULL);
427 } 447 }
428 448
429 typedef struct _sighandler 449 typedef struct _sighandler
1907 _do_resize(box, size.width, size.height); 1927 _do_resize(box, size.width, size.height);
1908 _handle_resize_events(box); 1928 _handle_resize_events(box);
1909 } 1929 }
1910 } 1930 }
1911 } 1931 }
1912 -(void)setTag:(NSInteger)tag { self.Tag = tag; } 1932 -(void)setTag:(NSInteger)tag { Tag = tag; }
1913 -(void *)userdata { return userdata; } 1933 -(void *)userdata { return userdata; }
1914 -(void)setUserdata:(void *)input { userdata = input; } 1934 -(void)setUserdata:(void *)input { userdata = input; }
1915 -(float)percent { return percent; } 1935 -(float)percent { return percent; }
1916 -(void)setPercent:(float)input { percent = input; } 1936 -(void)setPercent:(float)input { percent = input; }
1917 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; } 1937 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
7410 DW_FUNCTION_NO_RETURN(dw_container_set_stripe) 7430 DW_FUNCTION_NO_RETURN(dw_container_set_stripe)
7411 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, oddcolor, unsigned long, evencolor, unsigned long) 7431 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, oddcolor, unsigned long, evencolor, unsigned long)
7412 { 7432 {
7413 DW_FUNCTION_INIT; 7433 DW_FUNCTION_INIT;
7414 DWContainer *cont = handle; 7434 DWContainer *cont = handle;
7415 [cont setRowBgOdd:(oddcolor == DW_CLR_DEFAULT ? DW_RGB(230,230,230) : oddcolor) 7435 [cont setRowBgOdd:(oddcolor == DW_CLR_DEFAULT ? _DW_COLOR_ROW_ODD : oddcolor)
7416 andEven:(evencolor == DW_CLR_DEFAULT ? DW_RGB_TRANSPARENT : evencolor)]; 7436 andEven:(evencolor == DW_CLR_DEFAULT ? _DW_COLOR_ROW_EVEN : evencolor)];
7417 DW_FUNCTION_RETURN_NOTHING; 7437 DW_FUNCTION_RETURN_NOTHING;
7418 } 7438 }
7419 7439
7420 /* 7440 /*
7421 * Sets the width of a column in the container. 7441 * Sets the width of a column in the container.