sw/inc/cmdid.h                               |    1 +
 sw/sdi/_basesh.sdi                           |    6 ++++++
 sw/sdi/swriter.sdi                           |   18 ++++++++++++++++++
 sw/source/core/access/AccessibilityCheck.cxx |    8 ++++++--
 sw/source/core/access/AccessibilityIssue.cxx |   20 +++++++++++++++++---
 sw/source/core/inc/AccessibilityIssue.hxx    |    1 +
 sw/source/uibase/shells/basesh.cxx           |    4 ++++
 7 files changed, 53 insertions(+), 5 deletions(-)

New commits:
commit 2bde3fb10964e1e7d7f561de925eb06111c78cb8
Author:     Balazs Varga <balazs.varga.ext...@allotropia.de>
AuthorDate: Tue Aug 8 18:07:11 2023 +0200
Commit:     Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de>
CommitDate: Thu Aug 17 15:07:14 2023 +0200

    tdf#156594 - A11Y - add fix button for "Avoid background images."
    
    - add fix button for "Avoid background images."
    - add .uno:PageAreaDialog command to navigate page style-->Area tab
    
    Change-Id: Ibad4e8896d05e72713189a0042c3f156a0733171
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155464
    Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de>
    Tested-by: Jenkins
    (cherry picked from commit 0ec629fe50220cb216c26c5ab93c194b9d987058)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155484
    Reviewed-by: Balazs Varga <balazs.varga.ext...@allotropia.de>

diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index 78fce16a7bd5..08f239b3d8d0 100644
--- a/sw/inc/cmdid.h
+++ b/sw/inc/cmdid.h
@@ -356,6 +356,7 @@ class SwUINumRuleItem;
 #define FN_FORMAT_FRAME_DLG         TypedWhichId<SfxStringItem>(FN_FORMAT + 
56)  /* frame */
 #define FN_FORMAT_GRAFIC_DLG        (FN_FORMAT + 58)  /* graphic */
 #define FN_FORMAT_TABLE_DLG         TypedWhichId<SfxStringItem>(FN_FORMAT + 
60)  /* table */
+#define FN_FORMAT_PAGE_AREA_DLG     (FN_FORMAT + 62)  /* area/background */
 
 #define FN_UPDATE_STYLE_BY_EXAMPLE            (FN_FORMAT + 63)  /* update 
style */
 #define FN_FORMAT_FOOTNOTE_DLG                (FN_FORMAT + 68)  /* footnote 
dialog */
diff --git a/sw/sdi/_basesh.sdi b/sw/sdi/_basesh.sdi
index b338abfe9b7e..6967020afbcc 100644
--- a/sw/sdi/_basesh.sdi
+++ b/sw/sdi/_basesh.sdi
@@ -289,6 +289,12 @@ interface BaseTextSelection
         DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
     ]
 
+    FN_FORMAT_PAGE_AREA_DLG
+    [
+        ExecMethod = ExecDlg ;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
+
     FN_CONVERT_TABLE_TO_TEXT
     [
         ExecMethod = Execute ;
diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi
index dda1dc187f55..6c45a26b7896 100644
--- a/sw/sdi/swriter.sdi
+++ b/sw/sdi/swriter.sdi
@@ -4897,6 +4897,24 @@ SfxVoidItem PageSettingDialog FN_FORMAT_PAGE_SETTING_DLG
     GroupId = SfxGroupId::Format;
 ]
 
+SfxVoidItem PageAreaDialog FN_FORMAT_PAGE_AREA_DLG
+()
+[
+    AutoUpdate = FALSE,
+    FastCall = FALSE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Asynchron;
+
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = TRUE,
+    GroupId = SfxGroupId::Format;
+]
+
 SfxVoidItem TitlePageDialog FN_FORMAT_TITLEPAGE_DLG
 ()
 [
diff --git a/sw/source/core/access/AccessibilityCheck.cxx 
b/sw/source/core/access/AccessibilityCheck.cxx
index f0d211d40069..02632d0d3ec9 100644
--- a/sw/source/core/access/AccessibilityCheck.cxx
+++ b/sw/source/core/access/AccessibilityCheck.cxx
@@ -1422,8 +1422,12 @@ public:
                 drawing::FillStyle aFillStyle = 
aFillStyleContainer.get<drawing::FillStyle>();
                 if (aFillStyle == drawing::FillStyle_BITMAP)
                 {
-                    lclAddIssue(m_rIssueCollection, 
SwResId(STR_AVOID_BACKGROUND_IMAGES),
-                                
sfx::AccessibilityIssueID::DOCUMENT_BACKGROUND);
+                    auto pIssue
+                        = lclAddIssue(m_rIssueCollection, 
SwResId(STR_AVOID_BACKGROUND_IMAGES),
+                                      
sfx::AccessibilityIssueID::DOCUMENT_BACKGROUND);
+
+                    pIssue->setDoc(*pDoc);
+                    pIssue->setIssueObject(IssueObject::DOCUMENT_BACKGROUND);
                 }
             }
         }
