Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(686)

Unified Diff: pdf/pdfium/pdfium_engine.cc

Issue 2252963007: PDF rotation should maintain current page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add TODO Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pdf/pdfium/pdfium_engine.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pdf/pdfium/pdfium_engine.cc
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc
index 8d958751c0d17559a7b22b6bb4621e6acd189743..3dbd11c3a7ca8709dca6fe34ac5ca611a6df85d0 100644
--- a/pdf/pdfium/pdfium_engine.cc
+++ b/pdf/pdfium/pdfium_engine.cc
@@ -857,10 +857,10 @@ void PDFiumEngine::AddSegment(FX_DOWNLOADHINTS* param,
bool PDFiumEngine::New(const char* url,
const char* headers) {
url_ = url;
- if (!headers)
- headers_.clear();
- else
+ if (headers)
headers_ = headers;
+ else
+ headers_.clear();
return true;
}
@@ -3153,9 +3153,9 @@ void PDFiumEngine::DeviceToPage(int page_index,
double* page_x,
double* page_y) {
*page_x = *page_y = 0;
- int temp_x = static_cast<int>((device_x + position_.x())/ current_zoom_ -
+ int temp_x = static_cast<int>((device_x + position_.x()) / current_zoom_ -
pages_[page_index]->rect().x());
- int temp_y = static_cast<int>((device_y + position_.y())/ current_zoom_ -
+ int temp_y = static_cast<int>((device_y + position_.y()) / current_zoom_ -
pages_[page_index]->rect().y());
FPDF_DeviceToPage(
pages_[page_index]->GetPage(), 0, 0,
@@ -3174,6 +3174,7 @@ int PDFiumEngine::GetVisiblePageIndex(FPDF_PAGE page) {
void PDFiumEngine::SetCurrentPage(int index) {
if (index == most_visible_page_ || !form_)
return;
+
if (most_visible_page_ != -1 && called_do_document_action_) {
FPDF_PAGE old_page = pages_[most_visible_page_]->GetPage();
FORM_DoPageAAction(old_page, form_, FPDFPAGE_AACTION_CLOSE);
@@ -3355,13 +3356,22 @@ void PDFiumEngine::RotateInternal() {
else
resume_find_index_.Invalidate();
+ // Save the current page.
+ int most_visible_page = most_visible_page_;
+
InvalidateAllPages();
+ // Restore find results.
if (!current_find_text.empty()) {
// Clear the UI.
client_->NotifyNumberOfFindResultsChanged(0, false);
StartFind(current_find_text, false);
}
+
+ // Restore current page. After a rotation, the page heights have changed but
+ // the scroll position has not. Re-adjust.
+ // TODO(thestig): It would be better to also restore the position on the page.
+ client_->ScrollToPage(most_visible_page);
}
void PDFiumEngine::SetSelecting(bool selecting) {
« no previous file with comments | « pdf/pdfium/pdfium_engine.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698