cui/source/options/optinet2.cxx            |    1 
 cui/source/options/securityoptions.cxx     |    4 +++
 cui/source/options/securityoptions.hxx     |    3 ++
 cui/uiconfig/ui/securityoptionsdialog.ui   |   34 ++++++++++++++++++++++++++++-
 include/unotools/securityoptions.hxx       |    3 +-
 unotools/source/config/securityoptions.cxx |   12 ++++++++++
 6 files changed, 55 insertions(+), 2 deletions(-)

New commits:
commit a2ccc25ccb2e94f5990d6d413541dbcdd3a72338
Author:     Sarper Akdemir <sarper.akdemir.ext...@allotropia.de>
AuthorDate: Tue Jan 9 02:29:42 2024 +0300
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Tue Jan 9 02:21:02 2024 +0100

    tdf#158375: add UI option to disable active content
    
    Adds a checkbox to disable active contents and OLE Automation at
    Options - LibreOffice - Security - Security Options and Warnings
    
    Change-Id: Idfac86e31c97f186eb6b6b2a7a7236b84aedbe83
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161808
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>

diff --git a/cui/source/options/optinet2.cxx b/cui/source/options/optinet2.cxx
index 083c3e40f784..de34b031e8ce 100644
--- a/cui/source/options/optinet2.cxx
+++ b/cui/source/options/optinet2.cxx
@@ -906,6 +906,7 @@ bool SvxSecurityTabPage::FillItemSet( SfxItemSet* )
         CheckAndSave( SvtSecurityOptions::EOption::DocWarnRecommendPassword, 
m_xSecOptDlg->IsRecommPasswdChecked(), bModified );
         CheckAndSave( SvtSecurityOptions::EOption::CtrlClickHyperlink, 
m_xSecOptDlg->IsCtrlHyperlinkChecked(), bModified );
         CheckAndSave( SvtSecurityOptions::EOption::BlockUntrustedRefererLinks, 
m_xSecOptDlg->IsBlockUntrustedRefererLinksChecked(), bModified );
+        CheckAndSave( SvtSecurityOptions::EOption::DisableActiveContent, 
m_xSecOptDlg->IsDisableActiveContentChecked(), bModified );
     }
 
     std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
diff --git a/cui/source/options/securityoptions.cxx 
b/cui/source/options/securityoptions.cxx
index d583f626183e..8f970331d9a3 100644
--- a/cui/source/options/securityoptions.cxx
+++ b/cui/source/options/securityoptions.cxx
@@ -54,6 +54,8 @@ SecurityOptionsDialog::SecurityOptionsDialog(weld::Window* 
pParent)
     , m_xCtrlHyperlinkImg(m_xBuilder->weld_widget("lockctrlclick"))
     , 
m_xBlockUntrustedRefererLinksCB(m_xBuilder->weld_check_button("blockuntrusted"))
     , 
m_xBlockUntrustedRefererLinksImg(m_xBuilder->weld_widget("lockblockuntrusted"))
+    , 
m_xDisableActiveContentCB(m_xBuilder->weld_check_button("disableactivecontent"))
+    , 
m_xDisableActiveContentImg(m_xBuilder->weld_widget("lockdisableactivecontent"))
     , m_xRedlineinfoCB(m_xBuilder->weld_check_button("redlineinfo"))
     , m_xRedlineinfoImg(m_xBuilder->weld_widget("lockredlineinfo"))
     , m_xDocPropertiesCB(m_xBuilder->weld_check_button("docproperties"))
@@ -98,6 +100,8 @@ void SecurityOptionsDialog::init()
         *m_xCtrlHyperlinkImg);
     enableAndSet(SvtSecurityOptions::EOption::BlockUntrustedRefererLinks, 
*m_xBlockUntrustedRefererLinksCB,
         *m_xBlockUntrustedRefererLinksImg);
+    enableAndSet(SvtSecurityOptions::EOption::DisableActiveContent,
+                 *m_xDisableActiveContentCB, *m_xDisableActiveContentImg);
 
     if 
(!SvtSecurityOptions::IsReadOnly(SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo))
         changeKeepSecurityInfosEnabled();
diff --git a/cui/source/options/securityoptions.hxx 
b/cui/source/options/securityoptions.hxx
index 7884ccfbd30e..10534d4426a7 100644
--- a/cui/source/options/securityoptions.hxx
+++ b/cui/source/options/securityoptions.hxx
@@ -42,6 +42,8 @@ namespace svx
         std::unique_ptr<weld::Widget> m_xCtrlHyperlinkImg;
         std::unique_ptr<weld::CheckButton> m_xBlockUntrustedRefererLinksCB;
         std::unique_ptr<weld::Widget> m_xBlockUntrustedRefererLinksImg;
+        std::unique_ptr<weld::CheckButton> m_xDisableActiveContentCB;
+        std::unique_ptr<weld::Widget> m_xDisableActiveContentImg;
 
         std::unique_ptr<weld::CheckButton> m_xRedlineinfoCB;
         std::unique_ptr<weld::Widget> m_xRedlineinfoImg;
