From bb13e9f3da6692a9130f79d3a4a570fb5c135c69 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Fri, 15 Dec 2017 10:27:54 -0800 Subject: [PATCH] wxColourDialog implementation for GTK+4 GtkColorChooserDialog must be used instead of GtkColorSelectionDialog --- src/gtk/colordlg.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/gtk/colordlg.cpp b/src/gtk/colordlg.cpp index 4fd714213b..ce8aba58d8 100644 --- a/src/gtk/colordlg.cpp +++ b/src/gtk/colordlg.cpp @@ -52,6 +52,12 @@ bool wxColourDialog::Create(wxWindow *parent, wxColourData *data) : NULL; wxString title(_("Choose colour")); +#ifdef __WXGTK4__ + m_widget = gtk_color_chooser_dialog_new(title.utf8_str(), parentGTK); + g_object_ref(m_widget); + gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(m_widget), m_data.GetChooseAlpha()); +#else + wxGCC_WARNING_SUPPRESS(deprecated-declarations) m_widget = gtk_color_selection_dialog_new(wxGTK_CONV(title)); g_object_ref(m_widget); @@ -66,6 +72,8 @@ bool wxColourDialog::Create(wxWindow *parent, wxColourData *data) GTK_COLOR_SELECTION_DIALOG(m_widget))); gtk_color_selection_set_has_palette(sel, true); gtk_color_selection_set_has_opacity_control(sel, m_data.GetChooseAlpha()); + wxGCC_WARNING_RESTORE() +#endif return true; } @@ -86,11 +94,16 @@ int wxColourDialog::ShowModal() void wxColourDialog::ColourDataToDialog() { + const wxColour& color = m_data.GetColour(); +#ifdef __WXGTK4__ + if (color.IsOk()) + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(m_widget), color); +#else + wxGCC_WARNING_SUPPRESS(deprecated-declarations) GtkColorSelection* sel = GTK_COLOR_SELECTION( gtk_color_selection_dialog_get_color_selection( GTK_COLOR_SELECTION_DIALOG(m_widget))); - const wxColour& color = m_data.GetColour(); if (color.IsOk()) { #ifdef __WXGTK3__ @@ -120,10 +133,18 @@ void wxColourDialog::ColourDataToDialog() GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(sel)); g_object_set(settings, "gtk-color-palette", pal.c_str(), NULL); + wxGCC_WARNING_RESTORE() +#endif // !__WXGTK4__ } void wxColourDialog::DialogToColourData() { +#ifdef __WXGTK4__ + GdkRGBA clr; + gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(m_widget), &clr); + m_data.SetColour(clr); +#else + wxGCC_WARNING_SUPPRESS(deprecated-declarations) GtkColorSelection* sel = GTK_COLOR_SELECTION( gtk_color_selection_dialog_get_color_selection( GTK_COLOR_SELECTION_DIALOG(m_widget))); @@ -161,6 +182,8 @@ void wxColourDialog::DialogToColourData() } g_free(pal); + wxGCC_WARNING_RESTORE() +#endif // !__WXGTK4__ } #endif // wxUSE_COLOURDLG