mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-11 10:08:41 +00:00
Bug 743252 - Implement moznomarginboxes attribute. r=roc
This commit is contained in:
parent
98326b9c16
commit
f6e00a6a19
@ -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")
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -101,7 +101,7 @@ protected:
|
||||
int16_t mOutputFormat;
|
||||
bool mIsInitedFromPrinter;
|
||||
bool mIsInitedFromPrefs;
|
||||
|
||||
bool mPersistMarginBoxSettings;
|
||||
};
|
||||
|
||||
#endif /* nsPrintSettings_h__ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user