Index: printing/page_setup.cc |
diff --git a/printing/page_setup.cc b/printing/page_setup.cc |
index b870323e04cc3c7180faaf1e798de0d251818ddb..c2a0b5a84f6fd62a28b204613bda88bdf1962392 100644 |
--- a/printing/page_setup.cc |
+++ b/printing/page_setup.cc |
@@ -19,6 +19,22 @@ PageMargins::PageMargins() |
bottom(0) { |
} |
+PageMargins::PageMargins(const PageMargins& margins, bool rotate_margins) { |
+ header = margins.header; |
+ footer = margins.footer; |
+ if (rotate_margins) { |
+ top = margins.right; |
+ left = margins.top; |
+ bottom = margins.left; |
+ right = margins.bottom; |
+ } else { |
+ top = margins.top; |
+ left = margins.left; |
+ bottom = margins.bottom; |
+ right = margins.right; |
+ } |
+} |
+ |
void PageMargins::Clear() { |
header = 0; |
footer = 0; |
@@ -37,7 +53,7 @@ bool PageMargins::Equals(const PageMargins& rhs) const { |
bottom == rhs.bottom; |
} |
-PageSetup::PageSetup() { |
+PageSetup::PageSetup() : has_forced_margins_value(false) { |
Clear(); |
} |
@@ -81,12 +97,14 @@ void PageSetup::Init(const gfx::Size& physical_size, |
void PageSetup::SetRequestedMargins(const PageMargins& requested_margins) { |
requested_margins_ = requested_margins; |
+ has_forced_margins_value = false; |
if (printable_area_.width() && printable_area_.height()) |
CalculateSizesWithinRect(printable_area_, text_height_); |
} |
void PageSetup::ForceRequestedMargins(const PageMargins& requested_margins) { |
requested_margins_ = requested_margins; |
+ has_forced_margins_value = true; |
if (physical_size_.width() && physical_size_.height()) |
CalculateSizesWithinRect(gfx::Rect(physical_size_), 0); |
} |
@@ -101,6 +119,11 @@ void PageSetup::FlipOrientation() { |
printable_area_.height(), |
printable_area_.width()); |
Init(new_size, new_printable_area, text_height_); |
+ PageMargins new_requested_margins(requested_margins_, true); |
+ if (has_forced_margins_value) |
vandebo (ex-Chrome)
2011/11/02 20:26:03
With the addition of has_forced_margins_value, I t
kmadhusu
2011/11/02 23:15:03
Done.
|
+ ForceRequestedMargins(new_requested_margins); |
+ else |
+ SetRequestedMargins(new_requested_margins); |
} |
} |