summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2023-03-28 14:14:31 +0300
committerGeorge Hazan <ghazan@miranda.im>2023-03-28 14:14:31 +0300
commit3986f667cb0f3fffeaee637dcee097b582e240ca (patch)
tree5d764d800adad5a18cda818bd14599b1538e765a /include
parent4e37d6e13611fb0a27aa35f0c06f221a37cf56f1 (diff)
CCtrlTreeView: OnBeginDrag / OnEndDrag callbacks became boolean
Diffstat (limited to 'include')
-rw-r--r--include/m_gui.h2
-rw-r--r--include/m_system.h26
2 files changed, 25 insertions, 3 deletions
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<TEventInfo> OnBeginRDrag;
CCallback<TEventInfo> OnCustomDraw;
CCallback<TEventInfo> OnDeleteItem;
+ CCallback<TEventInfo> OnEndDrag;
CCallback<TEventInfo> OnEndLabelEdit;
CCallback<TEventInfo> OnGetDispInfo;
CCallback<TEventInfo> 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<typename TClass, typename TArgument>
__inline CCallbackImp(TClass *object, void (TClass:: *func)(TArgument *argument)) :
m_object((CDummy *)object),
m_func((TFnCallback)func)
- {
- }
+ {}
+
+ template<typename TClass, typename TArgument>
+ __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<typename TClass>
__inline CCallback(TClass *object, void (TClass:: *func)(TArgument *argument)) : CCallbackImp(object, func) {}
+ template<typename TClass>
+ __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<typename TClass, typename TArgument>
@@ -652,6 +666,12 @@ __inline CCallback<TArgument> Callback(TClass *object, void (TClass:: *func)(TAr
return CCallback<TArgument>(object, func);
}
+template<typename TClass, typename TArgument>
+__inline CCallback<TArgument> Callback(TClass *object, bool (TClass:: *func)(TArgument *argument))
+{
+ return CCallback<TArgument>(object, func);
+}
+
///////////////////////////////////////////////////////////////////////////////
// http support