Edit book: Fix a regression in the previous release that caused Text search to sometimes not select matches correctly. Fixes #2034900 [Editor - Report: UnboundLocalError: local variable 'raw' referenced before assignment](https://bugs.launchpad.net/calibre/+bug/2034900)

This commit is contained in:
Kovid Goyal 2023-09-27 20:19:35 +05:30
parent ff3af3ac15
commit 8c3ff7e7aa
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 4 additions and 3 deletions

View File

@ -503,20 +503,20 @@ class TextEdit(PlainTextEdit):
if wrap and not complete:
pos = QTextCursor.MoveOperation.End if reverse else QTextCursor.MoveOperation.Start
c.movePosition(pos, QTextCursor.MoveMode.KeepAnchor)
raw = str(c.selectedText()).replace(PARAGRAPH_SEPARATOR, '\n').rstrip('\0')
if hasattr(self.smarts, 'find_text'):
self.highlighter.join()
found, start, end = self.smarts.find_text(pat, c, reverse)
if not found:
return False
else:
raw = str(c.selectedText()).replace(PARAGRAPH_SEPARATOR, '\n').rstrip('\0')
m = pat.search(raw)
if m is None:
return False
start, end = m.span()
if start == end:
return False
end = start + utf16_length(raw[start:end])
end = start + utf16_length(raw[start:end])
if reverse:
start, end = end, start
c.clearSelection()

View File

@ -17,6 +17,7 @@ from calibre.gui2.tweak_book.search import (
from calibre.gui2.widgets import BusyCursor
from calibre.gui2.widgets2 import HistoryComboBox
from calibre.startup import connect_lambda
from calibre.utils.icu import utf16_length
from polyglot.builtins import error_message, iteritems
# UI {{{
@ -219,7 +220,7 @@ def find_text_in_chunks(pat, chunks):
start_pos = chunk_start + (start - offset)
if start_pos is not None:
if contains(clen, after-1):
end_pos = chunk_start + (after - offset)
end_pos = chunk_start + utf16_length(chunk[:after-offset])
return start_pos, end_pos
offset += clen
if offset > after: