зеркало из https://github.com/mozilla/gecko-dev.git
Fixing bug 223111. Making the page-setup settings shrink-to-fit and scaling persist across Mozilla instances. Patch by jblanco@us.ibm.com, and modiefied by me. r=ben, sr=bienvenu, a=asa.
This commit is contained in:
Родитель
a1e64427b9
Коммит
f0b208edf2
|
@ -94,6 +94,8 @@ interface nsIPrintSettings : nsISupports
|
|||
const unsigned long kInitSaveMargins = 0x01000000;
|
||||
const unsigned long kInitSaveNativeData = 0x02000000;
|
||||
const unsigned long kInitSavePlexName = 0x04000000;
|
||||
const unsigned long kInitSaveShrinkToFit = 0x08000000;
|
||||
const unsigned long kInitSaveScaling = 0x10000000;
|
||||
const unsigned long kInitSaveAll = 0xFFFFFFFF;
|
||||
|
||||
/* Print Option Flags for Bit Field*/
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
#include "nsISimpleEnumerator.h"
|
||||
#include "nsISupportsPrimitives.h"
|
||||
#include "nsGfxCIID.h"
|
||||
#include "stdlib.h"
|
||||
|
||||
static NS_DEFINE_IID(kCPrinterEnumerator, NS_PRINTER_ENUMERATOR_CID);
|
||||
|
||||
|
@ -103,6 +104,8 @@ const char kPrintToFileName[] = "print_to_filename";
|
|||
const char kPrintPageDelay[] = "print_pagedelay";
|
||||
const char kPrintBGColors[] = "print_bgcolor";
|
||||
const char kPrintBGImages[] = "print_bgimages";
|
||||
const char kPrintShrinkToFit[] = "print_shrink_to_fit";
|
||||
const char kPrintScaling[] = "print_scaling";
|
||||
|
||||
const char kJustLeft[] = "left";
|
||||
const char kJustCenter[] = "center";
|
||||
|
@ -578,9 +581,21 @@ nsPrintOptions::ReadPrefs(nsIPrintSettings* aPS, const nsString& aPrefName, PRUi
|
|||
}
|
||||
}
|
||||
|
||||
if (aFlags & nsIPrintSettings::kInitSaveShrinkToFit) {
|
||||
if (NS_SUCCEEDED(mPrefBranch->GetBoolPref(GetPrefName(kPrintShrinkToFit, aPrefName), &b))) {
|
||||
aPS->SetShrinkToFit(b);
|
||||
DUMP_BOOL(kReadStr, kPrintShrinkToFit, b);
|
||||
}
|
||||
}
|
||||
|
||||
if (aFlags & nsIPrintSettings::kInitSaveScaling) {
|
||||
if (NS_SUCCEEDED(ReadPrefDouble(GetPrefName(kPrintScaling, aPrefName), dbl))) {
|
||||
aPS->SetScaling(dbl);
|
||||
DUMP_DBL(kReadStr, kPrintScaling, dbl);
|
||||
}
|
||||
}
|
||||
|
||||
// Not Reading In:
|
||||
// Scaling
|
||||
// ShrinkToFit
|
||||
// Number of Copies
|
||||
|
||||
return NS_OK;
|
||||
|
@ -798,9 +813,21 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsString& aPrefName, PRU
|
|||
}
|
||||
}
|
||||
|
||||
if (aFlags & nsIPrintSettings::kInitSaveShrinkToFit) {
|
||||
if (NS_SUCCEEDED(aPS->GetShrinkToFit(&b))) {
|
||||
DUMP_BOOL(kWriteStr, kPrintShrinkToFit, b);
|
||||
mPrefBranch->SetBoolPref(GetPrefName(kPrintShrinkToFit, aPrefName), b);
|
||||
}
|
||||
}
|
||||
|
||||
if (aFlags & nsIPrintSettings::kInitSaveScaling) {
|
||||
if (NS_SUCCEEDED(aPS->GetScaling(&dbl))) {
|
||||
DUMP_DBL(kWriteStr, kPrintScaling, dbl);
|
||||
WritePrefDouble(GetPrefName(kPrintScaling, aPrefName), dbl);
|
||||
}
|
||||
}
|
||||
|
||||
// Not Writing Out:
|
||||
// Scaling
|
||||
// ShrinkToFit
|
||||
// Number of Copies
|
||||
|
||||
return NS_OK;
|
||||
|
@ -1092,12 +1119,10 @@ nsresult nsPrintOptions::ReadPrefDouble(const char * aPrefId,
|
|||
double& aVal)
|
||||
{
|
||||
NS_ENSURE_STATE(mPrefBranch);
|
||||
char * str = nsnull;
|
||||
char * str;
|
||||
nsresult rv = mPrefBranch->GetCharPref(aPrefId, &str);
|
||||
if (NS_SUCCEEDED(rv) && str) {
|
||||
float f;
|
||||
PR_sscanf(str, "%f", &f);
|
||||
aVal = double(f);
|
||||
aVal = atof(str);
|
||||
nsMemory::Free(str);
|
||||
}
|
||||
return rv;
|
||||
|
@ -1248,6 +1273,7 @@ Tester::Tester()
|
|||
ps->SetPrintToFile(PR_TRUE);
|
||||
ps->SetToFileName(NS_ConvertUTF8toUCS2("File Name").get());
|
||||
ps->SetPrintPageDelay(1000);
|
||||
ps->SetShrinkToFit(PR_TRUE);
|
||||
|
||||
struct SettingsType {
|
||||
const char* mName;
|
||||
|
@ -1263,6 +1289,7 @@ Tester::Tester()
|
|||
{kPrintFooterStrRight, nsIPrintSettings::kInitSaveFooterRight},
|
||||
{kPrintBGColors, nsIPrintSettings::kInitSaveBGColors},
|
||||
{kPrintBGImages, nsIPrintSettings::kInitSaveBGImages},
|
||||
{kPrintShrinkToFit, nsIPrintSettings::kInitSaveShrinkToFit},
|
||||
{kPrintPaperSize, nsIPrintSettings::kInitSavePaperSize},
|
||||
{kPrintPaperName, nsIPrintSettings::kInitSavePaperName},
|
||||
{kPrintPlexName, nsIPrintSettings::kInitSavePlexName},
|
||||
|
|
Загрузка…
Ссылка в новой задаче