From 18290d92652a218ce96e5e063330fd368761140c Mon Sep 17 00:00:00 2001 From: Manuel cortez Date: Thu, 13 Aug 2026 08:58:40 -0600 Subject: [PATCH] fix(ui): prevent invalid list selections --- src/multiplatform_widgets/widgets.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/multiplatform_widgets/widgets.py b/src/multiplatform_widgets/widgets.py index 33b20bba..4fd108a0 100644 --- a/src/multiplatform_widgets/widgets.py +++ b/src/multiplatform_widgets/widgets.py @@ -49,10 +49,16 @@ class list(object): def remove_item(self, pos): """ Deletes an item from the list.""" if self.system == "Windows": - if pos > 0: self.list.Focus(pos-1) + if not 0 <= pos < self.list.GetItemCount(): + return + if pos > 0: + self.list.Focus(pos-1) self.list.DeleteItem(pos) else: - if pos > 0: self.list.SetSelection(pos-1) + if not 0 <= pos < self.list.GetCount(): + return + if pos > 0: + self.list.SetSelection(pos-1) self.list.Delete(pos) def clear(self): @@ -71,10 +77,15 @@ class list(object): return self.list.GetSelection() def select_item(self, pos): + """Select an existing item without sending invalid native list commands.""" if self.system == "Windows": + if not 0 <= pos < self.list.GetItemCount(): + return self.list.Focus(pos) self.list.Select(pos) else: + if not 0 <= pos < self.list.GetCount(): + return self.list.SetSelection(pos) def get_count(self):