From 67919621cb0b95074c4401bdfced9d87b230cc2f Mon Sep 17 00:00:00 2001 From: Tamás Zolnai Date: Thu, 19 Apr 2018 12:10:52 +0200 Subject: sw lok: Accept / reject change is always enabled in the context menu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use conditional fastcall for allow executing these two uno commands even if there is no tracked changes at the cursor position instead of enable the menu slots unconditionally. See also: b6011f07254f8003929320ad842d8d09daca0e09 Change-Id: Iaf8a8082961cd174c038fc021d2c41fb7cb97bff Reviewed-on: https://gerrit.libreoffice.org/53148 Tested-by: Jenkins Reviewed-by: Tamás Zolnai --- sfx2/source/control/dispatch.cxx | 18 +----------------- sfx2/source/control/shell.cxx | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 17 deletions(-) (limited to 'sfx2/source/control') diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx index c05609f01ce7..d3e403d70e9c 100644 --- a/sfx2/source/control/dispatch.cxx +++ b/sfx2/source/control/dispatch.cxx @@ -306,22 +306,6 @@ bool SfxDispatcher::IsAppDispatcher() const return !xImp->pFrame; } -/// Decides if the request is FASTCALL or not, depending on arguments. -bool lcl_IsConditionalFastCall(SfxRequest const &rReq) -{ - sal_uInt16 nId = rReq.GetSlot(); - bool bRet = false; - - if (nId == SID_UNDO || nId == SID_REDO) - { - const SfxItemSet* pArgs = rReq.GetArgs(); - if (pArgs && pArgs->HasItem(SID_REPAIRPACKAGE)) - bRet = true; - } - - return bRet; -} - /** Helper function to check whether a slot can be executed and check the execution itself */ @@ -330,7 +314,7 @@ void SfxDispatcher::Call_Impl(SfxShell& rShell, const SfxSlot &rSlot, SfxRequest SFX_STACK(SfxDispatcher::Call_Impl); // The slot may be called (meaning enabled) - if ( rSlot.IsMode(SfxSlotMode::FASTCALL) || rShell.CanExecuteSlot_Impl(rSlot) || lcl_IsConditionalFastCall(rReq)) + if ( rSlot.IsMode(SfxSlotMode::FASTCALL) || rShell.CanExecuteSlot_Impl(rSlot) || rShell.IsConditionalFastCall(rReq)) { if ( GetFrame() ) { diff --git a/sfx2/source/control/shell.cxx b/sfx2/source/control/shell.cxx index 2f25891ce5e5..c89d162ebe9d 100644 --- a/sfx2/source/control/shell.cxx +++ b/sfx2/source/control/shell.cxx @@ -388,6 +388,21 @@ bool SfxShell::CanExecuteSlot_Impl( const SfxSlot &rSlot ) return aSet.GetItemState(nId) != SfxItemState::DISABLED; } +bool SfxShell::IsConditionalFastCall( const SfxRequest &rReq ) +{ + sal_uInt16 nId = rReq.GetSlot(); + bool bRet = false; + + if (nId == SID_UNDO || nId == SID_REDO) + { + const SfxItemSet* pArgs = rReq.GetArgs(); + if (pArgs && pArgs->HasItem(SID_REPAIRPACKAGE)) + bRet = true; + } + return bRet; +} + + void ShellCall_Impl( void* pObj, void* pArg ) { static_cast(pObj)->ExecuteSlot( *static_cast(pArg) ); -- cgit