From 1208029c66239b5e9e5356f9643172941e7cfce9 Mon Sep 17 00:00:00 2001 From: VALLONGOL Date: Tue, 23 Dec 2025 14:55:53 +0100 Subject: [PATCH] sistemata funzione copy all and refresh, aggiunta icona --- CodeBridge.ico | Bin 0 -> 14935 bytes codebridge/gui/diff_viewer.py | 10 ++++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CodeBridge.ico b/CodeBridge.ico index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3923236a1ffb449ae21bf91335a31ac1da5da12f 100644 GIT binary patch literal 14935 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 literal 0 HcmV?d00001 diff --git a/codebridge/gui/diff_viewer.py b/codebridge/gui/diff_viewer.py index d3db25e..b6b244c 100644 --- a/codebridge/gui/diff_viewer.py +++ b/codebridge/gui/diff_viewer.py @@ -554,9 +554,15 @@ class DiffViewer(tk.Toplevel): dst_text = self.left_text if dst == 'left' else self.right_text if not messagebox.askyesno('Confirm copy all', f'Copy entire content from {src} to {dst}?', parent=self): return - content = src_text.get('1.0', 'end') + # use end-1c to avoid the Text widget's extra trailing newline + content = src_text.get('1.0', 'end-1c') dst_text.delete('1.0', 'end') - dst_text.insert('1.0', content) + # if content is empty, ensure destination becomes empty (no extra newline) + if content: + dst_text.insert('1.0', content) + else: + # keep widget empty + pass self._mark_dirty(dst) self._refresh_diff()