From 4e4c8a71756da952686cdd682c6132413959dc21 Mon Sep 17 00:00:00 2001 From: heiko tietze Date: Fri, 12 Oct 2018 10:56:58 +0200 Subject: tdf#118621 - Optionally disable floating header/footer menu UNO command UseHeaderFooterMenu introduced Change-Id: I4be009e08bc66dc675c7c903552c6376e22639f1 Reviewed-on: https://gerrit.libreoffice.org/61706 Tested-by: Jenkins Reviewed-by: Mike Kaganski --- offapi/com/sun/star/text/ViewSettings.idl | 7 +++++++ .../data/org/openoffice/Office/UI/WriterCommands.xcu | 11 +++++++++++ .../registry/schema/org/openoffice/Office/Writer.xcs | 8 ++++++++ sw/inc/cmdid.h | 1 + sw/inc/viewopt.hxx | 9 ++++++++- sw/inc/viewsh.hxx | 2 +- sw/sdi/_viewsh.sdi | 8 ++++++++ sw/sdi/swriter.sdi | 17 +++++++++++++++++ sw/source/core/view/viewsh.cxx | 12 ++++++++++++ sw/source/uibase/uiview/view0.cxx | 12 +++++++++++- sw/source/uibase/uno/unomod.cxx | 5 ++++- sw/uiconfig/sglobal/menubar/menubar.xml | 1 + sw/uiconfig/swriter/menubar/menubar.xml | 1 + 13 files changed, 90 insertions(+), 4 deletions(-) diff --git a/offapi/com/sun/star/text/ViewSettings.idl b/offapi/com/sun/star/text/ViewSettings.idl index c433d9c3f2b0..5de3bf8d6dd5 100644 --- a/offapi/com/sun/star/text/ViewSettings.idl +++ b/offapi/com/sun/star/text/ViewSettings.idl @@ -271,6 +271,13 @@ published service ViewSettings @since LibreOffice 6.1 */ [optional, property] boolean ShowInlineTooltips; + + /** If this property is `TRUE`, the advanced menu for header/footer is shown + + @since LibreOffice 6.2 + */ + [optional, property] boolean UseHeaderFooterMenu; + }; }; }; }; }; diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu index 4e1dfe6b1b34..fcb924112781 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu @@ -353,6 +353,17 @@ 1 + + + Use header/footer menu + + + Use the advanced popup menu to create header/footer on the fly + + + 1 + + Go t~o Page... diff --git a/officecfg/registry/schema/org/openoffice/Office/Writer.xcs b/officecfg/registry/schema/org/openoffice/Office/Writer.xcs index f9a9ba770f1c..164d74e24dc5 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Writer.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Writer.xcs @@ -1063,6 +1063,14 @@ true + + + + Enables the writer to use the advanced menu on headers/footers. + + + true + diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h index 377cae2b4121..d829c3d45fe2 100644 --- a/sw/inc/cmdid.h +++ b/sw/inc/cmdid.h @@ -181,6 +181,7 @@ #define FN_SCROLL_NEXT (FN_VIEW + 58) /* uno:ScrollToNext */ #define FN_VIEW_HIDE_WHITESPACE (FN_VIEW + 59) /* Hide header, footer, and pagebreak */ #define FN_SHOW_INLINETOOLTIPS (FN_VIEW + 60) /* Show tooltips for tracked changes */ +#define FN_USE_HEADERFOOTERMENU (FN_VIEW + 61) /* Show advanced header/footer menu */ // Region: Insert #define FN_INSERT_BOOKMARK (FN_INSERT + 2 ) /* Bookmark */ diff --git a/sw/inc/viewopt.hxx b/sw/inc/viewopt.hxx index 6b4bbd1de9fc..439650d43a0e 100644 --- a/sw/inc/viewopt.hxx +++ b/sw/inc/viewopt.hxx @@ -35,6 +35,7 @@ class SwDocShell; namespace svtools{ class ColorConfig;} enum class ViewOptFlags1 { + UseHeaderFooterMenu = 0x00000001, Tab = 0x00000002, Blank = 0x00000004, HardBlank = 0x00000008, @@ -62,7 +63,7 @@ enum class ViewOptFlags1 { Pageback = 0x40000000 }; namespace o3tl { - template<> struct typed_flags : is_typed_flags {}; + template<> struct typed_flags : is_typed_flags {}; } enum class ViewOptCoreFlags2 { @@ -267,6 +268,12 @@ public: void SetShowInlineTooltips( bool b ) { b ? (m_nCoreOptions |= ViewOptFlags1::ShowInlineTooltips ) : ( m_nCoreOptions &= ~ViewOptFlags1::ShowInlineTooltips); } + //show/hide interactive header/footer on top/bootom of pages + bool IsUseHeaderFooterMenu() const + { return bool(m_nCoreOptions & ViewOptFlags1::UseHeaderFooterMenu ); } + void SetUseHeaderFooterMenu( bool b ) + { b ? (m_nCoreOptions |= ViewOptFlags1::UseHeaderFooterMenu ) : ( m_nCoreOptions &= ~ViewOptFlags1::UseHeaderFooterMenu); } + bool IsShowHiddenChar(bool bHard = false) const { return !m_bReadonly && (m_nCoreOptions & ViewOptFlags1::CharHidden) && ((m_nCoreOptions & ViewOptFlags1::ViewMetachars)||bHard); } diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx index 484fbe951f95..db92346bc587 100644 --- a/sw/inc/viewsh.hxx +++ b/sw/inc/viewsh.hxx @@ -559,7 +559,7 @@ public: /// Acts both for headers / footers, depending on the bShow(Header|Footer)Separator flags bool IsHeaderFooterEdit() const { return mbHeaderFooterEdit; } bool IsShowHeaderFooterSeparator( FrameControlType eControl ) { return (eControl == Header)? mbShowHeaderSeparator: mbShowFooterSeparator; } - virtual void SetShowHeaderFooterSeparator( FrameControlType eControl, bool bShow ) { if ( eControl == Header ) mbShowHeaderSeparator = bShow; else mbShowFooterSeparator = bShow; } + virtual void SetShowHeaderFooterSeparator( FrameControlType eControl, bool bShow ); bool IsSelectAll() { return mbSelectAll; } void setOutputToWindow(bool bOutputToWindow); diff --git a/sw/sdi/_viewsh.sdi b/sw/sdi/_viewsh.sdi index d61142d9bfde..43425fc9e6ca 100644 --- a/sw/sdi/_viewsh.sdi +++ b/sw/sdi/_viewsh.sdi @@ -915,5 +915,13 @@ interface BaseTextEditView MenuConfig , AccelConfig , ToolBoxConfig ; ] + FN_USE_HEADERFOOTERMENU + [ + ExecMethod = ExecViewOptions ; + StateMethod = StateViewOptions ; + Export = FALSE; + MenuConfig , AccelConfig , ToolBoxConfig ; + ] + } diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi index 52e73878e655..6f7d1d5e59e1 100644 --- a/sw/sdi/swriter.sdi +++ b/sw/sdi/swriter.sdi @@ -7684,3 +7684,20 @@ SfxBoolItem ShowInlineTooltips FN_SHOW_INLINETOOLTIPS ToolBoxConfig = TRUE, GroupId = SfxGroupId::View; ] + +SfxBoolItem UseHeaderFooterMenu FN_USE_HEADERFOOTERMENU +() +[ + AutoUpdate = FALSE, + FastCall = FALSE, + ReadOnlyDoc = TRUE, + Toggle = TRUE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = TRUE, + MenuConfig = TRUE, + ToolBoxConfig = TRUE, + GroupId = SfxGroupId::View; +] diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx index e2e855394e3a..587b3bc6b07c 100644 --- a/sw/source/core/view/viewsh.cxx +++ b/sw/source/core/view/viewsh.cxx @@ -100,6 +100,18 @@ static bool bInSizeNotify = false; using namespace ::com::sun::star; +void SwViewShell::SetShowHeaderFooterSeparator( FrameControlType eControl, bool bShow ) { + + //tdf#118621 - Optionally disable floating header/footer menu + if ( bShow ) + bShow = GetViewOptions()->IsUseHeaderFooterMenu(); + + if ( eControl == Header ) + mbShowHeaderSeparator = bShow; + else + mbShowFooterSeparator = bShow; +} + void SwViewShell::ToggleHeaderFooterEdit() { mbHeaderFooterEdit = !mbHeaderFooterEdit; diff --git a/sw/source/uibase/uiview/view0.cxx b/sw/source/uibase/uiview/view0.cxx index 592147febec9..a51e3c5cbd1c 100644 --- a/sw/source/uibase/uiview/view0.cxx +++ b/sw/source/uibase/uiview/view0.cxx @@ -325,7 +325,10 @@ void SwView::StateViewOptions(SfxItemSet &rSet) break; case FN_SHOW_INLINETOOLTIPS: aBool.SetValue( pOpt->IsShowInlineTooltips() ); - + break; + case FN_USE_HEADERFOOTERMENU: + aBool.SetValue( pOpt->IsUseHeaderFooterMenu() ); + break; } if( nWhich ) @@ -548,6 +551,13 @@ void SwView::ExecViewOptions(SfxRequest &rReq) pOpt->SetShowInlineTooltips( bFlag ); break; + case FN_USE_HEADERFOOTERMENU: + if( STATE_TOGGLE == eState ) + bFlag = !pOpt->IsUseHeaderFooterMenu(); + + pOpt->SetUseHeaderFooterMenu( bFlag ); + break; + default: OSL_FAIL("wrong request method"); return; diff --git a/sw/source/uibase/uno/unomod.cxx b/sw/source/uibase/uno/unomod.cxx index 259c9728acce..00399ac9ca45 100644 --- a/sw/source/uibase/uno/unomod.cxx +++ b/sw/source/uibase/uno/unomod.cxx @@ -90,7 +90,8 @@ enum SwViewSettingsPropertyHandles HANDLE_VIEWSET_VERT_RULER_METRIC, HANDLE_VIEWSET_SCROLLBAR_TIPS, HANDLE_VIEWSET_INLINECHANGES_TIPS, - HANDLE_VIEWSET_HIDE_WHITESPACE + HANDLE_VIEWSET_HIDE_WHITESPACE, + HANDLE_VIEWSET_USE_HEADERFOOTERMENU, }; enum SwPrintSettingsPropertyHandles @@ -126,6 +127,7 @@ static ChainablePropertySetInfo * lcl_createViewSettingsInfo() { OUString( "IsVertRulerRightAligned"),HANDLE_VIEWSET_VRULER_RIGHT , cppu::UnoType::get(), PROPERTY_NONE}, { OUString( "ShowContentTips" ), HANDLE_VIEWSET_SHOW_CONTENT_TIPS , cppu::UnoType::get(), PROPERTY_NONE}, { OUString( "ShowInlineTooltips" ), HANDLE_VIEWSET_INLINECHANGES_TIPS , cppu::UnoType::get(), PROPERTY_NONE}, + { OUString( "UseHeaderFooterMenu" ), HANDLE_VIEWSET_USE_HEADERFOOTERMENU , cppu::UnoType::get(), PROPERTY_NONE}, { OUString( "RasterResolutionX"), HANDLE_VIEWSET_RASTER_RESOLUTION_X, cppu::UnoType::get(), PROPERTY_NONE}, { OUString( "RasterResolutionY"), HANDLE_VIEWSET_RASTER_RESOLUTION_Y, cppu::UnoType::get(), PROPERTY_NONE}, { OUString( "RasterSubdivisionX"), HANDLE_VIEWSET_RASTER_SUBDIVISION_X, cppu::UnoType::get(), PROPERTY_NONE}, @@ -594,6 +596,7 @@ void SwXViewSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, c case HANDLE_VIEWSET_IS_SNAP_TO_RASTER : mpViewOption->SetSnap(*o3tl::doAccess(rValue)); break; case HANDLE_VIEWSET_SCROLLBAR_TIPS : mpViewOption->SetShowScrollBarTips(*o3tl::doAccess(rValue)); break; case HANDLE_VIEWSET_INLINECHANGES_TIPS : mpViewOption->SetShowInlineTooltips(*o3tl::doAccess(rValue)); break; + case HANDLE_VIEWSET_USE_HEADERFOOTERMENU : mpViewOption->SetUseHeaderFooterMenu(*o3tl::doAccess(rValue)); break; case HANDLE_VIEWSET_RASTER_RESOLUTION_X : { sal_Int32 nTmp = 0; diff --git a/sw/uiconfig/sglobal/menubar/menubar.xml b/sw/uiconfig/sglobal/menubar/menubar.xml index dd478981d280..60579f58ed6c 100644 --- a/sw/uiconfig/sglobal/menubar/menubar.xml +++ b/sw/uiconfig/sglobal/menubar/menubar.xml @@ -336,6 +336,7 @@ + diff --git a/sw/uiconfig/swriter/menubar/menubar.xml b/sw/uiconfig/swriter/menubar/menubar.xml index bec1b1644f76..7c9245e69923 100644 --- a/sw/uiconfig/swriter/menubar/menubar.xml +++ b/sw/uiconfig/swriter/menubar/menubar.xml @@ -336,6 +336,7 @@ + -- cgit v1.2.3