This commit is contained in:
Jonathan Jenne
2023-04-13 16:47:52 +02:00
parent e873113d8a
commit 4c783fbbcb
9 changed files with 110 additions and 54 deletions

View File

@@ -35,15 +35,23 @@ Public Class Search
' Reset previous highlights, then search for the new query
_Viewer.RemoveAllRegions()
_Viewer.SearchText(_CurrentQuery, 0, CaseSensitive, WholeWords)
DoSearchText()
' Select the next occurrence
NextHighlight()
End Sub
Public Sub NextHighlight()
' This also applies when the page has *NO* occurrences, so 0 = 0
If _CurrentOccurrenceCount = _CurrentSelectedOccurrence Then
' If there are no occurrences on the current page, got to the *next page*
While _CurrentOccurrenceCount = _CurrentSelectedOccurrence And _CurrentPage < _Viewer.PageCount
_Viewer.DisplayNextPage()
While _CurrentOccurrenceCount = _CurrentSelectedOccurrence And _CurrentPage <= _Viewer.PageCount
If _CurrentPage = _Viewer.PageCount Then
_Viewer.DisplayFirstPage()
Else
_Viewer.DisplayNextPage()
End If
End While
' Safeguard against selecting a non-existing occurrence on the last page
@@ -61,8 +69,13 @@ Public Class Search
Public Sub PrevHighlight()
If _CurrentOccurrenceCount = 0 Or _CurrentSelectedOccurrence = 1 Then
While (_CurrentOccurrenceCount = 0 Or _CurrentSelectedOccurrence = 1) And _CurrentPage > 1
_Viewer.DisplayPreviousPage()
While (_CurrentOccurrenceCount = 0 Or _CurrentSelectedOccurrence = 1) And _CurrentPage >= 1
If _CurrentPage = 1 Then
_Viewer.DisplayLastPage()
Else
_Viewer.DisplayPreviousPage()
End If
End While
If _CurrentOccurrenceCount > 0 Then
@@ -73,26 +86,6 @@ Public Class Search
' Otherwise just select the previous occurrence
SelectHighlight(_CurrentSelectedOccurrence - 1)
End If
'' If no occurrence found on the current page,
'' skip to the *previous* page to look there
'If _CurrentOccurrenceCount = 0 Then
' While _CurrentOccurrenceCount = 0 And _CurrentPage > 1
' _Viewer.DisplayPreviousPage()
' End While
'ElseIf _CurrentSelectedOccurrence = 1 Then
' ' Need to switch to the previous *page*
' ' and highlight the last occurrence there
' If _CurrentPage > 1 Then
' _Viewer.DisplayPreviousPage()
' SelectHighlight(_CurrentOccurrenceCount)
' End If
'Else
' ' Otherwise just select the previous occurrence
' SelectHighlight(_CurrentSelectedOccurrence - 1)
'End If
End Sub
Private Sub SelectHighlight(pOccurrence As Integer)
@@ -112,11 +105,15 @@ Public Class Search
_CurrentPage = _Viewer.CurrentPage
If _CurrentQuery.Length > 0 Then
_Viewer.SearchText(_CurrentQuery, 0, CaseSensitive, WholeWords)
_CurrentOccurrenceCount = _Viewer.GetTextOccurrenceCount(_CurrentPage, _CurrentQuery, CaseSensitive, WholeWords)
_CurrentSelectedOccurrence = 0
DoSearchText()
End If
End If
End Sub
Private Sub DoSearchText()
_Viewer.SearchText(_CurrentQuery, 0, CaseSensitive, WholeWords)
_CurrentOccurrenceCount = _Viewer.GetTextOccurrenceCount(_CurrentPage, _CurrentQuery, CaseSensitive, WholeWords)
_CurrentSelectedOccurrence = 0
End Sub
End Class