Skip to content

Commit cd01171

Browse files
committed
#191 Bug Fixes
1 parent 8f194f6 commit cd01171

File tree

2 files changed

+22
-16
lines changed

2 files changed

+22
-16
lines changed

src/ReaLTaiizor/Controls/ListBox/MaterialListBox.cs

+21-15
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ public class MaterialListBox : Control, MaterialControlI
3434
private int _selectedIndex;
3535
private MaterialListBoxItem _selectedItem;
3636
private bool _showScrollBar;
37-
private bool _multiKeyDown;
3837
private int _hoveredItem;
3938
private MaterialScrollBar _scrollBar;
4039
private bool _smoothScrolling = true;
@@ -291,7 +290,6 @@ private void SetDefaults()
291290
Items.CollectionChanged += InvalidateScroll;
292291
SelectedItems = new List<object>();
293292
_indicates = new List<object>();
294-
_multiKeyDown = false;
295293
_scrollBar = new MaterialScrollBar()
296294
{
297295
Orientation = MateScrollOrientation.Vertical,
@@ -403,15 +401,14 @@ protected override void OnPaint(PaintEventArgs e)
403401
int itemOffset = SmoothScrolling ? _scrollBar.Value - (firstItem * _itemHeight) : 0;
404402

405403
// Calculate the last item
406-
int lastItem = (_scrollBar.Value / _itemHeight) + ((Height + itemOffset) / _itemHeight) + 1 > Items.Count ?
407-
Items.Count :
408-
(_scrollBar.Value / _itemHeight) + ((Height + itemOffset) / _itemHeight) + 1;
404+
int lastItem = (_scrollBar.Value / _itemHeight) + ((Height + itemOffset) / _itemHeight) + 1 > Items.Count ? Items.Count : (_scrollBar.Value / _itemHeight) + ((Height + itemOffset) / _itemHeight) + 1;
409405

410406
g.FillRectangle(Enabled ? SkinManager.BackgroundBrush : SkinManager.BackgroundDisabledBrush, mainRect);
411407

412408
//Set TextAlignFlags
413409
MaterialNativeTextRenderer.TextAlignFlags primaryTextAlignFlags;
414410
MaterialNativeTextRenderer.TextAlignFlags secondaryTextAlignFlags = MaterialNativeTextRenderer.TextAlignFlags.Left | MaterialNativeTextRenderer.TextAlignFlags.Top;
411+
415412
if (_style is ListBoxStyle.TwoLine or ListBoxStyle.ThreeLine)
416413
{
417414
primaryTextAlignFlags = MaterialNativeTextRenderer.TextAlignFlags.Left | MaterialNativeTextRenderer.TextAlignFlags.Bottom;
@@ -451,10 +448,7 @@ protected override void OnPaint(PaintEventArgs e)
451448
}
452449
else if (_indicates.Contains(i))
453450
{
454-
g.FillRectangle(Enabled ?
455-
SelectedBrush :
456-
new SolidBrush(BlendColor(SelectedColor, SkinManager.SwitchOffDisabledThumbColor, 197)),
457-
itemRect);
451+
g.FillRectangle(Enabled ? SelectedBrush : new SolidBrush(BlendColor(SelectedColor, SkinManager.SwitchOffDisabledThumbColor, 197)), itemRect);
458452
}
459453
}
460454
else
@@ -465,10 +459,7 @@ protected override void OnPaint(PaintEventArgs e)
465459
}
466460
else if (i == SelectedIndex)
467461
{
468-
g.FillRectangle(Enabled ?
469-
SelectedBrush :
470-
new SolidBrush(BlendColor(SelectedColor, SkinManager.SwitchOffDisabledThumbColor, 197)),
471-
itemRect);
462+
g.FillRectangle(Enabled ? SelectedBrush : new SolidBrush(BlendColor(SelectedColor, SkinManager.SwitchOffDisabledThumbColor, 197)), itemRect);
472463
}
473464
}
474465

@@ -497,7 +488,7 @@ protected override void OnPaint(PaintEventArgs e)
497488
NativeText.DrawTransparentText(
498489
itemText,
499490
_primaryFont,
500-
Enabled ? (i != SelectedIndex || UseAccentColor) ?
491+
Enabled ? ((i != SelectedIndex && !_indicates.Contains(i)) || UseAccentColor) ?
501492
SkinManager.TextHighEmphasisColor :
502493
SkinManager.ColorScheme.TextColor :
503494
SkinManager.TextDisabledOrHintColor, // Disabled
@@ -733,10 +724,25 @@ protected override void OnMouseDown(MouseEventArgs e)
733724

734725
if (index >= 0 && index < Items.Count)
735726
{
736-
if (MultiSelect && _multiKeyDown)
727+
if (MultiSelect && (ModifierKeys == Keys.Control || ModifierKeys == Keys.Shift))
737728
{
729+
if (SelectedIndex >= 0)
730+
{
731+
if (!_indicates.Contains(SelectedIndex))
732+
{
733+
_indicates.Add(SelectedIndex);
734+
}
735+
if (!SelectedItems.Contains(Items[SelectedIndex]))
736+
{
737+
SelectedItems.Add(Items[SelectedIndex]);
738+
}
739+
740+
SelectedIndex = -1;
741+
}
742+
738743
_indicates.Add(index);
739744
SelectedItems.Add(Items[index]);
745+
SelectedValueChanged?.Invoke(this, Items[index]);
740746
}
741747
else
742748
{

src/ReaLTaiizor/ReaLTaiizor.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// Creator: Taiizor
1414
// Website: www.vegalya.com
1515
// Created: 15.May.2019
16-
// Changed: 10.Dec.2024
16+
// Changed: 13.Dec.2024
1717
// Version: 3.8.1.1
1818
//
1919
// |---------DO-NOT-REMOVE---------|

0 commit comments

Comments
 (0)