Merge branch 'popover-sorting' into 'master'
Sort layouts by type before sorting by name Closes #176 See merge request Librem5/squeekboard!384
This commit is contained in:
@ -3,6 +3,7 @@
|
|||||||
use gio;
|
use gio;
|
||||||
use gtk;
|
use gtk;
|
||||||
use std::ffi::CString;
|
use std::ffi::CString;
|
||||||
|
use std::cmp::Ordering;
|
||||||
use ::layout::c::{ Bounds, EekGtkKeyboard };
|
use ::layout::c::{ Bounds, EekGtkKeyboard };
|
||||||
use ::locale;
|
use ::locale;
|
||||||
use ::locale::{ OwnedTranslation, Translation, compare_current_locale };
|
use ::locale::{ OwnedTranslation, Translation, compare_current_locale };
|
||||||
@ -334,8 +335,13 @@ pub fn show(
|
|||||||
.zip(all_layouts.clone().into_iter())
|
.zip(all_layouts.clone().into_iter())
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
human_names.sort_unstable_by(|(tr_a, _), (tr_b, _)| {
|
human_names.sort_unstable_by(|(tr_a, layout_a), (tr_b, layout_b)| {
|
||||||
compare_current_locale(&tr_a.0, &tr_b.0)
|
// Sort first by layout then name
|
||||||
|
match (layout_a, layout_b) {
|
||||||
|
(LayoutId::Local(_), LayoutId::System { .. }) => Ordering::Greater,
|
||||||
|
(LayoutId::System { .. }, LayoutId::Local(_)) => Ordering::Less,
|
||||||
|
_ => compare_current_locale(&tr_a.0, &tr_b.0)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// GVariant doesn't natively support `enum`s,
|
// GVariant doesn't natively support `enum`s,
|
||||||
|
|||||||
Reference in New Issue
Block a user