mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
Merge pull request #3399 from BDisp/v2_listview-scrolling-fix_3396
V2 Fixes #3396. ListViewWIthSelection scenario does not show all rows and other issues
This commit is contained in:
@@ -912,7 +912,7 @@ public class ListWrapper : IListDataSource
|
||||
int start = 0
|
||||
)
|
||||
{
|
||||
container.Move (col, line);
|
||||
container.Move (Math.Max (col - start, 0), line);
|
||||
object t = _source? [item];
|
||||
|
||||
if (t is null)
|
||||
@@ -1028,7 +1028,8 @@ public class ListWrapper : IListDataSource
|
||||
|
||||
private void RenderUstr (ConsoleDriver driver, string ustr, int col, int line, int width, int start = 0)
|
||||
{
|
||||
string u = TextFormatter.ClipAndJustify (ustr, width, TextAlignment.Left);
|
||||
string str = start > ustr.GetColumns () ? string.Empty : ustr.Substring (Math.Min (start, ustr.ToRunes ().Length - 1));
|
||||
string u = TextFormatter.ClipAndJustify (str, width, TextAlignment.Left);
|
||||
driver.AddStr (u);
|
||||
width -= u.GetColumns ();
|
||||
|
||||
|
||||
@@ -84,9 +84,9 @@ public class ListViewWithSelection : Scenario
|
||||
|
||||
_listView.DrawContent += (s, e) =>
|
||||
{
|
||||
scrollBar.Size = _listView.Source.Count - 1;
|
||||
scrollBar.Size = _listView.Source.Count;
|
||||
scrollBar.Position = _listView.TopItem;
|
||||
scrollBar.OtherScrollBarView.Size = _listView.MaxLength - 1;
|
||||
scrollBar.OtherScrollBarView.Size = _listView.MaxLength;
|
||||
scrollBar.OtherScrollBarView.Position = _listView.LeftItem;
|
||||
scrollBar.Refresh ();
|
||||
};
|
||||
|
||||
@@ -759,4 +759,39 @@ Item 6",
|
||||
Assert.Equal ("Three", selected);
|
||||
Assert.Equal (2, lv.SelectedItem);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[AutoInitShutdown]
|
||||
public void LeftItem_TopItem_Tests ()
|
||||
{
|
||||
var source = new List<string> ();
|
||||
for (int i = 0; i < 5; i++) {
|
||||
source.Add ($"Item {i}");
|
||||
}
|
||||
var lv = new ListView () {
|
||||
X = 1,
|
||||
Width = 10,
|
||||
Height = 5,
|
||||
Source = new ListWrapper (source)
|
||||
};
|
||||
var top = new Toplevel ();
|
||||
top.Add (lv);
|
||||
Application.Begin (top);
|
||||
|
||||
TestHelpers.AssertDriverContentsWithFrameAre (@"
|
||||
Item 0
|
||||
Item 1
|
||||
Item 2
|
||||
Item 3
|
||||
Item 4", _output);
|
||||
|
||||
lv.LeftItem = 1;
|
||||
lv.TopItem = 1;
|
||||
Application.Refresh ();
|
||||
TestHelpers.AssertDriverContentsWithFrameAre (@"
|
||||
tem 1
|
||||
tem 2
|
||||
tem 3
|
||||
tem 4", _output);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user