@@ -41,33 +41,43 @@ def paste_from_clipboard(self):
4141 text = clipboard .text ()
4242 if not text :
4343 return
44+
45+ # Get the proxy and source models
46+ proxy_model = self .table_view .model ()
47+ source_model = proxy_model .sourceModel ()
48+
49+ # Get the start index from the current selection
4450 start_index = self .table_view .selectionModel ().currentIndex ()
4551 if not start_index .isValid ():
4652 return
47- model = self .table_view .model ()
48- row_start , col_start = start_index .row (), start_index .column ()
49- # identify which invalid cells are being pasted into
53+
54+ # Map the start index to the source model
55+ source_index = proxy_model .mapToSource (start_index )
56+ row_start , col_start = source_index .row (), source_index .column ()
57+
58+ # Parse clipboard data
5059 pasted_data = [line .split ("\t " ) for line in text .split ("\n " ) if
5160 line .strip ()]
5261 num_rows = len (pasted_data )
53- num_cols = max ([len (line ) for line in pasted_data ])
62+ num_cols = max (len (line ) for line in pasted_data )
63+
64+ # Identify which cells are being overridden
5465 overridden_cells = {
5566 (row_start + r , col_start + c )
5667 for r in range (num_rows )
5768 for c in range (num_cols )
58- if model .index (row_start + r , col_start + c ).isValid ()
69+ if source_model .index (row_start + r , col_start + c ).isValid ()
5970 }
60- invalid_overridden_cells = overridden_cells .intersection (
61- model ._invalid_cells
62- )
63- if invalid_overridden_cells :
71+
72+ # Handle invalid cells
73+ if hasattr (source_model , "_invalid_cells" ):
74+ invalid_overridden_cells = overridden_cells .intersection (
75+ source_model ._invalid_cells )
6476 for row_invalid , col_invalid in invalid_overridden_cells :
65- model .discard_invalid_cell (row_invalid , col_invalid )
77+ source_model .discard_invalid_cell (row_invalid , col_invalid )
6678
67- model .setDataFromText (
68- text , start_index .row (),
69- start_index .column ()
70- )
79+ # Paste the data into the source model
80+ source_model .setDataFromText (text , row_start , col_start )
7181
7282
7383class ComboBoxDelegate (QStyledItemDelegate ):
0 commit comments