about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--main.lua2
-rw-r--r--text_tests.lua18
2 files changed, 19 insertions, 1 deletions
diff --git a/main.lua b/main.lua
index 270e0b7..b1b0bd8 100644
--- a/main.lua
+++ b/main.lua
@@ -551,7 +551,7 @@ function App.keychord_pressed(chord)
     for _,line in ipairs(Lines) do line.y = nil end  -- just in case we scroll
     Text.keychord_pressed(chord)
   end
-  if not App.shift_down() then
+  if not App.shift_down() and chord ~= 'C-c' then
     Selection1 = {}
   end
 end
diff --git a/text_tests.lua b/text_tests.lua
index 7c0ce7d..0fbe98c 100644
--- a/text_tests.lua
+++ b/text_tests.lua
@@ -243,6 +243,24 @@ function test_edit_deletes_selection()
   check_eq(Lines[1].data, 'xbc', 'F - test_edit_deletes_selection')
 end
 
+function test_copy_does_not_reset_selection()
+  io.write('\ntest_copy_does_not_reset_selection')
+  -- display a line of text with a selection
+  App.screen.init{width=80, height=80}
+  Lines = load_array{'abc'}
+  Line_width = 75
+  Cursor1 = {line=1, pos=1}
+  Selection1 = {line=1, pos=2}
+  Screen_top1 = {line=1, pos=1}
+  Screen_bottom1 = {}
+  App.draw()
+  -- copy selection
+  App.run_after_keychord('C-c')
+  check_eq(App.clipboard, 'a', 'F - test_copy_does_not_reset_selection/clipboard')
+  -- selection is reset since shift key is not pressed
+  check(Selection1.line, 'F - test_copy_does_not_reset_selection')
+end
+
 function test_edit_wrapping_text()
   io.write('\ntest_edit_wrapping_text')
   App.screen.init{width=50, height=60}