mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
06a402acb0
This patch does the following things: (1) It removes the legacy page-range-handling function "DetermineWhetherToPrintPage()", and it now will always print every PrintedSheetFrame. (2) It activates PrintedSheetFrame's page-range handling function so that it can take over responsibility for skipping pages during print operations. (3) It adjusts the nsPrintJob code that kicks off individual asynchronous "print the next page" operations (which is now really "print the next PrintedSheetFrame). This nsPrintJob code used to have page-range-related handling interwoven into it, and that handling isn't necessary anymore now that we're handling page-skipping up front at layout time. (4) It replaces the mPageNum member-var (which tracks which page we're about to print or are currently printing) with mCurrentSheetIdx, which is now a 0-based index into the list of PrintedSheetFrame instances. (5) It removes nsPrintData:mNumPagesPrinted, which was only used for progress-bar-completion updates & which basically tracked the same information that I'm tracking in the new mCurrentSheetIdx variable. There's some additional cleanup that we should do after this lands (e.g. some s/page/sheet/ renamings) but I'm holding off on that for now, to keep this patch relatively targeted. Differential Revision: https://phabricator.services.mozilla.com/D92660
83 lines
2.6 KiB
C++
83 lines
2.6 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef nsPrintData_h___
|
|
#define nsPrintData_h___
|
|
|
|
#include "mozilla/Attributes.h"
|
|
#include "mozilla/UniquePtr.h"
|
|
|
|
// Interfaces
|
|
#include "nsDeviceContext.h"
|
|
#include "nsIPrintSettings.h"
|
|
#include "nsISupportsImpl.h"
|
|
#include "nsTArray.h"
|
|
#include "nsCOMArray.h"
|
|
|
|
class nsPrintObject;
|
|
class nsIPrintProgressParams;
|
|
class nsIWebProgressListener;
|
|
|
|
//------------------------------------------------------------------------
|
|
// nsPrintData Class
|
|
//
|
|
// mPreparingForPrint - indicates that we have started Printing but
|
|
// have not gone to the timer to start printing the pages. It gets turned
|
|
// off right before we go to the timer.
|
|
//------------------------------------------------------------------------
|
|
class nsPrintData {
|
|
public:
|
|
typedef enum { eIsPrinting, eIsPrintPreview } ePrintDataType;
|
|
|
|
explicit nsPrintData(ePrintDataType aType);
|
|
|
|
NS_INLINE_DECL_REFCOUNTING(nsPrintData)
|
|
|
|
// Listener Helper Methods
|
|
void OnEndPrinting();
|
|
void OnStartPrinting();
|
|
void DoOnProgressChange(int32_t aProgress, int32_t aMaxProgress,
|
|
bool aDoStartStop, int32_t aFlag);
|
|
|
|
void DoOnStatusChange(nsresult aStatus);
|
|
|
|
ePrintDataType mType; // the type of data this is (Printing or Print Preview)
|
|
RefPtr<nsDeviceContext> mPrintDC;
|
|
|
|
mozilla::UniquePtr<nsPrintObject> mPrintObject;
|
|
|
|
nsCOMArray<nsIWebProgressListener> mPrintProgressListeners;
|
|
nsCOMPtr<nsIPrintProgressParams> mPrintProgressParams;
|
|
|
|
// If there is a focused iframe, mSelectionRoot is set to its nsPrintObject.
|
|
// Otherwise, if there is a selection, it is set to the root nsPrintObject.
|
|
// Otherwise, it is unset.
|
|
nsPrintObject* mSelectionRoot = nullptr;
|
|
|
|
// Array of non-owning pointers to all the nsPrintObjects owned by this
|
|
// nsPrintData. This includes this->mPrintObject, as well as all of its
|
|
// mKids (and their mKids, etc.)
|
|
nsTArray<nsPrintObject*> mPrintDocList;
|
|
|
|
bool mIsParentAFrameSet;
|
|
bool mOnStartSent;
|
|
bool mIsAborted; // tells us the document is being aborted
|
|
bool mPreparingForPrint; // see comments above
|
|
bool mShrinkToFit;
|
|
int32_t mNumPrintablePages;
|
|
float mShrinkRatio;
|
|
|
|
nsCOMPtr<nsIPrintSettings> mPrintSettings;
|
|
|
|
private:
|
|
nsPrintData() = delete;
|
|
nsPrintData& operator=(const nsPrintData& aOther) = delete;
|
|
|
|
~nsPrintData(); // non-virtual
|
|
};
|
|
|
|
#endif /* nsPrintData_h___ */
|