@@ -69,6 +71,7 @@ namespace svx
         bool IsRecommPasswdChecked() const { return 
m_xRecommPasswdCB->get_active(); }
         bool IsCtrlHyperlinkChecked() const { return 
m_xCtrlHyperlinkCB->get_active(); }
         bool IsBlockUntrustedRefererLinksChecked() const { return 
m_xBlockUntrustedRefererLinksCB->get_active(); }
+        bool IsDisableActiveContentChecked() const { return 
m_xDisableActiveContentCB->get_active(); }
 
         DECL_LINK(ShowPersonalInfosToggle, weld::Toggleable&, void);
 
diff --git a/cui/uiconfig/ui/securityoptionsdialog.ui 
b/cui/uiconfig/ui/securityoptionsdialog.ui
index 17f253fd2365..309b964915e8 100644
--- a/cui/uiconfig/ui/securityoptionsdialog.ui
+++ b/cui/uiconfig/ui/securityoptionsdialog.ui
@@ -275,7 +275,7 @@
                 <property name="label-xalign">0</property>
                 <property name="shadow-type">none</property>
                 <child>
-                  <!-- n-columns=2 n-rows=8 -->
+                  <!-- n-columns=2 n-rows=9 -->
                   <object class="GtkGrid" id="grid3">
                     <property name="visible">True</property>
                     <property name="can-focus">False</property>
@@ -532,6 +532,38 @@
                         <property name="top-attach">4</property>
                       </packing>
                     </child>
+                    <child>
+                      <object class="GtkImage" id="lockdisableactivecontent">
+                        <property name="can-focus">False</property>
+                        <property name="halign">center</property>
+                        <property name="valign">center</property>
+                        <property name="icon-name">res/lock.png</property>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">8</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="disableactivecontent">
+                        <property name="label" translatable="yes" 
context="securityoptionsdialog|blockuntrusted">Disable active contents for OLE 
Objects, DDE and OLE Automation.</property>
+                        <property name="visible">True</property>
+                        <property name="can-focus">True</property>
+                        <property name="receives-default">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="use-underline">True</property>
+                        <property name="draw-indicator">True</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" 
id="disableactivecontent-atkobject">
+                            <property name="AtkObject::accessible-description" 
translatable="yes" context="extended_tip|blockuntrusted">Blocks active state of 
OLE Objects, disables active DDE content links, and OLE Automation 
interface.</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left-attach">1</property>
+                        <property name="top-attach">8</property>
+                      </packing>
+                    </child>
                   </object>
                 </child>
                 <child type="label">
diff --git a/include/unotools/securityoptions.hxx 
b/include/unotools/securityoptions.hxx
index 53f16de50e69..650056eb2f33 100644
--- a/include/unotools/securityoptions.hxx
+++ b/include/unotools/securityoptions.hxx
@@ -49,7 +49,8 @@ namespace SvtSecurityOptions
         MacroSecLevel,
         MacroTrustedAuthors,
         CtrlClickHyperlink,
-        BlockUntrustedRefererLinks
+        BlockUntrustedRefererLinks,
+        DisableActiveContent
     };
 
     struct Certificate
diff --git a/unotools/source/config/securityoptions.cxx 
b/unotools/source/config/securityoptions.cxx
index 5c1c3dbe0a56..f75a21ad6c82 100644
--- a/unotools/source/config/securityoptions.cxx
+++ b/unotools/source/config/securityoptions.cxx
@@ -100,6 +100,10 @@ bool IsReadOnly( EOption eOption )
         case SvtSecurityOptions::EOption::BlockUntrustedRefererLinks:
             bReadonly = 
officecfg::Office::Common::Security::Scripting::BlockUntrustedRefererLinks::isReadOnly();
             break;
+        case SvtSecurityOptions::EOption::DisableActiveContent:
+            bReadonly = 
officecfg::Office::Common::Security::Scripting::DisableActiveContent::isReadOnly()
 ||
+                        
officecfg::Office::Common::Security::Scripting::DisableOLEAutomation::isReadOnly();
+            break;
 
         default:
             assert(false);
@@ -334,6 +338,10 @@ bool IsOptionSet( EOption eOption )
         case SvtSecurityOptions::EOption::BlockUntrustedRefererLinks:
             bSet = 
officecfg::Office::Common::Security::Scripting::BlockUntrustedRefererLinks::get();
             break;
+        case SvtSecurityOptions::EOption::DisableActiveContent:
+            bSet = 
officecfg::Office::Common::Security::Scripting::DisableActiveContent::get() &&
+                   
officecfg::Office::Common::Security::Scripting::DisableOLEAutomation::get();
+            break;
 
         default:
             assert(false);
@@ -383,6 +391,10 @@ void SetOption( EOption eOption, bool bValue )
         case SvtSecurityOptions::EOption::BlockUntrustedRefererLinks:
              
officecfg::Office::Common::Security::Scripting::BlockUntrustedRefererLinks::set(bValue,
 xChanges);
             break;
+        case SvtSecurityOptions::EOption::DisableActiveContent:
+            
officecfg::Office::Common::Security::Scripting::DisableActiveContent::set(bValue,
 xChanges);
+            
officecfg::Office::Common::Security::Scripting::DisableOLEAutomation::set(bValue,
 xChanges);
+            break;
 
         default:
             assert(false);

Reply via email to