X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=pdf%2Fxpdf%2Fpdf-document.cc;h=b9180bd9988b1e712c4c79a445401f5777e33e3e;hb=16291d257b4e25d4d49588ae0c4f309e6fe81cd1;hp=0a70edbdf2c0bc71e2c63eac6a2c8d0e0ea75fad;hpb=53d25856dc1f8997ce4d142486e2c720fe0e2100;p=evince.git diff --git a/pdf/xpdf/pdf-document.cc b/pdf/xpdf/pdf-document.cc index 0a70edbd..b9180bd9 100644 --- a/pdf/xpdf/pdf-document.cc +++ b/pdf/xpdf/pdf-document.cc @@ -149,6 +149,8 @@ document_validate_page (PdfDocument *pdf_document) pdf_document->page_valid = TRUE; + ev_document_changed (EV_DOCUMENT (pdf_document)); + /* Update the search results available to the app since * we only provide full results on the current page */ @@ -274,8 +276,6 @@ pdf_document_set_page (EvDocument *document, pdf_document->page = page; pdf_document->page_valid = FALSE; } - - ev_document_changed (document); } static int @@ -484,8 +484,8 @@ pdf_document_search_page_changed (PdfDocumentSearch *search) &xMin, &yMin, &xMax, &yMax)) { result.page_num = pdf_document->page; - result.highlight_area.x = xMin; - result.highlight_area.y = yMin; + result.highlight_area.x = xMin + pdf_document->page_x_offset; + result.highlight_area.y = yMin + pdf_document->page_y_offset; result.highlight_area.width = xMax - xMin; result.highlight_area.height = yMax - yMin; @@ -499,8 +499,8 @@ pdf_document_search_page_changed (PdfDocumentSearch *search) result.page_num = pdf_document->page; - result.highlight_area.x = xMin; - result.highlight_area.y = yMin; + result.highlight_area.x = xMin + pdf_document->page_x_offset; + result.highlight_area.y = yMin + pdf_document->page_y_offset; result.highlight_area.width = xMax - xMin; result.highlight_area.height = yMax - yMin; @@ -1023,10 +1023,10 @@ pdf_document_get_text (EvDocument *document, GdkRectangle *rect) const char *text; int x1, y1, x2, y2; - x1 = rect->x; - y1 = rect->y; - x2 = x1 + rect->width; - y2 = y1 + rect->height; + x1 = rect->x + pdf_document->page_x_offset; + y1 = rect->y + pdf_document->page_y_offset; + x2 = x1 + rect->width + pdf_document->page_x_offset; + y2 = y1 + rect->height + pdf_document->page_y_offset; sel_text = pdf_document->out->getText (x1, y1, x2, y2); text = sel_text->getCString (); @@ -1039,11 +1039,20 @@ pdf_document_get_link (EvDocument *document, int x, int y) { PdfDocument *pdf_document = PDF_DOCUMENT (document); LinkAction *action; + double link_x, link_y; + + /* Zoom */ + link_x = x / pdf_document->scale; + link_y = y / pdf_document->scale; + + /* Offset */ + link_x -= pdf_document->page_x_offset; + link_y -= pdf_document->page_y_offset; - y = pdf_document->out->getBitmapHeight() - y; + /* Inverse y */ + link_y = pdf_document->out->getBitmapHeight() - link_y; - action = pdf_document->links->find ((double)x / pdf_document->scale, - (double)y / pdf_document->scale); + action = pdf_document->links->find (link_x, link_y); if (action) { return build_link_from_action (pdf_document, action, "");