-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
sioyek: fix build with mupdf-1.23.4.
- Loading branch information
Showing
2 changed files
with
76 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
Patch taken from Alpine: https://git.alpinelinux.org/aports/tree/community/sioyek/mupdf-0.23.0.patch | ||
|
||
diff --git a/pdf_viewer/document_view.cpp b/pdf_viewer/document_view.cpp | ||
index f48d05e..0bc3855 100644 | ||
--- a/pdf_viewer/document_view.cpp | ||
+++ b/pdf_viewer/document_view.cpp | ||
@@ -1121,7 +1121,7 @@ std::vector<DocumentPos> DocumentView::find_line_definitions() { | ||
|
||
std::optional<PdfLink> pdf_link = current_document->get_link_in_page_rect(get_center_page_number(), line_rects[line_index]); | ||
if (pdf_link.has_value()) { | ||
- auto parsed_uri = parse_uri(mupdf_context, pdf_link.value().uri); | ||
+ auto parsed_uri = parse_uri(mupdf_context, current_document->doc, pdf_link.value().uri); | ||
result.push_back({ parsed_uri.page - 1, parsed_uri.x, parsed_uri.y }); | ||
return result; | ||
} | ||
diff --git a/pdf_viewer/main_widget.cpp b/pdf_viewer/main_widget.cpp | ||
index 19b568b..335a93f 100644 | ||
--- a/pdf_viewer/main_widget.cpp | ||
+++ b/pdf_viewer/main_widget.cpp | ||
@@ -170,7 +170,7 @@ void MainWidget::set_overview_position(int page, float offset) { | ||
|
||
void MainWidget::set_overview_link(PdfLink link) { | ||
|
||
- auto [page, offset_x, offset_y] = parse_uri(mupdf_context, link.uri); | ||
+ auto [page, offset_x, offset_y] = parse_uri(mupdf_context, doc()->doc, link.uri); | ||
if (page >= 1) { | ||
set_overview_position(page - 1, offset_y); | ||
} | ||
@@ -3178,7 +3178,7 @@ void MainWidget::handle_pending_text_command(std::wstring text) { | ||
open_web_url(utf8_decode(selected_link->uri)); | ||
} | ||
else{ | ||
- auto [page, offset_x, offset_y] = parse_uri(mupdf_context, selected_link->uri); | ||
+ auto [page, offset_x, offset_y] = parse_uri(mupdf_context, doc()->doc, selected_link->uri); | ||
long_jump_to_destination(page-1, offset_y); | ||
} | ||
} | ||
@@ -3863,7 +3863,7 @@ void MainWidget::handle_link_click(const PdfLink& link) { | ||
return; | ||
} | ||
|
||
- auto [page, offset_x, offset_y] = parse_uri(mupdf_context, link.uri); | ||
+ auto [page, offset_x, offset_y] = parse_uri(mupdf_context, doc()->doc, link.uri); | ||
|
||
// convert one indexed page to zero indexed page | ||
page--; | ||
diff --git a/pdf_viewer/utils.cpp b/pdf_viewer/utils.cpp | ||
index 22d4265..3150e66 100644 | ||
--- a/pdf_viewer/utils.cpp | ||
+++ b/pdf_viewer/utils.cpp | ||
@@ -116,8 +116,9 @@ bool rects_intersect(fz_rect rect1, fz_rect rect2) { | ||
return range_intersects(rect1.x0, rect1.x1, rect2.x0, rect2.x1) && range_intersects(rect1.y0, rect1.y1, rect2.y0, rect2.y1); | ||
} | ||
|
||
-ParsedUri parse_uri(fz_context* mupdf_context, std::string uri) { | ||
- fz_link_dest dest = pdf_parse_link_uri(mupdf_context, uri.c_str()); | ||
+ParsedUri parse_uri(fz_context* mupdf_context, fz_document* fz_doc, std::string uri) { | ||
+ pdf_document* doc = pdf_document_from_fz_document(mupdf_context, fz_doc); | ||
+ fz_link_dest dest = pdf_resolve_link_dest(mupdf_context, doc, uri.c_str()); | ||
return { dest.loc.page + 1, dest.x, dest.y }; | ||
} | ||
|
||
diff --git a/pdf_viewer/utils.h b/pdf_viewer/utils.h | ||
index 2a12211..643b030 100644 | ||
--- a/pdf_viewer/utils.h | ||
+++ b/pdf_viewer/utils.h | ||
@@ -55,7 +55,7 @@ void get_flat_toc(const std::vector<TocNode*>& roots, std::vector<std::wstring>& | ||
int mod(int a, int b); | ||
bool range_intersects(float range1_start, float range1_end, float range2_start, float range2_end); | ||
bool rects_intersect(fz_rect rect1, fz_rect rect2); | ||
-ParsedUri parse_uri(fz_context* mupdf_context, std::string uri); | ||
+ParsedUri parse_uri(fz_context* mupdf_context, fz_document* fz_doc, std::string uri); | ||
char get_symbol(int key, bool is_shift_pressed, const std::vector<char>&special_symbols); | ||
|
||
template<typename T> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters