mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 03:55:24 +00:00
LibGUI: Don't keep creating new models in FontPicker
We can reuse the same model, as long as we call update() on them when the list of weights/sizes change.
This commit is contained in:
parent
91493be4f3
commit
c770b0bbec
Notes:
sideshowbarker
2024-07-19 00:19:50 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/c770b0bbeca
1 changed files with 11 additions and 8 deletions
|
@ -50,11 +50,15 @@ FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font, boo
|
|||
ASSERT_NOT_REACHED();
|
||||
|
||||
m_family_list_view = static_cast<ListView&>(*widget.find_descendant_by_name("family_list_view"));
|
||||
m_weight_list_view = static_cast<ListView&>(*widget.find_descendant_by_name("weight_list_view"));
|
||||
m_size_list_view = static_cast<ListView&>(*widget.find_descendant_by_name("size_list_view"));
|
||||
|
||||
m_family_list_view->set_model(ItemListModel<String>::create(m_families));
|
||||
m_family_list_view->horizontal_scrollbar().set_visible(false);
|
||||
|
||||
m_weight_list_view = static_cast<ListView&>(*widget.find_descendant_by_name("weight_list_view"));
|
||||
m_weight_list_view->set_model(ItemListModel<int>::create(m_weights));
|
||||
m_weight_list_view->horizontal_scrollbar().set_visible(false);
|
||||
|
||||
m_size_list_view = static_cast<ListView&>(*widget.find_descendant_by_name("size_list_view"));
|
||||
m_size_list_view->set_model(ItemListModel<int>::create(m_sizes));
|
||||
m_size_list_view->horizontal_scrollbar().set_visible(false);
|
||||
|
||||
m_sample_text_label = static_cast<Label&>(*widget.find_descendant_by_name("sample_text_label"));
|
||||
|
@ -67,7 +71,6 @@ FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font, boo
|
|||
m_families.append(font.family());
|
||||
});
|
||||
quick_sort(m_families);
|
||||
m_family_list_view->set_model(ItemListModel<String>::create(m_families));
|
||||
|
||||
m_family_list_view->on_selection = [this](auto& index) {
|
||||
m_family = index.data().to_string();
|
||||
|
@ -84,7 +87,7 @@ FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font, boo
|
|||
if (m_weight.has_value())
|
||||
index_of_old_weight_in_new_list = m_weights.find_first_index(m_weight.value());
|
||||
|
||||
m_weight_list_view->set_model(ItemListModel<int>::create(m_weights));
|
||||
m_weight_list_view->model()->update();
|
||||
m_weight_list_view->set_cursor(m_weight_list_view->model()->index(index_of_old_weight_in_new_list.value_or(0)), GUI::AbstractView::SelectionUpdate::Set);
|
||||
update_font();
|
||||
};
|
||||
|
@ -105,7 +108,7 @@ FontPicker::FontPicker(Window* parent_window, const Gfx::Font* current_font, boo
|
|||
index_of_old_size_in_new_list = m_sizes.find_first_index(m_size.value());
|
||||
}
|
||||
|
||||
m_size_list_view->set_model(ItemListModel<int>::create(m_sizes));
|
||||
m_size_list_view->model()->update();
|
||||
m_size_list_view->set_cursor(m_size_list_view->model()->index(index_of_old_size_in_new_list.value_or(0)), GUI::AbstractView::SelectionUpdate::Set);
|
||||
update_font();
|
||||
};
|
||||
|
@ -145,8 +148,8 @@ void FontPicker::set_font(const Gfx::Font* font)
|
|||
m_size = {};
|
||||
m_weights.clear();
|
||||
m_sizes.clear();
|
||||
m_weight_list_view->set_model(nullptr);
|
||||
m_size_list_view->set_model(nullptr);
|
||||
m_weight_list_view->model()->update();
|
||||
m_size_list_view->model()->update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue