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 --- src/mir_app/src/menu_options.cpp | 6 ++++-- src/mir_core/src/Windows/CCtrlTreeView.cpp | 22 +++++++++++++--------- 2 files changed, 17 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/mir_app/src/menu_options.cpp b/src/mir_app/src/menu_options.cpp index c2dfae7c87..3c6ce3cf55 100644 --- a/src/mir_app/src/menu_options.cpp +++ b/src/mir_app/src/menu_options.cpp @@ -572,12 +572,14 @@ public: m_customName.Enable(true); } - void onMenuItemBeginDrag(CCtrlTreeView::TEventInfo *evt) + bool onMenuItemBeginDrag(CCtrlTreeView::TEventInfo *evt) { MenuItemOptData *p = (MenuItemOptData*)evt->nmtv->itemNew.lParam; if (p->pimi != nullptr) if (p->pimi->mi.flags & CMIF_UNMOVABLE) - evt->nmhdr->code = 0; // reject an attempt to change item's position + return false; // reject an attempt to change item's position + + return true; } }; diff --git a/src/mir_core/src/Windows/CCtrlTreeView.cpp b/src/mir_core/src/Windows/CCtrlTreeView.cpp index 92ad166f91..4f4aeabf2f 100644 --- a/src/mir_core/src/Windows/CCtrlTreeView.cpp +++ b/src/mir_core/src/Windows/CCtrlTreeView.cpp @@ -161,12 +161,16 @@ LRESULT CCtrlTreeView::CustomWndProc(UINT msg, WPARAM wParam, LPARAM lParam) m_bDragging = false; ReleaseCapture(); - hti.pt.x = (short)LOWORD(lParam); - hti.pt.y = (short)HIWORD(lParam) - GetItemHeight() / 2; + hti.pt.x = GET_X_LPARAM(lParam); + hti.pt.y = GET_Y_LPARAM(lParam) - GetItemHeight() / 2; HitTest(&hti); if (m_hDragItem == hti.hItem) break; + TEventInfo evt = { this, (LPNMHDR)&hti}; + if (!OnEndDrag.Check(&evt)) + break; + if (hti.flags & TVHT_ABOVE) hti.hItem = TVI_FIRST; else if (hti.flags & TVHT_BELOW) @@ -288,14 +292,14 @@ BOOL CCtrlTreeView::OnNotify(int, NMHDR *pnmh) case TVN_SINGLEEXPAND: OnSingleExpand(&evt); return TRUE; case TVN_BEGINDRAG: - OnBeginDrag(&evt); - // user-defined can clear the event code to disable dragging - if (m_bDndEnabled && pnmh->code) { - ::SetCapture(m_hwnd); - m_bDragging = true; - m_hDragItem = evt.nmtv->itemNew.hItem; - SelectItem(m_hDragItem); + if (m_bDndEnabled) { + if (OnBeginDrag.Check(&evt)) { + ::SetCapture(m_hwnd); + m_bDragging = true; + m_hDragItem = evt.nmtv->itemNew.hItem; + SelectItem(m_hDragItem); + } } return TRUE; -- cgit v1.2.3