void DisplayDirector::MouseDown(int x, int y) { BPoint mousePoint(x, y); View* view = WindowView(); // hit the hotspot if (hotspot && hotspot->ContainsPoint(ViewToDoc(mousePoint))) hotspot->Clicked(this); // extend the selection else if ((view->CurModifiers() & B_SHIFT_KEY) != 0) ExtendSelection(); // promote or drag the selection else if (selection && selection->ContainsPoint(ViewToDoc(mousePoint))) { if (view->CurClicks() > 1) { StartRefreshCycle(); selection->Promote(this); FinishRefreshCycle(); ExtendSelection(); } else DragSelection(mousePoint); } // otherwise find a new selection else { if (DocRect().Contains(mousePoint)) FindSelection(); else SetSelection(NULL); } }