mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-02 01:03:29 +01:00
* Initial plan * Add comprehensive MouseClick removal analysis Co-authored-by: tig <585482+tig@users.noreply.github.com> * Fix code review feedback on analysis document Co-authored-by: tig <585482+tig@users.noreply.github.com> * Add actual line numbers to analysis document Co-authored-by: tig <585482+tig@users.noreply.github.com> * Final polish on analysis document - clarify TextView Co-authored-by: tig <585482+tig@users.noreply.github.com> * Phase 3: Port 6 simple Views from MouseClick to Selecting/MouseBindings Co-authored-by: tig <585482+tig@users.noreply.github.com> * Phase 2: Port 10 Scenarios from MouseClick to Selecting/remove Co-authored-by: tig <585482+tig@users.noreply.github.com> * Update analysis document - Phases 2 & 3 complete Co-authored-by: tig <585482+tig@users.noreply.github.com> * Fix failing tests - Button multi-button support and Label focus handling Co-authored-by: tig <585482+tig@users.noreply.github.com> * Phase 4: Port ScrollBar from OnMouseClick to OnSelecting; remove analysis doc Co-authored-by: tig <585482+tig@users.noreply.github.com> * Phase 5: Update/remove tests that explicitly test MouseClick API Co-authored-by: tig <585482+tig@users.noreply.github.com> * Code cleanup * Remove MouseClick event Consolidated mouse event handling by removing the `MouseClick` event and integrating its functionality into the `MouseEvent` event. Simplified `MouseEventArgs` documentation and added support for invoking commands bound to mouse events. Reorganized code by removing `Mouse Pressed Events` and `Mouse Click Events` regions, introducing a new `WhenGrabbed Handlers` region. Updated tests to replace `MouseClick` with `MouseEvent`, adjusted test logic, and improved variable naming for clarity. Removed redundant assertions and unused code related to `MouseClick`. Improved event propagation logic to ensure proper handling of unhandled events. Performed general code cleanup to enhance readability and maintainability. * Updated deep dives. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tig <585482+tig@users.noreply.github.com> Co-authored-by: Tig <tig@users.noreply.github.com>
This commit is contained in:
@@ -25,7 +25,7 @@ public class CharacterMap : Scenario
|
||||
|
||||
public override List<Key> GetDemoKeyStrokes ()
|
||||
{
|
||||
List<Key> keys = new ();
|
||||
List<Key> keys = [];
|
||||
|
||||
for (var i = 0; i < 200; i++)
|
||||
{
|
||||
@@ -91,7 +91,7 @@ public class CharacterMap : Scenario
|
||||
};
|
||||
top.Add (jumpEdit);
|
||||
|
||||
_charMap.SelectedCodePointChanged += (sender, args) =>
|
||||
_charMap.SelectedCodePointChanged += (_, args) =>
|
||||
{
|
||||
if (Rune.IsValid (args.Value))
|
||||
{
|
||||
@@ -134,27 +134,33 @@ public class CharacterMap : Scenario
|
||||
_categoryList.Table = CreateCategoryTable (0, isDescending);
|
||||
|
||||
// if user clicks the mouse in TableView
|
||||
_categoryList.MouseClick += (s, e) =>
|
||||
{
|
||||
_categoryList.ScreenToCell (e.Position, out int? clickedCol);
|
||||
_categoryList.Selecting += (_, e) =>
|
||||
{
|
||||
// Only handle mouse clicks
|
||||
if (e.Context is not CommandContext<MouseBinding> { Binding.MouseEventArgs: { } mouseArgs })
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (clickedCol != null && e.Flags.HasFlag (MouseFlags.Button1Clicked))
|
||||
{
|
||||
EnumerableTableSource<UnicodeRange> table = (EnumerableTableSource<UnicodeRange>)_categoryList.Table;
|
||||
string prevSelection = table.Data.ElementAt (_categoryList.SelectedRow).Category;
|
||||
isDescending = !isDescending;
|
||||
_categoryList.ScreenToCell (mouseArgs.Position, out int? clickedCol);
|
||||
|
||||
_categoryList.Table = CreateCategoryTable (clickedCol.Value, isDescending);
|
||||
if (clickedCol != null && mouseArgs.Flags.HasFlag (MouseFlags.Button1Clicked))
|
||||
{
|
||||
EnumerableTableSource<UnicodeRange> table = (EnumerableTableSource<UnicodeRange>)_categoryList.Table;
|
||||
string prevSelection = table.Data.ElementAt (_categoryList.SelectedRow).Category;
|
||||
isDescending = !isDescending;
|
||||
|
||||
table = (EnumerableTableSource<UnicodeRange>)_categoryList.Table;
|
||||
_categoryList.Table = CreateCategoryTable (clickedCol.Value, isDescending);
|
||||
|
||||
_categoryList.SelectedRow = table.Data
|
||||
.Select ((item, index) => new { item, index })
|
||||
.FirstOrDefault (x => x.item.Category == prevSelection)
|
||||
?.index
|
||||
?? -1;
|
||||
}
|
||||
};
|
||||
table = (EnumerableTableSource<UnicodeRange>)_categoryList.Table;
|
||||
|
||||
_categoryList.SelectedRow = table.Data
|
||||
.Select ((item, index) => new { item, index })
|
||||
.FirstOrDefault (x => x.item.Category == prevSelection)
|
||||
?.index
|
||||
?? -1;
|
||||
}
|
||||
};
|
||||
|
||||
int longestName = UnicodeRange.Ranges.Max (r => r.Category.GetColumns ());
|
||||
|
||||
@@ -167,7 +173,7 @@ public class CharacterMap : Scenario
|
||||
|
||||
_categoryList.Width = _categoryList.Style.ColumnStyles.Sum (c => c.Value.MinWidth) + 4;
|
||||
|
||||
_categoryList.SelectedCellChanged += (s, args) =>
|
||||
_categoryList.SelectedCellChanged += (_, args) =>
|
||||
{
|
||||
EnumerableTableSource<UnicodeRange> table = (EnumerableTableSource<UnicodeRange>)_categoryList.Table;
|
||||
_charMap.StartCodePoint = table.Data.ToArray () [args.NewRow].Start;
|
||||
@@ -219,7 +225,7 @@ public class CharacterMap : Scenario
|
||||
|
||||
_errorLabel.Visible = true;
|
||||
|
||||
uint result = 0;
|
||||
uint result;
|
||||
|
||||
if (jumpEdit.Text.Length == 1)
|
||||
{
|
||||
@@ -283,7 +289,7 @@ public class CharacterMap : Scenario
|
||||
?? -1;
|
||||
_categoryList.EnsureSelectedCellIsVisible ();
|
||||
|
||||
// Ensure the typed glyph is selected
|
||||
// Ensure the typed glyph is selected
|
||||
_charMap.SelectedCodePoint = (int)result;
|
||||
_charMap.SetFocus ();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user