1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:28:12 +00:00

GSortingProxyModel: Sort case insensitively by default (#441)

This commit is contained in:
ignas-sa 2019-08-11 19:11:25 +03:00 committed by Andreas Kling
parent b9223e4f04
commit 0faaa1e53a
2 changed files with 9 additions and 1 deletions

View file

@ -87,7 +87,11 @@ void GSortingProxyModel::resort()
auto data2 = target().data(target().index(row2, m_key_column), GModel::Role::Sort); auto data2 = target().data(target().index(row2, m_key_column), GModel::Role::Sort);
if (data1 == data2) if (data1 == data2)
return 0; return 0;
bool is_less_than = data1 < data2; bool is_less_than;
if (data1.is_string() && data2.is_string() && !m_sorting_case_sensitive)
is_less_than = data1.as_string().to_lowercase() < data2.as_string().to_lowercase();
else
is_less_than = data1 < data2;
return m_sort_order == GSortOrder::Ascending ? is_less_than : !is_less_than; return m_sort_order == GSortOrder::Ascending ? is_less_than : !is_less_than;
}); });
if (previously_selected_target_row != -1) { if (previously_selected_target_row != -1) {

View file

@ -29,8 +29,12 @@ private:
void resort(); void resort();
void set_sorting_case_sensitive(bool b) { m_sorting_case_sensitive = b; }
bool is_sorting_case_sensitive() { return m_sorting_case_sensitive; }
NonnullRefPtr<GModel> m_target; NonnullRefPtr<GModel> m_target;
Vector<int> m_row_mappings; Vector<int> m_row_mappings;
int m_key_column { -1 }; int m_key_column { -1 };
GSortOrder m_sort_order { GSortOrder::Ascending }; GSortOrder m_sort_order { GSortOrder::Ascending };
bool m_sorting_case_sensitive { false };
}; };