Hi all,

A newly-reported fdo#40341
https://bugs.freedesktop.org/show_bug.cgi?id=40341
looks like a simple SEGV with a null pointer, which can be fixed by
the attached patch.
It also contains code hiding a checkbox for "Math baseline alignment"
in "Formatting Aids" if its current value is unavailable, like in
this case of 'Page Preview' mode.
Is it permissible? Any better way?

Cheers,
-- Takeshi Abe
>From fcf6d59e11404d270246ff0efecef0340e9ef67b Mon Sep 17 00:00:00 2001
From: Takeshi Abe <[email protected]>
Date: Wed, 24 Aug 2011 18:41:01 +0900
Subject: [PATCH] fdo#40341: hide 'math baseline alignment' unless available

---
 sw/source/ui/config/optpage.cxx |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx
index f44c8db..331863f 100644
--- a/sw/source/ui/config/optpage.cxx
+++ b/sw/source/ui/config/optpage.cxx
@@ -1456,9 +1456,11 @@ sal_Bool SwShdwCrsrOptionsTabPage::FillItemSet( SfxItemSet& rSet )
         bRet = sal_True;
     }
 
-    m_pWrtShell->GetDoc()->set( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT,
-            m_aMathBaselineAlignmentCB.IsChecked() );
-    bRet |= m_aMathBaselineAlignmentCB.IsChecked() != m_aMathBaselineAlignmentCB.GetSavedValue();
+    if (m_pWrtShell) {
+        m_pWrtShell->GetDoc()->set( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT,
+                                    m_aMathBaselineAlignmentCB.IsChecked() );
+        bRet |= m_aMathBaselineAlignmentCB.IsChecked() != m_aMathBaselineAlignmentCB.GetSavedValue();
+    }
 
     if( aCrsrInProtCB.IsChecked() != aCrsrInProtCB.GetSavedValue())
     {
@@ -1505,8 +1507,12 @@ void SwShdwCrsrOptionsTabPage::Reset( const SfxItemSet& rSet )
     aFillTabRB.Check( FILL_TAB == eMode );
     aFillSpaceRB.Check( FILL_SPACE == eMode );
 
-    m_aMathBaselineAlignmentCB.Check( m_pWrtShell->GetDoc()->get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT ) );
-    m_aMathBaselineAlignmentCB.SaveValue();
+    if (m_pWrtShell) {
+        m_aMathBaselineAlignmentCB.Check( m_pWrtShell->GetDoc()->get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT ) );
+        m_aMathBaselineAlignmentCB.SaveValue();
+    } else {
+        m_aMathBaselineAlignmentCB.Hide();
+    }
 
     if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_CRSR_IN_PROTECTED, sal_False, &pItem ))
         aCrsrInProtCB.Check(((const SfxBoolItem*)pItem)->GetValue());
-- 
1.7.6

_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to