From 8f7bc6d86c505955f5f36ddbca0d62e8d8d0d4e7 Mon Sep 17 00:00:00 2001 From: zbelial Date: Mon, 14 Sep 2020 11:15:17 +0800 Subject: [PATCH] double click won't trigger adding text annotation. --- app/pdf-viewer/buffer.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/pdf-viewer/buffer.py b/app/pdf-viewer/buffer.py index ad3d8e1..7bbaa9c 100755 --- a/app/pdf-viewer/buffer.py +++ b/app/pdf-viewer/buffer.py @@ -20,7 +20,7 @@ # along with this program. If not, see . from PyQt5 import QtCore -from PyQt5.QtCore import Qt, QRect, QEvent +from PyQt5.QtCore import Qt, QRect, QEvent, QTimer from PyQt5.QtGui import QColor, QPixmap, QImage, QFont, QCursor from PyQt5.QtGui import QPainter from PyQt5.QtWidgets import QWidget @@ -184,7 +184,6 @@ class AppBuffer(Buffer): self.buffer_widget.enable_free_text_annot_mode() def set_focus_text(self, new_text): - self.message_to_emacs.emit(new_text); if self.buffer_widget.is_select_mode: self.buffer_widget.annot_select_char_area("text", new_text) elif self.buffer_widget.is_hover_annot: @@ -270,6 +269,10 @@ class PdfViewerWidget(QWidget): # annot self.is_hover_annot = False + self.free_text_annot_timer = QTimer() + self.free_text_annot_timer.setInterval(300) + self.free_text_annot_timer.setSingleShot(True) + self.free_text_annot_timer.timeout.connect(self.handle_free_text_annot_mode) self.is_free_text_annot_mode = False self.free_text_annot_pos = (None, None) self.edited_page_annot = (None, None) @@ -981,8 +984,6 @@ class PdfViewerWidget(QWidget): new_annot = page.addTextAnnot(point, text, icon="Note") new_annot.parent = page - self.disable_free_text_annot_mode() - self.save_annot() def cleanup_select(self): @@ -1238,9 +1239,8 @@ class PdfViewerWidget(QWidget): # Capture move event, event without holding down the mouse. self.setMouseTracking(True) self.releaseMouse() - if self.is_free_text_annot_mode: - self.handle_free_text_annot_mode() - self.disable_free_text_annot_mode() + if not self.free_text_annot_timer.isActive(): + self.free_text_annot_timer.start() elif event.type() == QEvent.MouseButtonDblClick: self.disable_free_text_annot_mode() @@ -1259,10 +1259,12 @@ class PdfViewerWidget(QWidget): self.is_free_text_annot_mode = False def handle_free_text_annot_mode(self): - ex, ey, page_index = self.get_cursor_absolute_position() - self.free_text_annot_pos = (fitz.Point(ex, ey), page_index) + if self.is_free_text_annot_mode: + self.disable_free_text_annot_mode() + ex, ey, page_index = self.get_cursor_absolute_position() + self.free_text_annot_pos = (fitz.Point(ex, ey), page_index) - self.get_focus_text.emit(self.buffer_id, "") + self.get_focus_text.emit(self.buffer_id, "") def handle_select_mode(self): self.is_select_mode = True