diff options
author | Svetoslav <svetoslavganov@google.com> | 2014-09-30 14:57:14 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-09-30 14:57:14 +0000 |
commit | 7e7e23f50cb3d6ba1026a41b81841257901a0e92 (patch) | |
tree | 64fdb85eef72ba6a5b62c979311b8331c1eeed77 /packages/PrintSpooler | |
parent | 31677f947f824e036a99d66833caec4abceebe6e (diff) | |
parent | 1662a9b9ad82a2599fc6c54e6a51ae5d290b9172 (diff) | |
download | frameworks_base-7e7e23f50cb3d6ba1026a41b81841257901a0e92.zip frameworks_base-7e7e23f50cb3d6ba1026a41b81841257901a0e92.tar.gz frameworks_base-7e7e23f50cb3d6ba1026a41b81841257901a0e92.tar.bz2 |
am 1662a9b9: am 90f2f122: am 1fd73590: am b179bed3: Merge "Fix carsh in print spooler if custom print setings return bad pages." into lmp-dev
* commit '1662a9b9ad82a2599fc6c54e6a51ae5d290b9172':
Fix carsh in print spooler if custom print setings return bad pages.
Diffstat (limited to 'packages/PrintSpooler')
-rw-r--r-- | packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java index aa42c75..72916ea 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java @@ -724,10 +724,35 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat } } + // Handle selected page changes making sure they are in the doc. PrintDocumentInfo info = mPrintedDocument.getDocumentInfo().info; final int pageCount = (info != null) ? getAdjustedPageCount(info) : 0; PageRange[] pageRanges = printJobInfo.getPages(); - updateSelectedPages(pageRanges, pageCount); + if (pageRanges != null && pageCount > 0) { + pageRanges = PageRangeUtils.normalize(pageRanges); + + List<PageRange> validatedList = new ArrayList<>(); + final int rangeCount = pageRanges.length; + for (int i = 0; i < rangeCount; i++) { + PageRange pageRange = pageRanges[i]; + if (pageRange.getEnd() >= pageCount) { + final int rangeStart = pageRange.getStart(); + final int rangeEnd = pageCount - 1; + if (rangeStart <= rangeEnd) { + pageRange = new PageRange(rangeStart, rangeEnd); + validatedList.add(pageRange); + } + break; + } + validatedList.add(pageRange); + } + + if (!validatedList.isEmpty()) { + PageRange[] validatedArray = new PageRange[validatedList.size()]; + validatedList.toArray(validatedArray); + updateSelectedPages(validatedArray, pageCount); + } + } // Update the content if needed. if (canUpdateDocument()) { |