Title: [108086] trunk/Source/WebKit2
- Revision
- 108086
- Author
- [email protected]
- Date
- 2012-02-17 09:43:22 -0800 (Fri, 17 Feb 2012)
Log Message
[GTK] Allow printing pages in reverse order in WebKit2 for printers that don't support it
https://bugs.webkit.org/show_bug.cgi?id=78799
Reviewed by Gustavo Noronha Silva.
* UIProcess/API/gtk/WebKitPrintOperation.cpp:
(webkitPrintOperationRunDialogUnix): Enable printing in reverse
order option in print dialog.
* WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
(WebKit::PrintPagesData::PrintPagesData): Initialize sheetNumber
and lastPagePosition depending on whether printing is in reverse
order or not.
(WebKit::PrintPagesData::incrementPageSequence): Use a negative
increment step when printing in reverse order. Fix page
incrementing when printing only odd/even pages broken in previous
commit due to merge conflicts.
(WebKit::WebPrintOperationGtk::WebPrintOperationGtk): Initialize
reverse printing to false.
* WebProcess/WebPage/gtk/WebPrintOperationGtk.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (108085 => 108086)
--- trunk/Source/WebKit2/ChangeLog 2012-02-17 17:25:56 UTC (rev 108085)
+++ trunk/Source/WebKit2/ChangeLog 2012-02-17 17:43:22 UTC (rev 108086)
@@ -1,5 +1,27 @@
2012-02-17 Carlos Garcia Campos <[email protected]>
+ [GTK] Allow printing pages in reverse order in WebKit2 for printers that don't support it
+ https://bugs.webkit.org/show_bug.cgi?id=78799
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * UIProcess/API/gtk/WebKitPrintOperation.cpp:
+ (webkitPrintOperationRunDialogUnix): Enable printing in reverse
+ order option in print dialog.
+ * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
+ (WebKit::PrintPagesData::PrintPagesData): Initialize sheetNumber
+ and lastPagePosition depending on whether printing is in reverse
+ order or not.
+ (WebKit::PrintPagesData::incrementPageSequence): Use a negative
+ increment step when printing in reverse order. Fix page
+ incrementing when printing only odd/even pages broken in previous
+ commit due to merge conflicts.
+ (WebKit::WebPrintOperationGtk::WebPrintOperationGtk): Initialize
+ reverse printing to false.
+ * WebProcess/WebPage/gtk/WebPrintOperationGtk.h:
+
+2012-02-17 Carlos Garcia Campos <[email protected]>
+
[GTK] Allow printing only odd/even pages in WebKit2 for printers that don't support it
https://bugs.webkit.org/show_bug.cgi?id=78793
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp (108085 => 108086)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp 2012-02-17 17:25:56 UTC (rev 108085)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp 2012-02-17 17:43:22 UTC (rev 108086)
@@ -202,7 +202,8 @@
GtkPrintUnixDialog* printDialog = GTK_PRINT_UNIX_DIALOG(gtk_print_unix_dialog_new(0, parent));
gtk_print_unix_dialog_set_manual_capabilities(printDialog, static_cast<GtkPrintCapabilities>(GTK_PRINT_CAPABILITY_NUMBER_UP
| GTK_PRINT_CAPABILITY_NUMBER_UP_LAYOUT
- | GTK_PRINT_CAPABILITY_PAGE_SET));
+ | GTK_PRINT_CAPABILITY_PAGE_SET
+ | GTK_PRINT_CAPABILITY_REVERSE));
WebKitPrintOperationPrivate* priv = printOperation->priv;
if (priv->printSettings)
Modified: trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp (108085 => 108086)
--- trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp 2012-02-17 17:25:56 UTC (rev 108085)
+++ trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp 2012-02-17 17:43:22 UTC (rev 108086)
@@ -92,6 +92,7 @@
printOperation->m_numberUp = gtk_print_job_get_n_up(printOperation->m_printJob.get());
printOperation->m_numberUpLayout = gtk_print_job_get_n_up_layout(printOperation->m_printJob.get());
printOperation->m_pageSet = gtk_print_job_get_page_set(printOperation->m_printJob.get());
+ printOperation->m_reverse = gtk_print_job_get_reverse(printOperation->m_printJob.get());
printOperation->print(surface, 72, 72);
}
@@ -239,16 +240,30 @@
else
numberOfSheets = pages.size();
+ bool reverse = printOperation->reverse();
switch (printOperation->pageSet()) {
case GTK_PAGE_SET_ODD:
- lastPagePosition = std::min(((numberOfSheets - 1) - ((numberOfSheets - 1) % 2)) * numberUp - 1, pages.size() - 1);
+ if (reverse) {
+ lastPagePosition = std::min(numberUp - 1, pages.size() - 1);
+ sheetNumber = (numberOfSheets - 1) - (numberOfSheets - 1) % 2;
+ } else
+ lastPagePosition = std::min(((numberOfSheets - 1) - ((numberOfSheets - 1) % 2)) * numberUp - 1, pages.size() - 1);
break;
case GTK_PAGE_SET_EVEN:
- lastPagePosition = std::min(((numberOfSheets - 1) - (1 - (numberOfSheets - 1) % 2)) * numberUp - 1, pages.size() - 1);
- sheetNumber = numberOfSheets > 1 ? 1 : -1;
+ if (reverse) {
+ lastPagePosition = std::min(2 * numberUp - 1, pages.size() - 1);
+ sheetNumber = (numberOfSheets - 1) - (1 - (numberOfSheets - 1) % 2);
+ } else {
+ lastPagePosition = std::min(((numberOfSheets - 1) - (1 - (numberOfSheets - 1) % 2)) * numberUp - 1, pages.size() - 1);
+ sheetNumber = numberOfSheets > 1 ? 1 : -1;
+ }
break;
case GTK_PAGE_SET_ALL:
- lastPagePosition = pages.size() - 1;
+ if (reverse) {
+ lastPagePosition = std::min(numberUp - 1, pages.size() - 1);
+ sheetNumber = pages.size() - 1;
+ } else
+ lastPagePosition = pages.size() - 1;
break;
}
@@ -273,7 +288,9 @@
}
if (printOperation->currentPageIsLastPageOfSheet()) {
- sheetNumber++;
+ int step = printOperation->pageSet() == GTK_PAGE_SET_ALL ? 1 : 2;
+ step *= printOperation->reverse() ? -1 : 1;
+ sheetNumber += step;
pagePosition = sheetNumber * printOperation->numberUp();
} else
pagePosition++;
@@ -328,6 +345,7 @@
, m_numberUp(1)
, m_numberUpLayout(0)
, m_pageSet(GTK_PAGE_SET_ALL)
+ , m_reverse(false)
{
}
Modified: trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.h (108085 => 108086)
--- trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.h 2012-02-17 17:25:56 UTC (rev 108085)
+++ trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.h 2012-02-17 17:43:22 UTC (rev 108086)
@@ -64,6 +64,7 @@
unsigned int numberUp() const { return m_numberUp; }
unsigned int numberUpLayout() const { return m_numberUpLayout; }
unsigned int pageSet() const { return m_pageSet; }
+ bool reverse() const { return m_reverse; }
virtual void startPrint(WebCore::PrintContext*, uint64_t callbackID) = 0;
@@ -106,6 +107,7 @@
unsigned int m_numberUp;
unsigned int m_numberUpLayout;
unsigned int m_pageSet;
+ bool m_reverse;
};
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes