From: Matthias Clasen Date: Sat, 29 Oct 2022 03:58:50 +0000 (-0400) Subject: fontchooser: Add a way to set a GtkFilter X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~9^2~132^2~21 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=bd5dedce126d503a0c56f69369bf3355aedf3e41;p=gtk4.git fontchooser: Add a way to set a GtkFilter We keep this private, since the chooser apis are going away. This will be used in GtkFontDialog. --- diff --git a/gtk/gtkfontchooserdialog.c b/gtk/gtkfontchooserdialog.c index 147cff8bca..c10c214bb2 100644 --- a/gtk/gtkfontchooserdialog.c +++ b/gtk/gtkfontchooserdialog.c @@ -21,7 +21,7 @@ #include #include -#include "gtkfontchooserdialog.h" +#include "gtkfontchooserdialogprivate.h" #include "gtkfontchooser.h" #include "gtkfontchooserwidget.h" #include "gtkfontchooserwidgetprivate.h" @@ -324,3 +324,10 @@ gtk_font_chooser_dialog_buildable_get_internal_child (GtkBuildable *buildable, return parent_buildable_iface->get_internal_child (buildable, builder, childname); } + +void +gtk_font_chooser_dialog_set_filter (GtkFontChooserDialog *dialog, + GtkFilter *filter) +{ + gtk_font_chooser_widget_set_filter (GTK_FONT_CHOOSER_WIDGET (dialog->fontchooser), filter); +} diff --git a/gtk/gtkfontchooserdialogprivate.h b/gtk/gtkfontchooserdialogprivate.h new file mode 100644 index 0000000000..e57685e9ec --- /dev/null +++ b/gtk/gtkfontchooserdialogprivate.h @@ -0,0 +1,31 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 2017 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifndef __GTK_FONT_CHOOSER_DIALOG_PRIVATE_H__ +#define __GTK_FONT_CHOOSER_DIALOG_PRIVATE_H__ + +#include "gtkfontchooserdialog.h" +#include "gtkfilter.h" + +G_BEGIN_DECLS + +void gtk_font_chooser_dialog_set_filter (GtkFontChooserDialog *dialog, + GtkFilter *filter); + +G_END_DECLS + +#endif /* __GTK_FONT_CHOOSER_WIDGET_PRIVATE_H__ */ diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c index c645739644..dcacae2e10 100644 --- a/gtk/gtkfontchooserwidget.c +++ b/gtk/gtkfontchooserwidget.c @@ -63,6 +63,7 @@ #include "gtksortlistmodel.h" #include "gtkstringsorter.h" #include "gtkdropdown.h" +#include "gtkmultifilter.h" #include @@ -105,6 +106,7 @@ struct _GtkFontChooserWidget GtkSingleSelection *selection; GtkCustomFilter *custom_filter; GtkCustomFilter *user_filter; + GtkCustomFilter *multi_filter; GtkFilterListModel *filter_model; GtkWidget *preview; @@ -144,6 +146,8 @@ struct _GtkFontChooserWidget gpointer filter_data; GDestroyNotify filter_data_destroy; + GtkFilter *filter; + guint last_fontconfig_timestamp; GtkFontChooserLevel level; @@ -1325,6 +1329,8 @@ gtk_font_chooser_widget_finalize (GObject *object) g_free (fontchooser->font_features); + g_clear_object (&fontchooser->filter); + G_OBJECT_CLASS (gtk_font_chooser_widget_parent_class)->finalize (object); } @@ -2976,3 +2982,14 @@ gtk_font_chooser_widget_get_tweak_action (GtkWidget *widget) return fontchooser->tweak_action; } + +void +gtk_font_chooser_widget_set_filter (GtkFontChooserWidget *widget, + GtkFilter *filter) +{ + if (widget->filter) + gtk_multi_filter_remove (GTK_MULTI_FILTER (widget->multi_filter), 3); + g_set_object (&widget->filter, filter); + if (widget->filter) + gtk_multi_filter_append (GTK_MULTI_FILTER (widget->multi_filter), g_object_ref (filter)); +} diff --git a/gtk/gtkfontchooserwidgetprivate.h b/gtk/gtkfontchooserwidgetprivate.h index 1a7dd743ec..ac8e7dc7c0 100644 --- a/gtk/gtkfontchooserwidgetprivate.h +++ b/gtk/gtkfontchooserwidgetprivate.h @@ -19,11 +19,15 @@ #define __GTK_FONT_CHOOSER_WIDGET_PRIVATE_H__ #include "gtkfontchooserwidget.h" +#include "gtkfilter.h" G_BEGIN_DECLS GAction *gtk_font_chooser_widget_get_tweak_action (GtkWidget *fontchooser); +void gtk_font_chooser_widget_set_filter (GtkFontChooserWidget *widget, + GtkFilter *filter); + G_END_DECLS #endif /* __GTK_FONT_CHOOSER_WIDGET_PRIVATE_H__ */ diff --git a/gtk/ui/gtkfontchooserwidget.ui b/gtk/ui/gtkfontchooserwidget.ui index ffd3ae68e4..9b0fc90313 100644 --- a/gtk/ui/gtkfontchooserwidget.ui +++ b/gtk/ui/gtkfontchooserwidget.ui @@ -8,7 +8,7 @@ 1 - +