1- using System . Collections . Generic ;
1+ using Nickvision . Desktop . Application ;
2+ using System . Collections . Generic ;
23
34namespace Nickvision . Desktop . GNOME . Helpers ;
45
56public static class ComboRowExtensions
67{
78 extension ( Adw . ComboRow row )
89 {
9- public void SetModel ( List < string > strs , string selected , bool allowElipse = true )
10+ public void SetModel ( IReadOnlyList < ISelectionItem > selectionItems , bool allowElipse = true )
11+ {
12+ var selectedIndex = 0u ;
13+ var list = Gtk . StringList . New ( null ) ;
14+ for ( var i = 0 ; i < selectionItems . Count ; i ++ )
15+ {
16+ var item = selectionItems [ i ] ;
17+ list . Append ( item . Label ) ;
18+ if ( item . ShouldSelect )
19+ {
20+ selectedIndex = ( uint ) i ;
21+ }
22+ }
23+ if ( ! allowElipse )
24+ {
25+ ( row . Factory ! as Gtk . SignalListItemFactory ) ! . OnSetup += ( sender , args ) =>
26+ {
27+ var box = ( args . Object as Gtk . ListItem ) ! . Child ;
28+ var label = box ! . GetFirstChild ( ) as Gtk . Label ;
29+ label ! . Ellipsize = Pango . EllipsizeMode . None ;
30+ } ;
31+ }
32+ row . Model = list ;
33+ list . Unref ( ) ;
34+ row . Selected = selectedIndex ;
35+ }
36+
37+ public void SetModel ( IReadOnlyList < string > strs , string selected , bool allowElipse = true )
1038 {
1139 var selectedIndex = 0u ;
1240 var list = Gtk . StringList . New ( null ) ;
@@ -33,7 +61,7 @@ public void SetModel(List<string> strs, string selected, bool allowElipse = true
3361 row . Selected = selectedIndex ;
3462 }
3563
36- public void SetModel ( List < string > strs , uint selected , bool allowElipse = true )
64+ public void SetModel ( IReadOnlyList < string > strs , uint selected , bool allowElipse = true )
3765 {
3866 var list = Gtk . StringList . New ( null ) ;
3967 foreach ( var str in strs )
0 commit comments