Use Windows native font dialog in prefs in Windows.

This commit is contained in:
2026-03-18 11:27:13 -06:00
parent 4f1edef667
commit 4112ca8b39

View File

@@ -46,6 +46,8 @@
#ifdef WIN32
#include "../common/fe.h"
#include <windows.h>
#include <commdlg.h>
#endif
#include "sexy-spell-entry.h"
@@ -1236,6 +1238,34 @@ setup_browsefolder_cb (GtkWidget *button, GtkEntry *entry)
static void
setup_browsefont_cb (GtkWidget *button, GtkWidget *entry)
{
#ifdef WIN32
CHOOSEFONTW choose_font;
LOGFONTW log_font;
gunichar2 utf16_name[LF_FACESIZE];
gchar *font_name;
gchar font_spec[FONTNAMELEN + 1];
gint point_size;
memset (&choose_font, 0, sizeof (choose_font));
memset (&log_font, 0, sizeof (log_font));
choose_font.lStructSize = sizeof (choose_font);
choose_font.Flags = CF_SCREENFONTS | CF_FORCEFONTEXIST | CF_INITTOLOGFONTSTRUCT;
choose_font.lpLogFont = &log_font;
if (ChooseFontW (&choose_font))
{
memcpy (utf16_name, log_font.lfFaceName, sizeof (utf16_name));
font_name = g_utf16_to_utf8 (utf16_name, -1, NULL, NULL, NULL);
if (font_name && font_name[0])
{
point_size = choose_font.iPointSize > 0 ? choose_font.iPointSize / 10 : 11;
g_snprintf (font_spec, sizeof (font_spec), "%s %d", font_name, point_size);
gtk_entry_set_text (GTK_ENTRY (entry), font_spec);
}
g_free (font_name);
}
#else
GtkWidget *dialog;
const char *font_name;
@@ -1253,6 +1283,7 @@ setup_browsefont_cb (GtkWidget *button, GtkWidget *entry)
G_CALLBACK (setup_fontchooser_response), entry);
gtk_widget_show (dialog);
#endif
}
static void