// -------------------------------------------------------------------------------------------------------- void KSelectionHandler::cut () { copy(); std::vector<KSelectable*>::iterator iter = selected_selectables.begin(); while (iter != selected_selectables.end()) { (*iter)->setSelected(false); iter++; } iter = selected_selectables.begin(); while (iter != selected_selectables.end()) { if ((*iter)->isCutCopyPasteable()) { KSelectable * removedItem = *iter; iter = selected_selectables.erase(iter); deletePickable(removedItem); } else { iter++; } } selected_selectables.clear(); unpick(); }
bool PinchZoomGesture::processGestureImpl(GestureContext *gestureContext) { QList<Path *> activePaths = gestureContext->getActiveTouchPaths(); if(gestureContext->getNumActiveTouchPoints() != 2) { // Update all PostIt layouts since grow and shrink relies on animation call back to update layout. QVectorIterator<BumpObject*> it(_selectedObjects); while(it.hasNext()) { StickyNoteActor * actor = dynamic_cast<StickyNoteActor *>(it.next()); if (actor) actor->syncStickyNoteWithFileContents(); } // The gesture is active as long as the one of the two initial fingers is still down if (activePaths.count() == 1) { if (activePaths.contains(_gestureTouchPaths[0]) || activePaths.contains(_gestureTouchPaths[1])) { _recalculateInitials = true; return true; } } // Stop translation of objects by dragging if (sel->getPickedActor()) sel->getPickedActor()->onDragEnd(); unpick(); return false; } float newDistance = getDistanceInObjectPlane(activePaths[0]->getLastTouchPoint(), activePaths[1]->getLastTouchPoint(), _objectPlane); if (_recalculateInitials) { _recalculateInitials = false; _cumulativeScaleFactor *= _lastScaleFactor; _originalDistanceBetweenPoints = newDistance; } float scaleFactor = newDistance / _originalDistanceBetweenPoints; _lastScaleFactor = scaleFactor; scaleFactor *= _cumulativeScaleFactor; QVectorIterator<BumpObject*> it(_selectedObjects); while(it.hasNext()) { BumpObject *obj = it.next(); obj->scaleFromReferenceDims(scaleFactor); //don't reselect the objects within a pile if(!sel->isInSelection(obj)) sel->add(obj); } // Add translation of object by simulating mouse events // OnMouseMove sets the primary touch x,y which are used to calculate the force to move objects winOS->OnMouseMove(_pathOfTranslationPoint->getLastTouchPoint().x, _pathOfTranslationPoint->getLastTouchPoint().y, MK_LBUTTON); return true; }