BOOL NodeSimpleShape::OnClick( DocCoord PointerPos, ClickType Click, ClickModifiers ClickMods, Spread* pSpread ) { PORTNOTETRACE("other","NodeSimpleShape::OnClick - do nothing"); #if !defined(EXCLUDE_FROM_RALPH) // we only handle the click if we can confirm that object blobs are being displayed. BlobManager* pBlobMgr = GetApplication()->GetBlobManager(); if (pBlobMgr == NULL) return FALSE; if (!pBlobMgr->GetCurrentInterest().Object) return FALSE; INT32 ClickCorner; if (IsNearControlHandle(PointerPos, &ClickCorner)) { // The click was over a control point, so start the drag and tell it the opposite corner if (Click==CLICKTYPE_DRAG) HandleBlobDrag(Parallel[ClickCorner], pSpread, (ClickCorner+2)%4 ); // we have used that click up, so tell the world return TRUE; } #endif // did not use the click return FALSE; }
BOOL ViewContextMenu::AskBlobsForItems( Spread* pSpread, DocCoord ClickPos, ClickModifiers ClickMods ) { // Test for a click on a fill attribute first, as they aren't NodeRenderableInks, and so // won't be included in the tests below. // if (AttrFillGeometry::CheckAttrClick(ClickStart, TypeOfClick, ClickMods, StartSpread)) // { // return TRUE; // } // Look for a selected object to pass the click to. SelRange* pSel = GetApplication()->FindSelection(); if (pSel==NULL) return FALSE; Node* pNode = pSel->FindFirst(); if (pNode == NULL) return FALSE; // Providing we are displaying object blobs, try passing the click on to each object // in the selection. BlobManager* pBlobs = GetApplication()->GetBlobManager(); if (pBlobs && pBlobs->GetCurrentInterest().Object) { // For all selected objects . . . while (pNode != NULL) { // Is this node ink-renderable? if (pNode->IsKindOf(CC_RUNTIME_CLASS(NodeRenderableInk))) { // Yes. Does it want the click? if (((NodeRenderableInk*) pNode)->OnBlobPopUp(pSpread, ClickPos, this)) { // An object processed the click, so indicate that there's no more to do. return TRUE; } } // Try the next object in the selection. pNode = pSel->FindNext(pNode); } } return FALSE; }