Mercurial > dwindows
changeset 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 |
files | gtk4/dw.c |
diffstat | 1 files changed, 32 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/gtk4/dw.c Wed Dec 06 23:21:03 2023 +0000 +++ b/gtk4/dw.c Fri Dec 08 00:31:50 2023 +0000 @@ -6732,6 +6732,22 @@ } } +#if GTK_CHECK_VERSION(4,10,0) +static void _dw_color_choose_response(GObject *gobject, GAsyncResult *result, gpointer data) +{ + DWDialog *tmp = data; + GError *error = NULL; + GdkRGBA *newcol = gtk_color_dialog_choose_rgba_finish(GTK_COLOR_DIALOG(gobject), result, &error); + + if(error != NULL && newcol != NULL) + { + g_free(newcol); + newcol = NULL; + } + dw_dialog_dismiss(tmp, newcol); +} +#endif + /* Allows the user to choose a color using the system's color chooser dialog. * Parameters: * value: current color @@ -6743,10 +6759,24 @@ DW_FUNCTION_RETURN(dw_color_choose, ULONG) DW_FUNCTION_RESTORE_PARAM1(value, ULONG) { - GtkColorChooser *cd; GdkRGBA color = _dw_internal_color(value); unsigned long retcolor = value; DWDialog *tmp = dw_dialog_new(NULL); +#if GTK_CHECK_VERSION(4,10,0) + GtkColorDialog *cd = gtk_color_dialog_new(); + GdkRGBA *newcol; + + gtk_color_dialog_choose_rgba(cd, NULL, &color, NULL, (GAsyncReadyCallback)_dw_color_choose_response, tmp); + + newcol = dw_dialog_wait(tmp); + + if(newcol) + { + retcolor = DW_RGB((int)(newcol->red * 255), (int)(newcol->green * 255), (int)(newcol->blue * 255)); + g_free(newcol); + } +#else + GtkColorChooser *cd; cd = (GtkColorChooser *)gtk_color_chooser_dialog_new("Choose color", NULL); gtk_color_chooser_set_use_alpha(cd, FALSE); @@ -6762,6 +6792,7 @@ } if(GTK_IS_WINDOW(cd)) gtk_window_destroy(GTK_WINDOW(cd)); +#endif DW_FUNCTION_RETURN_THIS(retcolor); }