From 7e40c7cf998a42882426bcfd74551499d284296e Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 30 Dec 2020 17:47:27 +0100 Subject: [PATCH] LibGUI: Allow GUI::FilePicker to show only fixed-width fonts This is useful when you really only want something monospaced. :^) --- Libraries/LibGUI/FontPicker.cpp | 9 ++++++++- Libraries/LibGUI/FontPicker.h | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Libraries/LibGUI/FontPicker.cpp b/Libraries/LibGUI/FontPicker.cpp index cde2a09ede..5fe9efd918 100644 --- a/Libraries/LibGUI/FontPicker.cpp +++ b/Libraries/LibGUI/FontPicker.cpp @@ -35,8 +35,9 @@ namespace GUI { -FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font) +FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font, bool fixed_width_only) : Dialog(parent_window) + , m_fixed_width_only(fixed_width_only) { set_title("Font picker"); resize(540, 300); @@ -53,6 +54,8 @@ FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font) HashTable families; Gfx::FontDatabase::the().for_each_font([&](auto& font) { + if (m_fixed_width_only && !font.is_fixed_width()) + return; families.set(font.family()); }); @@ -65,6 +68,8 @@ FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font) m_family = index.data().to_string(); HashTable weights; Gfx::FontDatabase::the().for_each_font([&](auto& font) { + if (m_fixed_width_only && !font.is_fixed_width()) + return; if (font.family() == m_family.value()) weights.set(font.weight()); }); @@ -88,6 +93,8 @@ FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font) m_sizes.clear(); Optional index_of_old_size_in_new_list; Gfx::FontDatabase::the().for_each_font([&](auto& font) { + if (m_fixed_width_only && !font.is_fixed_width()) + return; if (font.family() == m_family.value() && font.weight() == m_weight.value()) { if (m_size.has_value() && m_size.value() == font.presentation_size()) index_of_old_size_in_new_list = m_sizes.size(); diff --git a/Libraries/LibGUI/FontPicker.h b/Libraries/LibGUI/FontPicker.h index 28a4d73450..a1d388342a 100644 --- a/Libraries/LibGUI/FontPicker.h +++ b/Libraries/LibGUI/FontPicker.h @@ -41,10 +41,12 @@ public: void set_font(const Gfx::Font*); private: - FontPicker(Window* parent_window = nullptr, const Gfx::Font* current_font = nullptr); + FontPicker(Window* parent_window = nullptr, const Gfx::Font* current_font = nullptr, bool fixed_width_only = false); void update_sample_label(); + const bool m_fixed_width_only; + RefPtr m_font; RefPtr m_family_list_view;