tdf#158243 - UI: Part 44 - Unify lockdown behavior of Options dialog
for Draw - View Page.
Change-Id: If06945482e5a441903d6eb44b66242bd8806bcd6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159995
Tested-by: Jenkins
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
diff --git a/sd/source/ui/app/sdmod2.cxx b/sd/source/ui/app/sdmod2.cxx
index cccf4251..8a6424d 100644
--- a/sd/source/ui/app/sdmod2.cxx
+++ b/sd/source/ui/app/sdmod2.cxx
@@ -736,7 +736,14 @@ std::unique_ptr<SfxTabPage> SdModule::CreateTabPage( sal_uInt16 nId, weld::Conta
{
::CreateTabPage fnCreatePage = pFact->GetSdOptionsContentsTabPageCreatorFunc();
if( fnCreatePage )
{
xRet = (*fnCreatePage)( pPage, pController, &rSet );
if (SID_SD_TP_CONTENTS == nId)
aSet.Put(SfxUInt32Item(SID_SDMODE_FLAG, SD_DRAW_MODE));
else
aSet.Put(SfxUInt32Item(SID_SDMODE_FLAG, SD_IMPRESS_MODE));
xRet->PageCreated(aSet);
}
}
break;
case SID_SD_TP_SNAP:
diff --git a/sd/source/ui/dlg/tpoption.cxx b/sd/source/ui/dlg/tpoption.cxx
index f6f5b4f..8c5416c 100644
--- a/sd/source/ui/dlg/tpoption.cxx
+++ b/sd/source/ui/dlg/tpoption.cxx
@@ -148,6 +148,7 @@ std::unique_ptr<SfxTabPage> SdTpOptionsSnap::Create( weld::Container* pPage, wel
\************************************************************************/
SdTpOptionsContents::SdTpOptionsContents(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs)
: SfxTabPage(pPage, pController, "modules/simpress/ui/sdviewpage.ui", "SdViewPage", &rInAttrs)
, m_bDrawMode(false)
, m_xCbxRuler(m_xBuilder->weld_check_button("ruler"))
, m_xCbxRulerImg(m_xBuilder->weld_widget("lockruler"))
, m_xCbxDragStripes(m_xBuilder->weld_check_button("dragstripes"))
@@ -216,19 +217,23 @@ void SdTpOptionsContents::Reset( const SfxItemSet* rAttrs )
m_xCbxDragStripes->set_active( aLayoutItem.GetOptionsLayout().IsDragStripes() );
m_xCbxHandlesBezier->set_active( aLayoutItem.GetOptionsLayout().IsHandlesBezier() );
bool bReadOnly = officecfg::Office::Impress::Layout::Display::Ruler::isReadOnly();
bool bReadOnly = m_bDrawMode ? officecfg::Office::Draw::Layout::Display::Ruler::isReadOnly() :
officecfg::Office::Impress::Layout::Display::Ruler::isReadOnly();
m_xCbxRuler->set_sensitive(!bReadOnly);
m_xCbxRulerImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Impress::Layout::Display::Contour::isReadOnly();
bReadOnly = m_bDrawMode ? officecfg::Office::Draw::Layout::Display::Contour::isReadOnly() :
officecfg::Office::Impress::Layout::Display::Contour::isReadOnly();
m_xCbxMoveOutline->set_sensitive(!bReadOnly);
m_xCbxMoveOutlineImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Impress::Layout::Display::Guide::isReadOnly();
bReadOnly = m_bDrawMode ? officecfg::Office::Draw::Layout::Display::Guide::isReadOnly() :
officecfg::Office::Impress::Layout::Display::Guide::isReadOnly();
m_xCbxDragStripes->set_sensitive(!bReadOnly);
m_xCbxDragStripesImg->set_visible(bReadOnly);
bReadOnly = officecfg::Office::Impress::Layout::Display::Bezier::isReadOnly();
bReadOnly = m_bDrawMode ? officecfg::Office::Draw::Layout::Display::Bezier::isReadOnly() :
officecfg::Office::Impress::Layout::Display::Bezier::isReadOnly();
m_xCbxHandlesBezier->set_sensitive(!bReadOnly);
m_xCbxHandlesBezierImg->set_visible(bReadOnly);
@@ -244,6 +249,17 @@ std::unique_ptr<SfxTabPage> SdTpOptionsContents::Create( weld::Container* pPage,
return std::make_unique<SdTpOptionsContents>(pPage, pController, *rAttrs);
}
void SdTpOptionsContents::PageCreated( const SfxAllItemSet& aSet )
{
const SfxUInt32Item* pFlagItem = aSet.GetItem<SfxUInt32Item>(SID_SDMODE_FLAG, false);
if (pFlagItem)
{
sal_uInt32 nFlags = pFlagItem->GetValue();
if ((nFlags & SD_DRAW_MODE) == SD_DRAW_MODE)
SetDrawMode();
}
}
/*************************************************************************
|*
|* TabPage to adjust the misc options
diff --git a/sd/source/ui/inc/tpoption.hxx b/sd/source/ui/inc/tpoption.hxx
index e53c552..e1065eb 100644
--- a/sd/source/ui/inc/tpoption.hxx
+++ b/sd/source/ui/inc/tpoption.hxx
@@ -42,6 +42,7 @@ public:
class SdTpOptionsContents final : public SfxTabPage
{
private:
bool m_bDrawMode;
std::unique_ptr<weld::CheckButton> m_xCbxRuler;
std::unique_ptr<weld::Widget> m_xCbxRulerImg;
std::unique_ptr<weld::CheckButton> m_xCbxDragStripes;
@@ -60,6 +61,10 @@ public:
virtual bool FillItemSet( SfxItemSet* ) override;
virtual void Reset( const SfxItemSet * ) override;
virtual void PageCreated(const SfxAllItemSet& aSet) override;
void SetDrawMode() { m_bDrawMode = true; }
};
/**