diff options
author | Jan-Marek Glogowski <glogow@fbihome.de> | 2017-01-23 19:37:51 +0100 |
---|---|---|
committer | Jan-Marek Glogowski <glogow@fbihome.de> | 2017-01-23 20:49:05 +0100 |
commit | bf110d40efcc79efb9247fdce5d2f54bafa6550b (patch) | |
tree | 4e9fad96d91adfd5159b009b430a64d4a6863bd6 /include | |
parent | 75d8b305bbc1c2377f23361ecd64816a350baa4c (diff) |
Change all Idle* LINKs to be Timer*
Seem UBSAN doesn't like my forced reinterpret_cast to set the Idles
Link in the Timer class. Now there are two possible solution:
1. convert all (DECL|IMPL).*_LINK call sites to use a Timer* or
2. split the inheritance of Idle from Timer again to maintain
different Link<>s and move all common code into a TimerBase.
While the 1st is more correct, the 2nd has a better indicator for
Idles. This implements the first solution.
And while at it, this also converts all call sites of SetTimeoutHdl
and SetIdleHdl to SetInvokeHandler and gets rid of some local Link
objects, which are just passed to the SetInvokeHandler call.
It also introduces ClearInvokeHandler() and replaces the respective
call sites of SetInvokeHandler( Link<Timer *, void>() ).
Change-Id: I40c4167b1493997b7f136add4dad2f4ff5504b69
Diffstat (limited to 'include')
-rw-r--r-- | include/formula/formula.hxx | 2 | ||||
-rw-r--r-- | include/formula/funcutl.hxx | 2 | ||||
-rw-r--r-- | include/sfx2/basedlgs.hxx | 4 | ||||
-rw-r--r-- | include/sfx2/dinfdlg.hxx | 4 | ||||
-rw-r--r-- | include/sfx2/dispatch.hxx | 2 | ||||
-rw-r--r-- | include/sfx2/dockwin.hxx | 2 | ||||
-rw-r--r-- | include/svtools/asynclink.hxx | 3 | ||||
-rw-r--r-- | include/svtools/filechangedchecker.hxx | 2 | ||||
-rw-r--r-- | include/svtools/treelistbox.hxx | 2 | ||||
-rw-r--r-- | include/svtools/wizdlg.hxx | 2 | ||||
-rw-r--r-- | include/svx/fontwork.hxx | 2 | ||||
-rw-r--r-- | include/svx/graphctl.hxx | 2 | ||||
-rw-r--r-- | include/svx/imapdlg.hxx | 2 | ||||
-rw-r--r-- | include/svx/modctrl.hxx | 2 | ||||
-rw-r--r-- | include/svx/numvset.hxx | 2 | ||||
-rw-r--r-- | include/svx/sidebar/PanelLayout.hxx | 2 | ||||
-rw-r--r-- | include/svx/svdpntv.hxx | 2 | ||||
-rw-r--r-- | include/vcl/dockwin.hxx | 2 | ||||
-rw-r--r-- | include/vcl/idle.hxx | 13 | ||||
-rw-r--r-- | include/vcl/syswin.hxx | 2 | ||||
-rw-r--r-- | include/vcl/texteng.hxx | 2 | ||||
-rw-r--r-- | include/vcl/timer.hxx | 13 | ||||
-rw-r--r-- | include/vcl/toolbox.hxx | 2 | ||||
-rw-r--r-- | include/vcl/window.hxx | 4 |
24 files changed, 27 insertions, 50 deletions
diff --git a/include/formula/formula.hxx b/include/formula/formula.hxx index 8ef48eaf3051..164c673fe6d1 100644 --- a/include/formula/formula.hxx +++ b/include/formula/formula.hxx @@ -107,7 +107,7 @@ public: private: ::std::unique_ptr<FormulaDlg_Impl> m_pImpl; - DECL_LINK( UpdateFocusHdl, Idle*, void ); + DECL_LINK( UpdateFocusHdl, Timer*, void ); protected: void disableOk(); diff --git a/include/formula/funcutl.hxx b/include/formula/funcutl.hxx index 99a3e4e71325..5bb490d648a2 100644 --- a/include/formula/funcutl.hxx +++ b/include/formula/funcutl.hxx @@ -47,7 +47,7 @@ private: IControlReferenceHandler* pAnyRefDlg; // parent dialog VclPtr<vcl::Window> pLabelWidget; - DECL_LINK( UpdateHdl, Idle*, void ); + DECL_LINK( UpdateHdl, Timer*, void ); protected: virtual void KeyInput( const KeyEvent& rKEvt ) override; diff --git a/include/sfx2/basedlgs.hxx b/include/sfx2/basedlgs.hxx index 1ed1eb4166ac..b5c06c515e16 100644 --- a/include/sfx2/basedlgs.hxx +++ b/include/sfx2/basedlgs.hxx @@ -105,7 +105,7 @@ public: SfxBindings& GetBindings() { return *pBindings; } - DECL_LINK(TimerHdl, Idle *, void); + DECL_LINK(TimerHdl, Timer *, void); }; @@ -145,7 +145,7 @@ public: virtual void FillInfo(SfxChildWinInfo&) const; void Initialize (SfxChildWinInfo* pInfo); - DECL_LINK(TimerHdl, Idle *, void); + DECL_LINK(TimerHdl, Timer *, void); }; diff --git a/include/sfx2/dinfdlg.hxx b/include/sfx2/dinfdlg.hxx index 9ffbb3370e94..bea1e06311d8 100644 --- a/include/sfx2/dinfdlg.hxx +++ b/include/sfx2/dinfdlg.hxx @@ -420,8 +420,8 @@ private: DECL_LINK( BoxLoseFocusHdl, Control&, void ); //add lose focus handlers of Date/TimeField? - DECL_LINK(EditTimeoutHdl, Idle *, void); - DECL_LINK(BoxTimeoutHdl, Idle *, void); + DECL_LINK(EditTimeoutHdl, Timer *, void); + DECL_LINK(BoxTimeoutHdl, Timer *, void); bool IsLineValid( CustomPropertyLine* pLine ) const; void ValidateLine( CustomPropertyLine* pLine, bool bIsFromTypeBox ); diff --git a/include/sfx2/dispatch.hxx b/include/sfx2/dispatch.hxx index a172ced137de..441254a5490f 100644 --- a/include/sfx2/dispatch.hxx +++ b/include/sfx2/dispatch.hxx @@ -91,7 +91,7 @@ friend class SfxStateCache; friend class SfxPopupMenuManager; friend class SfxHelp; - DECL_DLLPRIVATE_LINK( EventHdl_Impl, Idle *, void ); + DECL_DLLPRIVATE_LINK( EventHdl_Impl, Timer *, void ); DECL_DLLPRIVATE_LINK( PostMsgHandler, SfxRequest *, void ); SAL_DLLPRIVATE void Call_Impl( SfxShell& rShell, const SfxSlot &rSlot, SfxRequest &rReq, bool bRecord ); diff --git a/include/sfx2/dockwin.hxx b/include/sfx2/dockwin.hxx index cadc84000ab1..d9b3109e4466 100644 --- a/include/sfx2/dockwin.hxx +++ b/include/sfx2/dockwin.hxx @@ -99,7 +99,7 @@ public: void SetMinOutputSizePixel( const Size& rSize ); const Size& GetMinOutputSizePixel() const; virtual bool EventNotify( NotifyEvent& rNEvt ) override; - DECL_LINK(TimerHdl, Idle *, void); + DECL_LINK(TimerHdl, Timer *, void); SAL_DLLPRIVATE void Initialize_Impl(); SAL_DLLPRIVATE void SetItemSize_Impl( const Size& rSize ); diff --git a/include/svtools/asynclink.hxx b/include/svtools/asynclink.hxx index ceee99b4bacc..d037504b0464 100644 --- a/include/svtools/asynclink.hxx +++ b/include/svtools/asynclink.hxx @@ -26,6 +26,7 @@ #include <osl/mutex.hxx> class Idle; +class Timer; struct ImplSVEvent; namespace svtools { @@ -40,7 +41,7 @@ class SVT_DLLPUBLIC AsynchronLink void* _pArg; ::osl::Mutex* _pMutex; - DECL_DLLPRIVATE_LINK( HandleCall_Idle, Idle*, void ); + DECL_DLLPRIVATE_LINK( HandleCall_Idle, Timer*, void ); DECL_DLLPRIVATE_LINK( HandleCall_PostUserEvent, void*, void ); SVT_DLLPRIVATE void Call_Impl( void* pArg ); diff --git a/include/svtools/filechangedchecker.hxx b/include/svtools/filechangedchecker.hxx index 0a1bc42b9200..f9634e18919b 100644 --- a/include/svtools/filechangedchecker.hxx +++ b/include/svtools/filechangedchecker.hxx @@ -32,7 +32,7 @@ private: ::std::function<void ()> mpCallback; bool SVT_DLLPRIVATE getCurrentModTime(TimeValue& o_rValue) const; - DECL_LINK(TimerHandler, Idle *, void); + DECL_LINK(TimerHandler, Timer *, void); public: void resetTimer(); diff --git a/include/svtools/treelistbox.hxx b/include/svtools/treelistbox.hxx index da18634d1f4e..c4e9d8847e45 100644 --- a/include/svtools/treelistbox.hxx +++ b/include/svtools/treelistbox.hxx @@ -790,7 +790,7 @@ class SvInplaceEdit2 bool bAlreadyInCallBack; void CallCallBackHdl_Impl(); - DECL_LINK( Timeout_Impl, Idle *, void ); + DECL_LINK( Timeout_Impl, Timer *, void ); DECL_LINK( ReturnHdl_Impl, Accelerator&, void ); DECL_LINK( EscapeHdl_Impl, Accelerator&, void ); diff --git a/include/svtools/wizdlg.hxx b/include/svtools/wizdlg.hxx index 9f9ffe177738..cd21d66c4fb8 100644 --- a/include/svtools/wizdlg.hxx +++ b/include/svtools/wizdlg.hxx @@ -203,7 +203,7 @@ private: sal_Int16 mnLeftAlignCount; bool mbEmptyViewMargin; - DECL_DLLPRIVATE_LINK( ImplHandleWizardLayoutTimerHdl, Idle*, void ); + DECL_DLLPRIVATE_LINK( ImplHandleWizardLayoutTimerHdl, Timer*, void ); protected: long LogicalCoordinateToPixel(int iCoordinate); diff --git a/include/svx/fontwork.hxx b/include/svx/fontwork.hxx index 83d1f3c11ec3..1bb4359f2117 100644 --- a/include/svx/fontwork.hxx +++ b/include/svx/fontwork.hxx @@ -147,7 +147,7 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxFontWorkDialog : public SfxDockingWindow DECL_LINK( SelectShadowHdl_Impl, ToolBox *, void ); DECL_LINK( ModifyInputHdl_Impl, Edit&, void ); - DECL_LINK( InputTimoutHdl_Impl, Idle *, void ); + DECL_LINK( InputTimoutHdl_Impl, Timer *, void ); DECL_LINK( ColorSelectHdl_Impl, SvxColorListBox&, void ); diff --git a/include/svx/graphctl.hxx b/include/svx/graphctl.hxx index b4dab163f1c8..05e752430126 100644 --- a/include/svx/graphctl.hxx +++ b/include/svx/graphctl.hxx @@ -54,7 +54,7 @@ class SVX_DLLPUBLIC GraphCtrl : public Control bool bAnim; bool mbInIdleUpdate; - DECL_LINK( UpdateHdl, Idle*, void ); + DECL_LINK( UpdateHdl, Timer*, void ); rtl::Reference<SvxGraphCtrlAccessibleContext> mpAccContext; diff --git a/include/svx/imapdlg.hxx b/include/svx/imapdlg.hxx index 284b38fd30f7..e328ab8b1e78 100644 --- a/include/svx/imapdlg.hxx +++ b/include/svx/imapdlg.hxx @@ -126,7 +126,7 @@ class SVX_DLLPUBLIC SvxIMapDlg : public SfxModelessDialog // SfxFloatingWindow DECL_LINK( URLModifyHdl, Edit&, void ); DECL_LINK( URLModifyComboBoxHdl, ComboBox&, void ); DECL_LINK( URLLoseFocusHdl, Control&, void ); - DECL_LINK( UpdateHdl, Idle *, void ); + DECL_LINK( UpdateHdl, Timer *, void ); DECL_LINK( StateHdl, GraphCtrl*, void ); DECL_LINK( MiscHdl, LinkParamNone*, void ); diff --git a/include/svx/modctrl.hxx b/include/svx/modctrl.hxx index d820fb21cb39..37bfc7af3f03 100644 --- a/include/svx/modctrl.hxx +++ b/include/svx/modctrl.hxx @@ -43,7 +43,7 @@ public: SvxModifyControl( sal_uInt16 nSlotId, sal_uInt16 nId, StatusBar& rStb ); private: // Links - DECL_LINK( OnTimer, Idle *, void ); + DECL_LINK( OnTimer, Timer *, void ); private: // Functions void _repaint(); diff --git a/include/svx/numvset.hxx b/include/svx/numvset.hxx index bc63ae1033fd..1c2da29a55ee 100644 --- a/include/svx/numvset.hxx +++ b/include/svx/numvset.hxx @@ -101,7 +101,7 @@ class SVX_DLLPUBLIC SvxBmpNumValueSet : public SvxNumValueSet void init(); protected: - DECL_LINK(FormatHdl_Impl, Idle *, void); + DECL_LINK(FormatHdl_Impl, Timer *, void); public: SvxBmpNumValueSet(vcl::Window* pParent, WinBits nWinBits); diff --git a/include/svx/sidebar/PanelLayout.hxx b/include/svx/sidebar/PanelLayout.hxx index 7492b887d41f..856785eb8cdf 100644 --- a/include/svx/sidebar/PanelLayout.hxx +++ b/include/svx/sidebar/PanelLayout.hxx @@ -28,7 +28,7 @@ private: Idle m_aPanelLayoutIdle; bool m_bInClose; - DECL_DLLPRIVATE_LINK(ImplHandlePanelLayoutTimerHdl, Idle*, void); + DECL_DLLPRIVATE_LINK(ImplHandlePanelLayoutTimerHdl, Timer*, void); public: PanelLayout(vcl::Window* pParent, const OString& rID, const OUString& rUIXMLDescription, diff --git a/include/svx/svdpntv.hxx b/include/svx/svdpntv.hxx index dcf686230561..52b9b904d9e9 100644 --- a/include/svx/svdpntv.hxx +++ b/include/svx/svdpntv.hxx @@ -221,7 +221,7 @@ public: private: SVX_DLLPRIVATE void ImpClearVars(); - DECL_LINK(ImpComeBackHdl, Idle*, void); + DECL_LINK(ImpComeBackHdl, Timer*, void); protected: sal_uInt16 ImpGetMinMovLogic(short nMinMov, const OutputDevice* pOut) const; diff --git a/include/vcl/dockwin.hxx b/include/vcl/dockwin.hxx index c6d8fdb065f9..4d9c48963e93 100644 --- a/include/vcl/dockwin.hxx +++ b/include/vcl/dockwin.hxx @@ -242,7 +242,7 @@ private: SAL_DLLPRIVATE void ImplInitDockingWindowData(); SAL_DLLPRIVATE void setPosSizeOnContainee(Size aSize, Window &rBox); - DECL_DLLPRIVATE_LINK( ImplHandleLayoutTimerHdl, Idle*, void ); + DECL_DLLPRIVATE_LINK( ImplHandleLayoutTimerHdl, Timer*, void ); DockingWindow (const DockingWindow &) = delete; DockingWindow & operator= (const DockingWindow &) = delete; diff --git a/include/vcl/idle.hxx b/include/vcl/idle.hxx index 8d79c2f92527..707cc1248872 100644 --- a/include/vcl/idle.hxx +++ b/include/vcl/idle.hxx @@ -45,21 +45,8 @@ public: Idle( const sal_Char *pDebugName = nullptr ); virtual void Start() override; - - /** - * Convenience function for more readable code - * - * TODO: actually rename it and it's instances to SetInvokeHandler - */ - inline void SetIdleHdl( const Link<Idle *, void>& rLink ); }; -inline void Idle::SetIdleHdl( const Link<Idle*, void> &rLink ) -{ - SetInvokeHandler( Link<Timer*, void>( rLink.GetInstance(), - reinterpret_cast< Link<Timer*, void>::Stub* >( rLink.GetFunction()) ) ); -} - #endif // INCLUDED_VCL_IDLE_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/vcl/syswin.hxx b/include/vcl/syswin.hxx index a0c3b6972059..ac7a0d765c26 100644 --- a/include/vcl/syswin.hxx +++ b/include/vcl/syswin.hxx @@ -177,7 +177,7 @@ public: private: SAL_DLLPRIVATE void ImplMoveToScreen( long& io_rX, long& io_rY, long i_nWidth, long i_nHeight, vcl::Window* i_pConfigureWin ); SAL_DLLPRIVATE void setPosSizeOnContainee(Size aSize, Window &rBox); - DECL_DLLPRIVATE_LINK( ImplHandleLayoutTimerHdl, Idle*, void ); + DECL_DLLPRIVATE_LINK( ImplHandleLayoutTimerHdl, Timer*, void ); protected: // Single argument ctors shall be explicit. diff --git a/include/vcl/texteng.hxx b/include/vcl/texteng.hxx index 43fb1e245665..af678144e3e3 100644 --- a/include/vcl/texteng.hxx +++ b/include/vcl/texteng.hxx @@ -167,7 +167,7 @@ protected: void ImpCharsRemoved( sal_uInt32 nPara, sal_Int32 nPos, sal_Int32 nChars ); void ImpCharsInserted( sal_uInt32 nPara, sal_Int32 nPos, sal_Int32 nChars ); - DECL_LINK( IdleFormatHdl, Idle *, void ); + DECL_LINK( IdleFormatHdl, Timer *, void ); void CheckIdleFormatter(); void IdleFormatAndUpdate( TextView* pCurView, sal_uInt16 nMaxTimerRestarts = 5 ); diff --git a/include/vcl/timer.hxx b/include/vcl/timer.hxx index e7d539fdabf4..49d9aa7fb4a3 100644 --- a/include/vcl/timer.hxx +++ b/include/vcl/timer.hxx @@ -57,24 +57,13 @@ public: void Invoke( Timer *arg ); void SetInvokeHandler( const Link<Timer *, void>& rLink ) { maInvokeHandler = rLink; } bool HasInvokeHandler() const { return maInvokeHandler.IsSet(); }; - - /** - * Convenience function for more readable code - * - * TODO: actually use SetInvokeHandler and drop it - */ - inline void SetTimeoutHdl( const Link<Timer *, void>& rLink ); + void ClearInvokeHandler() { SetInvokeHandler( Link<Timer *, void>() ); } void SetTimeout( sal_uInt64 nTimeoutMs ); sal_uInt64 GetTimeout() const { return mnTimeout; } virtual void Start() override; }; -inline void Timer::SetTimeoutHdl( const Link<Timer *, void>& rLink ) -{ - SetInvokeHandler( rLink ); -} - /// An auto-timer is a multi-shot timer re-emitting itself at /// interval until destroyed. class VCL_DLLPUBLIC AutoTimer : public Timer diff --git a/include/vcl/toolbox.hxx b/include/vcl/toolbox.hxx index 083e6e602096..3dbcb3441547 100644 --- a/include/vcl/toolbox.hxx +++ b/include/vcl/toolbox.hxx @@ -210,7 +210,7 @@ private: SAL_DLLPRIVATE void ImplDrawFloatwinBorder(vcl::RenderContext& rRenderContext, ImplToolItem* pItem ); DECL_DLLPRIVATE_LINK( ImplCallExecuteCustomMenu, void*, void ); - DECL_DLLPRIVATE_LINK( ImplUpdateHdl, Idle*, void ); + DECL_DLLPRIVATE_LINK( ImplUpdateHdl, Timer*, void ); DECL_DLLPRIVATE_LINK( ImplCustomMenuListener, VclMenuEvent&, void ); DECL_DLLPRIVATE_LINK( ImplDropdownLongClickHdl, Timer*, void ); diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx index 1b5759b23f12..ae214c294cae 100644 --- a/include/vcl/window.hxx +++ b/include/vcl/window.hxx @@ -531,11 +531,11 @@ private: public: - DECL_DLLPRIVATE_LINK( ImplHandlePaintHdl, Idle*, void ); + DECL_DLLPRIVATE_LINK( ImplHandlePaintHdl, Timer*, void ); DECL_DLLPRIVATE_LINK( ImplGenerateMouseMoveHdl, void*, void ); DECL_DLLPRIVATE_LINK( ImplTrackTimerHdl, Timer*, void ); DECL_DLLPRIVATE_LINK( ImplAsyncFocusHdl, void*, void ); - DECL_DLLPRIVATE_LINK( ImplHandleResizeTimerHdl, Idle*, void ); + DECL_DLLPRIVATE_LINK( ImplHandleResizeTimerHdl, Timer*, void ); SAL_DLLPRIVATE static void ImplInitAppFontData( vcl::Window* pWindow ); |