comparison ios/dw.m @ 2723:27fd270cb0db

iOS: Implement initial color in the color picker dialog. Also fix a main thread warning in dw_scrollbar_new().
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 09 Dec 2021 12:40:17 +0000
parents 2987bf90c7c9
children 2dd68d2810ca
comparison
equal deleted inserted replaced
2722:cacde852e2db 2723:27fd270cb0db
1062 if (@available(iOS 14.0, *)) 1062 if (@available(iOS 14.0, *))
1063 { 1063 {
1064 DWDialog *dialog = dw_dialog_new(NULL); 1064 DWDialog *dialog = dw_dialog_new(NULL);
1065 UIColorPickerViewController *picker = [[UIColorPickerViewController alloc] init]; 1065 UIColorPickerViewController *picker = [[UIColorPickerViewController alloc] init];
1066 DWColorPickerDelegate *delegate = [[DWColorPickerDelegate alloc] init]; 1066 DWColorPickerDelegate *delegate = [[DWColorPickerDelegate alloc] init];
1067 unsigned long color = [[params firstObject] unsignedLongValue];
1067 1068
1068 /* Setup our picker */ 1069 /* Setup our picker */
1069 [picker setSupportsAlpha:NO]; 1070 [picker setSupportsAlpha:NO];
1070 /* Unhide our hidden window and make it key */ 1071 /* Unhide our hidden window and make it key */
1071 [hiddenWindow setHidden:NO]; 1072 [hiddenWindow setHidden:NO];
1072 [hiddenWindow makeKeyAndVisible]; 1073 [hiddenWindow makeKeyAndVisible];
1073 [delegate setDialog:dialog]; 1074 [delegate setDialog:dialog];
1074 [picker setDelegate:delegate]; 1075 [picker setDelegate:delegate];
1076 [picker setSelectedColor:[UIColor colorWithRed: DW_RED_VALUE(color)/255.0 green: DW_GREEN_VALUE(color)/255.0 blue: DW_BLUE_VALUE(color)/255.0 alpha: 1]];
1075 /* Wait for them to pick a color */ 1077 /* Wait for them to pick a color */
1076 [[hiddenWindow rootViewController] presentViewController:picker animated:YES completion:nil]; 1078 [[hiddenWindow rootViewController] presentViewController:picker animated:YES completion:nil];
1077 [params addObject:[NSNumber numberWithUnsignedLong:DW_POINTER_TO_UINT(dw_dialog_wait(dialog))]]; 1079 [params addObject:[NSNumber numberWithUnsignedLong:DW_POINTER_TO_UINT(dw_dialog_wait(dialog))]];
1078 /* Once the dialog is gone we can rehide our window */ 1080 /* Once the dialog is gone we can rehide our window */
1079 [hiddenWindow resignKeyWindow]; 1081 [hiddenWindow resignKeyWindow];
4559 * Parameters: 4561 * Parameters:
4560 * vertical: TRUE or FALSE if scrollbar is vertical. 4562 * vertical: TRUE or FALSE if scrollbar is vertical.
4561 * increments: Number of increments available. 4563 * increments: Number of increments available.
4562 * id: An ID to be used with dw_window_from_id() or 0L. 4564 * id: An ID to be used with dw_window_from_id() or 0L.
4563 */ 4565 */
4564 HWND API dw_scrollbar_new(int vertical, ULONG cid) 4566 DW_FUNCTION_DEFINITION(dw_scrollbar_new, HWND, int vertical, ULONG cid)
4567 DW_FUNCTION_ADD_PARAM2(vertical, cid)
4568 DW_FUNCTION_RETURN(dw_scrollbar_new, HWND)
4569 DW_FUNCTION_RESTORE_PARAM2(vertical, int, cid, ULONG)
4565 { 4570 {
4566 DWSlider *slider = dw_slider_new(vertical, 1, cid); 4571 DWSlider *slider = dw_slider_new(vertical, 1, cid);
4567 [slider setMinimumTrackTintColor:[UIColor clearColor]]; 4572 [slider setMinimumTrackTintColor:[UIColor clearColor]];
4568 [slider setMaximumTrackTintColor:[UIColor clearColor]]; 4573 [slider setMaximumTrackTintColor:[UIColor clearColor]];
4569 return slider; 4574 DW_FUNCTION_RETURN_THIS(slider);
4570 } 4575 }
4571 4576
4572 /* 4577 /*
4573 * Returns the position of the scrollbar. 4578 * Returns the position of the scrollbar.
4574 * Parameters: 4579 * Parameters:
5597 * Returns: 5602 * Returns:
5598 * The selected color or the current color if cancelled. 5603 * The selected color or the current color if cancelled.
5599 */ 5604 */
5600 unsigned long API dw_color_choose(unsigned long value) 5605 unsigned long API dw_color_choose(unsigned long value)
5601 { 5606 {
5602 NSMutableArray *params = [NSMutableArray arrayWithObject:[NSNumber numberWithUnsignedLong:value]]; 5607 NSMutableArray *params = [NSMutableArray arrayWithObject:[NSNumber numberWithUnsignedLong:_dw_get_color(value)]];
5603 unsigned long newcolor = value; 5608 unsigned long newcolor = value;
5604 5609
5605 [DWObj safeCall:@selector(colorPicker:) withObject:params]; 5610 [DWObj safeCall:@selector(colorPicker:) withObject:params];
5606 if([params count] > 1) 5611 if([params count] > 1)
5607 newcolor = [[params lastObject] unsignedLongValue]; 5612 newcolor = [[params lastObject] unsignedLongValue];