diff --git a/sw/source/core/access/AccessibilityIssue.cxx 
b/sw/source/core/access/AccessibilityIssue.cxx
index 577b3ed0929e..6810cc05cdfc 100644
--- a/sw/source/core/access/AccessibilityIssue.cxx
+++ b/sw/source/core/access/AccessibilityIssue.cxx
@@ -10,6 +10,9 @@
 
 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
 
+#include <comphelper/propertyvalue.hxx>
+#include <comphelper/dispatchcommand.hxx>
+
 #include <AccessibilityIssue.hxx>
 #include <AccessibilityCheckStrings.hrc>
 #include <drawdoc.hxx>
@@ -47,7 +50,8 @@ void AccessibilityIssue::setObjectID(OUString const& rID) { 
m_sObjectID = rID; }
 bool AccessibilityIssue::canGotoIssue() const
 {
     if (m_pDoc && m_eIssueObject != IssueObject::UNKNOWN
-        && m_eIssueObject != IssueObject::DOCUMENT_TITLE)
+        && m_eIssueObject != IssueObject::DOCUMENT_TITLE
+        && m_eIssueObject != IssueObject::DOCUMENT_BACKGROUND)
         return true;
     return false;
 }
@@ -144,7 +148,8 @@ bool AccessibilityIssue::canQuickFixIssue() const
 {
     return m_eIssueObject == IssueObject::GRAPHIC || m_eIssueObject == 
IssueObject::OLE
            || m_eIssueObject == IssueObject::SHAPE || m_eIssueObject == 
IssueObject::FORM
-           || m_eIssueObject == IssueObject::DOCUMENT_TITLE;
+           || m_eIssueObject == IssueObject::DOCUMENT_TITLE
+           || m_eIssueObject == IssueObject::DOCUMENT_BACKGROUND;
 }
 
 void AccessibilityIssue::quickFixIssue() const
@@ -152,7 +157,7 @@ void AccessibilityIssue::quickFixIssue() const
     if (!m_pDoc)
         return;
 
-    if (m_eIssueObject != IssueObject::UNKNOWN)
+    if (canGotoIssue())
         gotoIssue();
 
     switch (m_eIssueObject)
@@ -241,6 +246,15 @@ void AccessibilityIssue::quickFixIssue() const
             }
         }
         break;
+        case IssueObject::DOCUMENT_BACKGROUND:
+        {
+            uno::Reference<frame::XModel> 
xModel(m_pDoc->GetDocShell()->GetModel(),
+                                                 uno::UNO_QUERY_THROW);
+
+            comphelper::dispatchCommand(".uno:PageAreaDialog",
+                                        
xModel->getCurrentController()->getFrame(), {});
+        }
+        break;
         default:
             break;
     }
diff --git a/sw/source/core/inc/AccessibilityIssue.hxx 
b/sw/source/core/inc/AccessibilityIssue.hxx
index b7f42165853c..7a793fe8a60e 100644
--- a/sw/source/core/inc/AccessibilityIssue.hxx
+++ b/sw/source/core/inc/AccessibilityIssue.hxx
@@ -27,6 +27,7 @@ enum class IssueObject
     TABLE,
     TEXT,
     DOCUMENT_TITLE,
+    DOCUMENT_BACKGROUND,
     FOOTENDNOTE,
     TEXTFRAME,
 };
diff --git a/sw/source/uibase/shells/basesh.cxx 
b/sw/source/uibase/shells/basesh.cxx
index 504c9fefa89d..ea695cf8beb4 100644
--- a/sw/source/uibase/shells/basesh.cxx
+++ b/sw/source/uibase/shells/basesh.cxx
@@ -2815,6 +2815,7 @@ void SwBaseShell::ExecDlg(SfxRequest &rReq)
         case FN_FORMAT_PAGE_DLG:
         case FN_FORMAT_PAGE_COLUMN_DLG:
         case FN_FORMAT_PAGE_SETTING_DLG:
+        case FN_FORMAT_PAGE_AREA_DLG:
         {
             if( !bBackground )
             {
@@ -2833,6 +2834,9 @@ void SwBaseShell::ExecDlg(SfxRequest &rReq)
                     case FN_FORMAT_PAGE_SETTING_DLG:
                         sPageId = "page";
                         break;
+                    case FN_FORMAT_PAGE_AREA_DLG:
+                        sPageId = "area";
+                        break;
                     case FN_FORMAT_PAGE_DLG:
                         if (pItem)
                           sPageId = static_cast<const 
SfxStringItem*>(pItem)->GetValue();

Reply via email to