wxColourDialog implementation for GTK+4
GtkColorChooserDialog must be used instead of GtkColorSelectionDialog
This commit is contained in:
@@ -52,6 +52,12 @@ bool wxColourDialog::Create(wxWindow *parent, wxColourData *data)
|
|||||||
: NULL;
|
: NULL;
|
||||||
|
|
||||||
wxString title(_("Choose colour"));
|
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));
|
m_widget = gtk_color_selection_dialog_new(wxGTK_CONV(title));
|
||||||
|
|
||||||
g_object_ref(m_widget);
|
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_DIALOG(m_widget)));
|
||||||
gtk_color_selection_set_has_palette(sel, true);
|
gtk_color_selection_set_has_palette(sel, true);
|
||||||
gtk_color_selection_set_has_opacity_control(sel, m_data.GetChooseAlpha());
|
gtk_color_selection_set_has_opacity_control(sel, m_data.GetChooseAlpha());
|
||||||
|
wxGCC_WARNING_RESTORE()
|
||||||
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -86,11 +94,16 @@ int wxColourDialog::ShowModal()
|
|||||||
|
|
||||||
void wxColourDialog::ColourDataToDialog()
|
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(
|
GtkColorSelection* sel = GTK_COLOR_SELECTION(
|
||||||
gtk_color_selection_dialog_get_color_selection(
|
gtk_color_selection_dialog_get_color_selection(
|
||||||
GTK_COLOR_SELECTION_DIALOG(m_widget)));
|
GTK_COLOR_SELECTION_DIALOG(m_widget)));
|
||||||
|
|
||||||
const wxColour& color = m_data.GetColour();
|
|
||||||
if (color.IsOk())
|
if (color.IsOk())
|
||||||
{
|
{
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
@@ -120,10 +133,18 @@ void wxColourDialog::ColourDataToDialog()
|
|||||||
|
|
||||||
GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(sel));
|
GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(sel));
|
||||||
g_object_set(settings, "gtk-color-palette", pal.c_str(), NULL);
|
g_object_set(settings, "gtk-color-palette", pal.c_str(), NULL);
|
||||||
|
wxGCC_WARNING_RESTORE()
|
||||||
|
#endif // !__WXGTK4__
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxColourDialog::DialogToColourData()
|
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(
|
GtkColorSelection* sel = GTK_COLOR_SELECTION(
|
||||||
gtk_color_selection_dialog_get_color_selection(
|
gtk_color_selection_dialog_get_color_selection(
|
||||||
GTK_COLOR_SELECTION_DIALOG(m_widget)));
|
GTK_COLOR_SELECTION_DIALOG(m_widget)));
|
||||||
@@ -161,6 +182,8 @@ void wxColourDialog::DialogToColourData()
|
|||||||
}
|
}
|
||||||
|
|
||||||
g_free(pal);
|
g_free(pal);
|
||||||
|
wxGCC_WARNING_RESTORE()
|
||||||
|
#endif // !__WXGTK4__
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_COLOURDLG
|
#endif // wxUSE_COLOURDLG
|
||||||
|
Reference in New Issue
Block a user