[cardlib] Install a button release callback

[spider] Use the button release callback instead of button click callbacks
See issue #6125 for more details.

svn path=/trunk/; revision=51416
This commit is contained in:
Gregor Schneider 2011-04-21 21:25:30 +00:00
parent f3aa24aa4f
commit 7037613d3d
5 changed files with 24 additions and 2 deletions

View file

@ -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++)

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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: