From 21ee24b9955467c6dcdd1c95d6f8f555058f127f Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 29 Aug 2019 19:30:48 +0200 Subject: [PATCH] GFontDatabase: Iterate the font database in alphabetical order This makes font menus look nicer. --- Libraries/LibGUI/GFontDatabase.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/Libraries/LibGUI/GFontDatabase.cpp b/Libraries/LibGUI/GFontDatabase.cpp index a8fee8844c..c6712186e8 100644 --- a/Libraries/LibGUI/GFontDatabase.cpp +++ b/Libraries/LibGUI/GFontDatabase.cpp @@ -1,6 +1,7 @@ +#include #include -#include #include +#include #include #include #include @@ -40,17 +41,26 @@ GFontDatabase::~GFontDatabase() void GFontDatabase::for_each_font(Function callback) { - for (auto& it : m_name_to_metadata) { - callback(it.key); - } + Vector names; + names.ensure_capacity(m_name_to_metadata.size()); + for (auto& it : m_name_to_metadata) + names.append(it.key); + quick_sort(names.begin(), names.end(), AK::is_less_than); + for (auto& name : names) + callback(name); } void GFontDatabase::for_each_fixed_width_font(Function callback) { + Vector names; + names.ensure_capacity(m_name_to_metadata.size()); for (auto& it : m_name_to_metadata) { if (it.value.is_fixed_width) - callback(it.key); + names.append(it.key); } + quick_sort(names.begin(), names.end(), AK::is_less_than); + for (auto& name : names) + callback(name); } RefPtr GFontDatabase::get_by_name(const StringView& name)