[Libreoffice-commits] core.git: i18nutil/source include/i18nutil vcl/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Fri Jan 22 17:16:33 UTC 2021


 i18nutil/source/utility/paper.cxx |   14 +++++++++-----
 include/i18nutil/paper.hxx        |    2 +-
 vcl/source/window/printdlg.cxx    |    6 +++---
 3 files changed, 13 insertions(+), 9 deletions(-)

New commits:
commit 651e9e7278fffa79248fb173432de0af4a622b5d
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri Jan 22 10:54:46 2021 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Jan 22 18:15:51 2021 +0100

    tdf#135590 rotated paper sizes reported as portrait size they are not
    
    since...
    
    commit ff4896a2af1df6138e9246fe1588dfe8c3748f1a
    Date:   Fri Jun 29 11:36:03 2018 -0300
    
        Sets paper sizes listbox in print dialog
    
    see as the above commit added some uses of doSloppyFit to vcl I imagine
    the calls there want to be able to match rotated paper sizes, but in
    the cases of tdf#135590 we don't want that behaviour because it doesn't
    match what the user is presented with, the width and height are swapped.
    
    So drop matching against swapped height/width by default, but let calls
    added in 'Sets paper sizes listbox in print dialog' continue to match
    rotated sizes.
    
    Change-Id: I34aeddf12a7ca22234fbc6394487d3c8da7772ca
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109784
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/i18nutil/source/utility/paper.cxx b/i18nutil/source/utility/paper.cxx
index 4e94f9b36a14..74c9fd35e9f4 100644
--- a/i18nutil/source/utility/paper.cxx
+++ b/i18nutil/source/utility/paper.cxx
@@ -164,7 +164,7 @@ const size_t nTabSize = SAL_N_ELEMENTS(aDinTab);
 
 #define MAXSLOPPY 21
 
-void PaperInfo::doSloppyFit()
+void PaperInfo::doSloppyFit(bool bAlsoTryRotated)
 {
     if (m_eType != PAPER_USER)
         return;
@@ -175,11 +175,8 @@ void PaperInfo::doSloppyFit()
 
         tools::Long lDiffW = std::abs(aDinTab[i].m_nWidth - m_nPaperWidth);
         tools::Long lDiffH = std::abs(aDinTab[i].m_nHeight - m_nPaperHeight);
-        tools::Long lFlipDiffW = std::abs(aDinTab[i].m_nHeight - m_nPaperWidth);
-        tools::Long lFlipDiffH = std::abs(aDinTab[i].m_nWidth - m_nPaperHeight);
 
-        if ( (lDiffW < MAXSLOPPY && lDiffH < MAXSLOPPY) ||
-            (lFlipDiffW < MAXSLOPPY && lFlipDiffH < MAXSLOPPY) )
+        if (lDiffW < MAXSLOPPY && lDiffH < MAXSLOPPY)
         {
             m_nPaperWidth = aDinTab[i].m_nWidth;
             m_nPaperHeight = aDinTab[i].m_nHeight;
@@ -187,6 +184,13 @@ void PaperInfo::doSloppyFit()
             return;
         }
     }
+
+    if (bAlsoTryRotated)
+    {
+        std::swap(m_nPaperWidth, m_nPaperHeight);
+        doSloppyFit();
+        std::swap(m_nPaperWidth, m_nPaperHeight);
+    }
 }
 
 bool PaperInfo::sloppyEqual(const PaperInfo &rOther) const
diff --git a/include/i18nutil/paper.hxx b/include/i18nutil/paper.hxx
index 1fc09f1f1267..7b99c0861e48 100644
--- a/include/i18nutil/paper.hxx
+++ b/include/i18nutil/paper.hxx
@@ -134,7 +134,7 @@ public:
     tools::Long getWidth() const { return m_nPaperWidth; }
     tools::Long getHeight() const { return m_nPaperHeight; }
     bool sloppyEqual(const PaperInfo& rOther) const;
-    void doSloppyFit();
+    void doSloppyFit(bool bAlsoTryRotated = false);
 
     static PaperInfo getSystemDefaultPaper();
     static PaperInfo getDefaultPaperForLocale(const css::lang::Locale& rLocale);
diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
index 45ac01862829..7e0033aa2b9a 100644
--- a/vcl/source/window/printdlg.cxx
+++ b/vcl/source/window/printdlg.cxx
@@ -822,7 +822,7 @@ void PrintDialog::setPaperSizes()
         for (int nPaper = 0; nPaper < aPrt->GetPaperInfoCount(); nPaper++)
         {
             PaperInfo aInfo = aPrt->GetPaperInfo( nPaper );
-            aInfo.doSloppyFit();
+            aInfo.doSloppyFit(true);
             Paper ePaper = aInfo.getPaper();
 
             const LocaleDataWrapper& rLocWrap(Application::GetSettings().GetLocaleDataWrapper());
@@ -1884,7 +1884,7 @@ IMPL_LINK(PrintDialog, ClickHdl, weld::Button&, rButton, void)
                 for (int nPaper = 0; nPaper < aPrt->GetPaperInfoCount(); nPaper++ )
                 {
                     PaperInfo aInfo = aPrt->GetPaperInfo( nPaper );
-                    aInfo.doSloppyFit();
+                    aInfo.doSloppyFit(true);
                     Paper ePaper = aInfo.getPaper();
 
                     if ( mePaper == ePaper )
@@ -1966,7 +1966,7 @@ IMPL_LINK( PrintDialog, SelectHdl, weld::ComboBox&, rBox, void )
     {
         VclPtr<Printer> aPrt( maPController->getPrinter() );
         PaperInfo aInfo = aPrt->GetPaperInfo( rBox.get_active() );
-        aInfo.doSloppyFit();
+        aInfo.doSloppyFit(true);
         mePaper = aInfo.getPaper();
 
         if ( mePaper == PAPER_USER )


More information about the Libreoffice-commits mailing list