From 3986f667cb0f3fffeaee637dcee097b582e240ca Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 28 Mar 2023 14:14:31 +0300 Subject: CCtrlTreeView: OnBeginDrag / OnEndDrag callbacks became boolean --- include/m_gui.h | 2 ++ include/m_system.h | 26 +++++++++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/m_gui.h b/include/m_gui.h index 17b544ef61..0d13d5974a 100644 --- a/include/m_gui.h +++ b/include/m_gui.h @@ -1306,6 +1306,7 @@ public: NMTVGETINFOTIP *nmtvit; NMTVCUSTOMDRAW *nmcd; HTREEITEM hItem; // for OnItemChanged + TVHITTESTINFO *ntvhi; // for OnEndDrag }; }; @@ -1314,6 +1315,7 @@ public: CCallback OnBeginRDrag; CCallback OnCustomDraw; CCallback OnDeleteItem; + CCallback OnEndDrag; CCallback OnEndLabelEdit; CCallback OnGetDispInfo; CCallback OnGetInfoTip; diff --git a/include/m_system.h b/include/m_system.h index 2d36a47bcd..f5003a2585 100644 --- a/include/m_system.h +++ b/include/m_system.h @@ -604,19 +604,29 @@ class CCallbackImp }; typedef void (CDummy:: *TFnCallback)(void *argument); + typedef bool (CDummy:: *TFnBCallback)(void *argument); CDummy *m_object; - TFnCallback m_func; + union { + TFnCallback m_func; + TFnBCallback m_bfunc; + }; protected: template __inline CCallbackImp(TClass *object, void (TClass:: *func)(TArgument *argument)) : m_object((CDummy *)object), m_func((TFnCallback)func) - { - } + {} + + template + __inline CCallbackImp(TClass *object, bool (TClass:: *func)(TArgument *argument)) : + m_object((CDummy *)object), + m_bfunc((TFnBCallback)func) + {} __inline void Invoke(void *argument) const { if (m_func && m_object) (m_object->*m_func)(argument); } + __inline bool BInvoke(void *argument) const { return (m_bfunc && m_object) ? (m_object->*m_bfunc)(argument) : true; } public: __inline CCallbackImp() : m_object(nullptr), m_func(nullptr) {} @@ -641,9 +651,13 @@ public: template __inline CCallback(TClass *object, void (TClass:: *func)(TArgument *argument)) : CCallbackImp(object, func) {} + template + __inline CCallback(TClass *object, bool (TClass:: *func)(TArgument *argument)) : CCallbackImp(object, func) {} + __inline CCallback &operator=(const CCallbackImp &x) { CSuper::operator =(x); return *this; } __inline void operator()(TArgument *argument) const { Invoke((void *)argument); } + __inline bool Check(TArgument *argument) const { return BInvoke((void *)argument); } }; template @@ -652,6 +666,12 @@ __inline CCallback Callback(TClass *object, void (TClass:: *func)(TAr return CCallback(object, func); } +template +__inline CCallback Callback(TClass *object, bool (TClass:: *func)(TArgument *argument)) +{ + return CCallback(object, func); +} + /////////////////////////////////////////////////////////////////////////////// // http support -- cgit v1.2.3