Hello,

my previous patch introduced some bugs. :-)
1. If doc contains the only one page and range is empty, this page
doubles. I think, this is due to errors in StringRangeEnumerator.
2. Current page index is zero-based in code and one-based in UI. So,
I've added "+1".
From d4ed0f5f1cc5e34fdad1cfdc1a6f4e46e1e49ccc Mon Sep 17 00:00:00 2001
From: Ivan Timofeev <timofeev....@gmail.com>
Date: Tue, 4 Oct 2011 17:16:34 +0400
Subject: [PATCH] fix doubling of one page when range is empty and incorrect
 selection page

---
 sd/source/ui/view/DocumentRenderer.cxx |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/sd/source/ui/view/DocumentRenderer.cxx b/sd/source/ui/view/DocumentRenderer.cxx
index 1439b659..459d793 100644
--- a/sd/source/ui/view/DocumentRenderer.cxx
+++ b/sd/source/ui/view/DocumentRenderer.cxx
@@ -210,18 +210,29 @@ namespace {
         OUString GetPrinterSelection (sal_Int32 nPageCount, sal_Int32 nCurrentPageIndex) const
         {
             sal_Int32 nContent = static_cast<sal_Int32>(mrProperties.getIntValue( "PrintContent", 0 ));
-            OUString sValue = ::rtl::OUStringBuffer(4)
+            OUString sFullRange = ::rtl::OUStringBuffer()
                 .append(static_cast<sal_Int32>(1))
                 .append(static_cast<sal_Unicode>('-'))
                 .append(nPageCount).makeStringAndClear();
 
-            if( nContent == 1 )
-                sValue = mrProperties.getStringValue( "PageRange", sValue );
-            else if ( nContent == 2 )
-                sValue = nCurrentPageIndex < 0
-                    ? OUString() : OUString::valueOf(nCurrentPageIndex);
+            if (nContent == 0) // all pages/slides
+            {
+                return sFullRange;
+            }
+
+            if (nContent == 1) // range
+            {
+                OUString sValue = mrProperties.getStringValue("PageRange");
+                return sValue.getLength() ? sValue : sFullRange;
+            }
+
+            if (nContent == 2 && // selection
+                nCurrentPageIndex >= 0)
+            {
+                return OUString::valueOf(nCurrentPageIndex - 1);
+            }
 
-            return sValue;
+            return OUString();
         }
 
     private:
-- 
1.7.7

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to