mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 12:38:12 +00:00
PDFViewer: Invalidate document when a page fails to load
This fixes an issue where we would show an error message on every subsequent paint event, making it impossible to close or use the application further. Some more architectural work is needed if we want to invalidate the sidebar entries as well.
This commit is contained in:
parent
ef30073127
commit
e782d03f96
1 changed files with 9 additions and 9 deletions
|
@ -88,19 +88,17 @@ void PDFViewer::paint_event(GUI::PaintEvent& event)
|
|||
if (!m_document)
|
||||
return;
|
||||
|
||||
auto handle_error = [&]<typename T>(PDF::PDFErrorOr<T> maybe_error) {
|
||||
if (maybe_error.is_error()) {
|
||||
auto error = maybe_error.release_error();
|
||||
GUI::MessageBox::show_error(nullptr, String::formatted("Error rendering page:\n{}", error.message()));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
auto handle_error = [&](PDF::Error& error) {
|
||||
GUI::MessageBox::show_error(nullptr, String::formatted("Failed to render page:\n{}", error.message()));
|
||||
m_document.clear();
|
||||
};
|
||||
|
||||
if (m_page_view_mode == PageViewMode::Single) {
|
||||
auto maybe_page = get_rendered_page(m_current_page_index);
|
||||
if (handle_error(maybe_page))
|
||||
if (maybe_page.is_error()) {
|
||||
handle_error(maybe_page.error());
|
||||
return;
|
||||
}
|
||||
|
||||
auto page = maybe_page.release_value();
|
||||
set_content_size(page->size());
|
||||
|
@ -137,8 +135,10 @@ void PDFViewer::paint_event(GUI::PaintEvent& event)
|
|||
|
||||
for (size_t page_index = first_page_index; page_index <= last_page_index; page_index++) {
|
||||
auto maybe_page = get_rendered_page(page_index);
|
||||
if (handle_error(maybe_page))
|
||||
if (maybe_page.is_error()) {
|
||||
handle_error(maybe_page.error());
|
||||
return;
|
||||
}
|
||||
|
||||
auto page = maybe_page.release_value();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue