diff --git a/reactos/base/applications/games/spider/spigame.cpp b/reactos/base/applications/games/spider/spigame.cpp index d3717207f7f..7521bdd5bdb 100644 --- a/reactos/base/applications/games/spider/spigame.cpp +++ b/reactos/base/applications/games/spider/spigame.cpp @@ -294,8 +294,7 @@ void CreateSpider() pDeck->SetPlacement(CS_XJUST_RIGHT, CS_YJUST_BOTTOM, - X_BORDER, - Y_BORDER); pDeck->SetDragRule(CS_DRAG_NONE, 0); pDeck->SetDropRule(CS_DROP_NONE, 0); - pDeck->SetClickProc(DeckClickProc); - pDeck->SetDblClickProc(DeckClickProc); + pDeck->SetClickReleaseProc(DeckClickProc); /* Create the row stacks */ for (i = 0; i < NUM_STACKS; i++) diff --git a/reactos/lib/3rdparty/cardlib/cardregion.cpp b/reactos/lib/3rdparty/cardlib/cardregion.cpp index 30af44b2e49..c47b6cf5e08 100644 --- a/reactos/lib/3rdparty/cardlib/cardregion.cpp +++ b/reactos/lib/3rdparty/cardlib/cardregion.cpp @@ -46,6 +46,7 @@ CardRegion::CardRegion(CardWindow &parent, int Id, bool visible, int x, int y, i AddCallback = 0; RemoveCallback = 0; ClickCallback = 0; + ClickReleaseCallback = 0; DblClickCallback = 0; uDragRule = CS_DRAG_ALL; @@ -187,6 +188,11 @@ void CardRegion::SetClickProc(pClickProc proc) ClickCallback = proc; } +void CardRegion::SetClickReleaseProc(pClickProc proc) +{ + ClickReleaseCallback = proc; +} + void CardRegion::SetDblClickProc(pClickProc proc) { DblClickCallback = proc; diff --git a/reactos/lib/3rdparty/cardlib/cardregion.h b/reactos/lib/3rdparty/cardlib/cardregion.h index a6058f5b479..e81999764f4 100644 --- a/reactos/lib/3rdparty/cardlib/cardregion.h +++ b/reactos/lib/3rdparty/cardlib/cardregion.h @@ -40,6 +40,7 @@ public: bool SetDropRule(UINT uDropType, pCanDropProc proc = 0); void SetClickProc (pClickProc proc); + void SetClickReleaseProc (pClickProc proc); void SetDblClickProc (pClickProc proc); void SetAddCardProc (pAddProc proc); @@ -132,6 +133,7 @@ private: bool OnLButtonDblClk(int x, int y); bool OnMouseMove(int x, int y); bool OnLButtonUp(int x, int y); + void ClickRelease(int x, int y); // @@ -204,6 +206,7 @@ private: pCanDragProc CanDragCallback; pCanDropProc CanDropCallback; pClickProc ClickCallback; + pClickProc ClickReleaseCallback; pClickProc DblClickCallback; pAddProc AddCallback; pRemoveProc RemoveCallback; diff --git a/reactos/lib/3rdparty/cardlib/cardrgnmouse.cpp b/reactos/lib/3rdparty/cardlib/cardrgnmouse.cpp index c8cdf4a3aff..b8da01b33b1 100644 --- a/reactos/lib/3rdparty/cardlib/cardrgnmouse.cpp +++ b/reactos/lib/3rdparty/cardlib/cardrgnmouse.cpp @@ -279,6 +279,14 @@ bool CardRegion::OnLButtonDown(int x, int y) return false; } +void CardRegion::ClickRelease(int x, int y) +{ + iNumDragCards = GetNumDragCards(x, y); + + if (ClickReleaseCallback) + ClickReleaseCallback(*this, iNumDragCards); +} + bool CardRegion::OnLButtonUp(int x, int y) { CardRegion *pDestStack = 0; diff --git a/reactos/lib/3rdparty/cardlib/cardwindow.cpp b/reactos/lib/3rdparty/cardlib/cardwindow.cpp index cb03193aa15..b1ff6336857 100644 --- a/reactos/lib/3rdparty/cardlib/cardwindow.cpp +++ b/reactos/lib/3rdparty/cardlib/cardwindow.cpp @@ -501,6 +501,12 @@ LRESULT CALLBACK CardWindow::WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM return 0; } + if ((stackptr = CardRegionFromPoint(x, y)) != 0) + { + stackptr->ClickRelease(x, y); + stackptr = 0; + } + return 0; case WM_MOUSEMOVE: