Bug 743252 - Implement moznomarginboxes attribute. r=roc

This commit is contained in:
Julian Viereck 2013-02-20 10:50:21 -05:00
parent 98326b9c16
commit f6e00a6a19
8 changed files with 88 additions and 38 deletions

View File

@ -38,6 +38,7 @@ GK_ATOM(mozallowfullscreen, "mozallowfullscreen")
GK_ATOM(moztype, "_moz-type")
GK_ATOM(mozdirty, "_moz_dirty")
GK_ATOM(mozdisallowselectionprint, "mozdisallowselectionprint")
GK_ATOM(moznomarginboxes, "moznomarginboxes")
GK_ATOM(mozdonotsend, "moz-do-not-send")
GK_ATOM(mozeditorbogusnode, "_moz_editor_bogus_node")
GK_ATOM(mozgeneratedcontentbefore, "_moz_generated_content_before")

View File

@ -3652,6 +3652,9 @@ nsDocumentViewer::Print(nsIPrintSettings* aPrintSettings,
if (root && root->HasAttr(kNameSpaceID_None, nsGkAtoms::mozdisallowselectionprint)) {
mPrintEngine->SetDisallowSelectionPrint(true);
}
if (root && root->HasAttr(kNameSpaceID_None, nsGkAtoms::moznomarginboxes)) {
mPrintEngine->SetNoMarginBoxes(true);
}
rv = mPrintEngine->Print(aPrintSettings, aWebProgressListener);
if (NS_FAILED(rv)) {
OnDonePrinting();

View File

@ -235,7 +235,8 @@ nsPrintEngine::nsPrintEngine() :
mLoadCounter(0),
mDidLoadDataForPrinting(false),
mIsDestroying(false),
mDisallowSelectionPrint(false)
mDisallowSelectionPrint(false),
mNoMarginBoxes(false)
{
}
@ -474,6 +475,21 @@ nsPrintEngine::DoCommonPrint(bool aIsPrintPreview,
mPrt->mPrintSettings->SetIsCancelled(false);
mPrt->mPrintSettings->GetShrinkToFit(&mPrt->mShrinkToFit);
// In the case the margin boxes are not printed store the print settings for
// the footer/header to be used as default print setting for follow up prints.
mPrt->mPrintSettings->SetPersistMarginBoxSettings(!mNoMarginBoxes);
if (mNoMarginBoxes) {
// Set the footer/header to blank.
const PRUnichar* emptyString = EmptyString().get();
mPrt->mPrintSettings->SetHeaderStrLeft(emptyString);
mPrt->mPrintSettings->SetHeaderStrCenter(emptyString);
mPrt->mPrintSettings->SetHeaderStrRight(emptyString);
mPrt->mPrintSettings->SetFooterStrLeft(emptyString);
mPrt->mPrintSettings->SetFooterStrCenter(emptyString);
mPrt->mPrintSettings->SetFooterStrRight(emptyString);
}
if (aIsPrintPreview) {
SetIsCreatingPrintPreview(true);
SetIsPrintPreview(true);

View File

@ -209,6 +209,10 @@ public:
mDisallowSelectionPrint = aDisallowSelectionPrint;
}
void SetNoMarginBoxes(bool aNoMarginBoxes) {
mNoMarginBoxes = aNoMarginBoxes;
}
protected:
nsresult CommonPrint(bool aIsPrintPreview, nsIPrintSettings* aPrintSettings,
@ -287,6 +291,7 @@ protected:
bool mDidLoadDataForPrinting;
bool mIsDestroying;
bool mDisallowSelectionPrint;
bool mNoMarginBoxes;
nsresult AfterNetworkPrint(bool aHandleError);

View File

@ -267,6 +267,12 @@ interface nsIPrintSettings : nsISupports
*/
attribute boolean isInitializedFromPrefs;
/**
* This attribute tracks if the settings made on the margin box is
* stored in the prefs or not.
*/
attribute boolean persistMarginBoxSettings;
/* C++ Helper Functions */
[noscript] void SetMarginInTwips(in nsNativeIntMarginRef aMargin);
[noscript] void SetEdgeInTwips(in nsNativeIntMarginRef aEdge);

View File

@ -509,6 +509,9 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName,
{
NS_ENSURE_ARG_POINTER(aPS);
bool persistMarginBoxSettings;
aPS->GetPersistMarginBoxSettings(&persistMarginBoxSettings);
nsIntMargin margin;
if (aFlags & nsIPrintSettings::kInitSaveMargins) {
if (NS_SUCCEEDED(aPS->GetMarginInTwips(margin))) {
@ -613,51 +616,53 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName,
}
}
if (aFlags & nsIPrintSettings::kInitSaveHeaderLeft) {
if (NS_SUCCEEDED(aPS->GetHeaderStrLeft(&uStr))) {
DUMP_STR(kWriteStr, kPrintHeaderStrLeft, uStr);
Preferences::SetString(GetPrefName(kPrintHeaderStrLeft, aPrinterName),
uStr);
if (persistMarginBoxSettings) {
if (aFlags & nsIPrintSettings::kInitSaveHeaderLeft) {
if (NS_SUCCEEDED(aPS->GetHeaderStrLeft(&uStr))) {
DUMP_STR(kWriteStr, kPrintHeaderStrLeft, uStr);
Preferences::SetString(GetPrefName(kPrintHeaderStrLeft, aPrinterName),
uStr);
}
}
}
if (aFlags & nsIPrintSettings::kInitSaveHeaderCenter) {
if (NS_SUCCEEDED(aPS->GetHeaderStrCenter(&uStr))) {
DUMP_STR(kWriteStr, kPrintHeaderStrCenter, uStr);
Preferences::SetString(GetPrefName(kPrintHeaderStrCenter, aPrinterName),
uStr);
if (aFlags & nsIPrintSettings::kInitSaveHeaderCenter) {
if (NS_SUCCEEDED(aPS->GetHeaderStrCenter(&uStr))) {
DUMP_STR(kWriteStr, kPrintHeaderStrCenter, uStr);
Preferences::SetString(GetPrefName(kPrintHeaderStrCenter, aPrinterName),
uStr);
}
}
}
if (aFlags & nsIPrintSettings::kInitSaveHeaderRight) {
if (NS_SUCCEEDED(aPS->GetHeaderStrRight(&uStr))) {
DUMP_STR(kWriteStr, kPrintHeaderStrRight, uStr);
Preferences::SetString(GetPrefName(kPrintHeaderStrRight, aPrinterName),
uStr);
if (aFlags & nsIPrintSettings::kInitSaveHeaderRight) {
if (NS_SUCCEEDED(aPS->GetHeaderStrRight(&uStr))) {
DUMP_STR(kWriteStr, kPrintHeaderStrRight, uStr);
Preferences::SetString(GetPrefName(kPrintHeaderStrRight, aPrinterName),
uStr);
}
}
}
if (aFlags & nsIPrintSettings::kInitSaveFooterLeft) {
if (NS_SUCCEEDED(aPS->GetFooterStrLeft(&uStr))) {
DUMP_STR(kWriteStr, kPrintFooterStrLeft, uStr);
Preferences::SetString(GetPrefName(kPrintFooterStrLeft, aPrinterName),
uStr);
if (aFlags & nsIPrintSettings::kInitSaveFooterLeft) {
if (NS_SUCCEEDED(aPS->GetFooterStrLeft(&uStr))) {
DUMP_STR(kWriteStr, kPrintFooterStrLeft, uStr);
Preferences::SetString(GetPrefName(kPrintFooterStrLeft, aPrinterName),
uStr);
}
}
}
if (aFlags & nsIPrintSettings::kInitSaveFooterCenter) {
if (NS_SUCCEEDED(aPS->GetFooterStrCenter(&uStr))) {
DUMP_STR(kWriteStr, kPrintFooterStrCenter, uStr);
Preferences::SetString(GetPrefName(kPrintFooterStrCenter, aPrinterName),
uStr);
if (aFlags & nsIPrintSettings::kInitSaveFooterCenter) {
if (NS_SUCCEEDED(aPS->GetFooterStrCenter(&uStr))) {
DUMP_STR(kWriteStr, kPrintFooterStrCenter, uStr);
Preferences::SetString(GetPrefName(kPrintFooterStrCenter, aPrinterName),
uStr);
}
}
}
if (aFlags & nsIPrintSettings::kInitSaveFooterRight) {
if (NS_SUCCEEDED(aPS->GetFooterStrRight(&uStr))) {
DUMP_STR(kWriteStr, kPrintFooterStrRight, uStr);
Preferences::SetString(GetPrefName(kPrintFooterStrRight, aPrinterName),
uStr);
if (aFlags & nsIPrintSettings::kInitSaveFooterRight) {
if (NS_SUCCEEDED(aPS->GetFooterStrRight(&uStr))) {
DUMP_STR(kWriteStr, kPrintFooterStrRight, uStr);
Preferences::SetString(GetPrefName(kPrintFooterStrRight, aPrinterName),
uStr);
}
}
}

View File

@ -45,7 +45,8 @@ nsPrintSettings::nsPrintSettings() :
mPrintToFile(false),
mOutputFormat(kOutputFormatNative),
mIsInitedFromPrinter(false),
mIsInitedFromPrefs(false)
mIsInitedFromPrefs(false),
mPersistMarginBoxSettings(true)
{
/* member initializers and constructor code */
@ -363,6 +364,19 @@ NS_IMETHODIMP nsPrintSettings::SetIsInitializedFromPrefs(bool aInitializedFromPr
return NS_OK;
}
/* attribute boolean persistMarginBoxSettings; */
NS_IMETHODIMP nsPrintSettings::GetPersistMarginBoxSettings(bool *aPersistMarginBoxSettings)
{
NS_ENSURE_ARG_POINTER(aPersistMarginBoxSettings);
*aPersistMarginBoxSettings = mPersistMarginBoxSettings;
return NS_OK;
}
NS_IMETHODIMP nsPrintSettings::SetPersistMarginBoxSettings(bool aPersistMarginBoxSettings)
{
mPersistMarginBoxSettings = aPersistMarginBoxSettings;
return NS_OK;
}
/* attribute double marginTop; */
NS_IMETHODIMP nsPrintSettings::GetMarginTop(double *aMarginTop)
{

View File

@ -101,7 +101,7 @@ protected:
int16_t mOutputFormat;
bool mIsInitedFromPrinter;
bool mIsInitedFromPrefs;
bool mPersistMarginBoxSettings;
};
#endif /* nsPrintSettings_h__ */