comparison gtk4/dw.c @ 3004:0ea8d055e7df

GTK4: Fix even more deprecation warnings in GTK 4.10 and later. Migrate to GtkColorDialog for 4.10 from GtkColorChooserDialog.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 08 Dec 2023 00:31:50 +0000
parents dc33d380d614
children 522ef24b0aba
comparison
equal deleted inserted replaced
3003:dc33d380d614 3004:0ea8d055e7df
6730 } 6730 }
6731 *background = color; 6731 *background = color;
6732 } 6732 }
6733 } 6733 }
6734 6734
6735 #if GTK_CHECK_VERSION(4,10,0)
6736 static void _dw_color_choose_response(GObject *gobject, GAsyncResult *result, gpointer data)
6737 {
6738 DWDialog *tmp = data;
6739 GError *error = NULL;
6740 GdkRGBA *newcol = gtk_color_dialog_choose_rgba_finish(GTK_COLOR_DIALOG(gobject), result, &error);
6741
6742 if(error != NULL && newcol != NULL)
6743 {
6744 g_free(newcol);
6745 newcol = NULL;
6746 }
6747 dw_dialog_dismiss(tmp, newcol);
6748 }
6749 #endif
6750
6735 /* Allows the user to choose a color using the system's color chooser dialog. 6751 /* Allows the user to choose a color using the system's color chooser dialog.
6736 * Parameters: 6752 * Parameters:
6737 * value: current color 6753 * value: current color
6738 * Returns: 6754 * Returns:
6739 * The selected color or the current color if cancelled. 6755 * The selected color or the current color if cancelled.
6741 DW_FUNCTION_DEFINITION(dw_color_choose, ULONG, ULONG value) 6757 DW_FUNCTION_DEFINITION(dw_color_choose, ULONG, ULONG value)
6742 DW_FUNCTION_ADD_PARAM1(value) 6758 DW_FUNCTION_ADD_PARAM1(value)
6743 DW_FUNCTION_RETURN(dw_color_choose, ULONG) 6759 DW_FUNCTION_RETURN(dw_color_choose, ULONG)
6744 DW_FUNCTION_RESTORE_PARAM1(value, ULONG) 6760 DW_FUNCTION_RESTORE_PARAM1(value, ULONG)
6745 { 6761 {
6746 GtkColorChooser *cd;
6747 GdkRGBA color = _dw_internal_color(value); 6762 GdkRGBA color = _dw_internal_color(value);
6748 unsigned long retcolor = value; 6763 unsigned long retcolor = value;
6749 DWDialog *tmp = dw_dialog_new(NULL); 6764 DWDialog *tmp = dw_dialog_new(NULL);
6765 #if GTK_CHECK_VERSION(4,10,0)
6766 GtkColorDialog *cd = gtk_color_dialog_new();
6767 GdkRGBA *newcol;
6768
6769 gtk_color_dialog_choose_rgba(cd, NULL, &color, NULL, (GAsyncReadyCallback)_dw_color_choose_response, tmp);
6770
6771 newcol = dw_dialog_wait(tmp);
6772
6773 if(newcol)
6774 {
6775 retcolor = DW_RGB((int)(newcol->red * 255), (int)(newcol->green * 255), (int)(newcol->blue * 255));
6776 g_free(newcol);
6777 }
6778 #else
6779 GtkColorChooser *cd;
6750 6780
6751 cd = (GtkColorChooser *)gtk_color_chooser_dialog_new("Choose color", NULL); 6781 cd = (GtkColorChooser *)gtk_color_chooser_dialog_new("Choose color", NULL);
6752 gtk_color_chooser_set_use_alpha(cd, FALSE); 6782 gtk_color_chooser_set_use_alpha(cd, FALSE);
6753 gtk_color_chooser_set_rgba(cd, &color); 6783 gtk_color_chooser_set_rgba(cd, &color);
6754 6784
6760 gtk_color_chooser_get_rgba(cd, &color); 6790 gtk_color_chooser_get_rgba(cd, &color);
6761 retcolor = DW_RGB((int)(color.red * 255), (int)(color.green * 255), (int)(color.blue * 255)); 6791 retcolor = DW_RGB((int)(color.red * 255), (int)(color.green * 255), (int)(color.blue * 255));
6762 } 6792 }
6763 if(GTK_IS_WINDOW(cd)) 6793 if(GTK_IS_WINDOW(cd))
6764 gtk_window_destroy(GTK_WINDOW(cd)); 6794 gtk_window_destroy(GTK_WINDOW(cd));
6795 #endif
6765 DW_FUNCTION_RETURN_THIS(retcolor); 6796 DW_FUNCTION_RETURN_THIS(retcolor);
6766 } 6797 }
6767 6798
6768 /* Draw a point on a window (preferably a render window). 6799 /* Draw a point on a window (preferably a render window).
6769 * Parameters: 6800 * Parameters: