sw/source/uibase/app/docst.cxx    |    6 ++++++
 sw/source/uibase/inc/uitool.hxx   |    6 ++++--
 sw/source/uibase/utlui/uitool.cxx |   11 +++++++++--
 3 files changed, 19 insertions(+), 4 deletions(-)

New commits:
commit 04df1e271b64109631c6746f2e735dfc4f5b7d3a
Author:     Justin Luth <justin.l...@collabora.com>
AuthorDate: Sat Nov 21 19:43:16 2020 +0300
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Thu Nov 26 09:08:55 2020 +0100

    tdf#131920 sw UI Char highlight: editing via Para-style highlight tab
    
    Modify character highlight using paragraph style dialog's
    new "Highlight" tab.
    
    Extends 5.0 commit 15931deb7e4689cd885ff05439bab381f0478b2f
    to also work in the para-style dialog.
    
    Prior to 4.4, the background tab supported char background
    but that was lost when the area tab replaced it,
    and therefore there was no capability at the time of 5.0.
    This highlight tab didn't exist until 5.1:
    author  Zolnai Tamás on 2015-06-16 22:25:38 +0200
    commit  9874db206eed84616e4e232b1b56c7b7532166a0
    tdf#90072: No character background (highlight) tab in paragraph styles 
dialog
    Background Tab was replaced with Area Tab on Paragraph Style
    Dialog. With that we lost the opportunity to set character background
    color. So bring back the Background tab as Highlighting.
    
    Change-Id: I916a91ea4f2ce77a8c501ecea5fd25811c5c3cd4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106323
    Tested-by: Jenkins
    Reviewed-by: Justin Luth <justin_l...@sil.org>
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/sw/source/uibase/app/docst.cxx b/sw/source/uibase/app/docst.cxx
index b19c7df81ddd..f61a05d4dc10 100644
--- a/sw/source/uibase/app/docst.cxx
+++ b/sw/source/uibase/app/docst.cxx
@@ -576,6 +576,7 @@ IMPL_LINK_NOARG(ApplyStyle, ApplyHdl, LinkParamNone*, void)
     if( SfxStyleFamily::Para == m_nFamily )
     {
         SfxItemSet aSet( *m_pDlg->GetOutputItemSet() );
+        ::ConvertAttrGenToChar(aSet, m_xTmp->GetItemSet(), /*bIsPara=*/true);
         ::SfxToSwPageDescAttr( *pWrtShell, aSet  );
         // reset indent attributes at paragraph style, if a list style
         // will be applied and no indent attributes will be applied.
@@ -849,6 +850,8 @@ void SwDocShell::Edit(
         ::SwToSfxPageDescAttr( rSet );
         // merge list level indent attributes into the item set if needed
         xTmp->MergeIndentAttrsOfListStyle( rSet );
+
+        ::ConvertAttrCharToGen(xTmp->GetItemSet(), /*bIsPara=*/true);
     }
     else if( SfxStyleFamily::Char == nFamily )
     {
@@ -1006,7 +1009,10 @@ void SwDocShell::Edit(
         GetWrtShell()->StartAllAction();
 
         if( SfxStyleFamily::Para == nFamily )
+        {
             ::SfxToSwPageDescAttr( *GetWrtShell(), xTmp->GetItemSet() );
+            ::ConvertAttrGenToChar(xTmp->GetItemSet(), xTmp->GetItemSet(), 
/*bIsPara=*/true);
+        }
         else
         {
             ::ConvertAttrGenToChar(xTmp->GetItemSet(), xTmp->GetItemSet());
diff --git a/sw/source/uibase/inc/uitool.hxx b/sw/source/uibase/inc/uitool.hxx
index ac782d806d28..ba8bf7093d54 100644
--- a/sw/source/uibase/inc/uitool.hxx
+++ b/sw/source/uibase/inc/uitool.hxx
@@ -44,8 +44,9 @@ SW_DLLPUBLIC void PrepareBoxInfo(SfxItemSet& rSet, const 
SwWrtShell& rSh);
  * Convert character specific attributes to general ones used by tab pages.
  *
  * @param[in,out]   rSet    the set in which character attributes are stored
+ * @param[in]       bIsPara is called by a paragraph style
 **/
-SW_DLLPUBLIC void ConvertAttrCharToGen(SfxItemSet& rSet);
+SW_DLLPUBLIC void ConvertAttrCharToGen(SfxItemSet& rSet, bool bPara = false);
 
 /**
  * Convert general attributes to the corresponding character attributes.
@@ -53,8 +54,9 @@ SW_DLLPUBLIC void ConvertAttrCharToGen(SfxItemSet& rSet);
  *
  * @param[in,out]   rSet    the set in which character attributes are stored
  * @param[in]       rOrigSet    original itemset used as input for the dialog
+ * @param[in]       bIsPara is called by a paragraph style
 **/
-SW_DLLPUBLIC void ConvertAttrGenToChar(SfxItemSet& rSet, const SfxItemSet& 
rOrigSet);
+SW_DLLPUBLIC void ConvertAttrGenToChar(SfxItemSet& rSet, const SfxItemSet& 
rOrigSet, bool bPara = false);
 
 
 /**
diff --git a/sw/source/uibase/utlui/uitool.cxx 
b/sw/source/uibase/utlui/uitool.cxx
index f8871b8f3c28..c55acb7241f0 100644
--- a/sw/source/uibase/utlui/uitool.cxx
+++ b/sw/source/uibase/utlui/uitool.cxx
@@ -101,7 +101,7 @@ void PrepareBoxInfo(SfxItemSet& rSet, const SwWrtShell& rSh)
     rSet.Put(*aBoxInfo);
 }
 
-void ConvertAttrCharToGen(SfxItemSet& rSet)
+void ConvertAttrCharToGen(SfxItemSet& rSet, bool bIsPara)
 {
     // Background / highlight
     {
@@ -118,6 +118,9 @@ void ConvertAttrCharToGen(SfxItemSet& rSet)
         }
     }
 
+    if ( bIsPara )
+        return;
+
     // Tell dialogs to use character-specific slots/whichIds
     // tdf#126684: We use RES_PARATR_GRABBAG, because RES_CHRATR_GRABBAG may 
be overwritten later in
     // SwDocStyleSheet::GetItemSet when applying attributes from char format
@@ -135,7 +138,7 @@ void ConvertAttrCharToGen(SfxItemSet& rSet)
     rSet.Put(aGrabBag);
 }
 
-void ConvertAttrGenToChar(SfxItemSet& rSet, const SfxItemSet& rOrigSet)
+void ConvertAttrGenToChar(SfxItemSet& rSet, const SfxItemSet& rOrigSet, bool 
bIsPara)
 {
     // Background / highlighting
     const SfxPoolItem *pTmpItem;
@@ -158,6 +161,10 @@ void ConvertAttrGenToChar(SfxItemSet& rSet, const 
SfxItemSet& rOrigSet)
             rSet.Put( aGrabBag );
         }
     }
+
+    if ( bIsPara )
+        return;
+
     rSet.ClearItem( RES_BACKGROUND );
 
     if (SfxItemState::SET == rOrigSet.GetItemState(RES_PARATR_GRABBAG, false, 
&pTmpItem))
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to