diff --git a/client/components/Reader/TextPage/TextPage.vue b/client/components/Reader/TextPage/TextPage.vue
index ba497e3d..58377b54 100644
--- a/client/components/Reader/TextPage/TextPage.vue
+++ b/client/components/Reader/TextPage/TextPage.vue
@@ -6,29 +6,32 @@
-
- {
+ for (let j = i; j < decodedLines.length; j++) {
+ const decoded = decodedLines[j];
+ if (decoded.text.indexOf(line) >= 0) {
+ i = j;
+ return decoded;
+ }
+ }
+ return;
+ }
+
+ const selection = document.getSelection();
+ const splitted = selection.toString().split(/[\n\r]/);
+
+ let filtered = '';
+ //формируем filtered, учитывая переносы из decodedLines
+ for (const line of splitted) {
+ const found = findDecoded(line);
+ if (found && found.first) {
+ filtered += (filtered ? '\n' : '') + line;
+ } else {
+ filtered += (filtered ? '\r ' : '') + line;
+ }
+ }
+
+ //маленькие хитрости, убираем переносы по слогам
+ filtered = filtered.replace(/-\r /g, '').replace(/\r /g, ' ');
+
+ event.clipboardData.setData('text/plain', filtered);
+ }
}
export default vueComponent(TextPage);
diff --git a/client/store/modules/reader.js b/client/store/modules/reader.js
index 1bba8a9b..e89c154b 100644
--- a/client/store/modules/reader.js
+++ b/client/store/modules/reader.js
@@ -70,7 +70,7 @@ const hotKeys = [
{name: 'scrolling', codes: ['Z']},
{name: 'setPosition', codes: ['P']},
{name: 'search', codes: ['Ctrl+F']},
- {name: 'copyText', codes: ['Ctrl+C']},
+ {name: 'copyText', codes: ['Ctrl+Space']},
{name: 'convOptions', codes: ['Ctrl+M']},
{name: 'refresh', codes: ['R']},
{name: 'contents', codes: ['C']},