Mercurial > dwindows
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. |