mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 14:42:44 +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) |     if (!m_document) | ||||||
|         return; |         return; | ||||||
| 
 | 
 | ||||||
|     auto handle_error = [&]<typename T>(PDF::PDFErrorOr<T> maybe_error) { |     auto handle_error = [&](PDF::Error& error) { | ||||||
|         if (maybe_error.is_error()) { |         GUI::MessageBox::show_error(nullptr, String::formatted("Failed to render page:\n{}", error.message())); | ||||||
|             auto error = maybe_error.release_error(); |         m_document.clear(); | ||||||
|             GUI::MessageBox::show_error(nullptr, String::formatted("Error rendering page:\n{}", error.message())); |  | ||||||
|             return true; |  | ||||||
|         } |  | ||||||
|         return false; |  | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     if (m_page_view_mode == PageViewMode::Single) { |     if (m_page_view_mode == PageViewMode::Single) { | ||||||
|         auto maybe_page = get_rendered_page(m_current_page_index); |         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; |             return; | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         auto page = maybe_page.release_value(); |         auto page = maybe_page.release_value(); | ||||||
|         set_content_size(page->size()); |         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++) { |     for (size_t page_index = first_page_index; page_index <= last_page_index; page_index++) { | ||||||
|         auto maybe_page = get_rendered_page(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; |             return; | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         auto page = maybe_page.release_value(); |         auto page = maybe_page.release_value(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Julian Offenhäuser
						Julian Offenhäuser