QRectF HBox::drag(const EditData& data) { QRectF r(canvasBoundingRect()); qreal diff = data.delta.x(); qreal x1 = userOff().x() + diff; if (parent()->type() == VBOX) { VBox* vb = static_cast<VBox*>(parent()); qreal x2 = parent()->width() - width() - (vb->leftMargin() + vb->rightMargin()) * MScore::DPMM; if (x1 < 0.0) x1 = 0.0; else if (x1 > x2) x1 = x2; } setUserOff(QPointF(x1, 0.0)); setStartDragPosition(data.pos); return canvasBoundingRect() | r; }
void HBox::layout() { if (parent() && parent()->type() == VBOX) { VBox* vb = static_cast<VBox*>(parent()); qreal x = vb->leftMargin() * MScore::DPMM; qreal y = vb->topMargin() * MScore::DPMM; qreal w = point(boxWidth()); qreal h = vb->height() - (vb->topMargin() + vb->bottomMargin()) * MScore::DPMM; setPos(x, y); bbox().setRect(0.0, 0.0, w, h); } else { bbox().setRect(0.0, 0.0, point(boxWidth()), system()->height()); } Box::layout(); adjustReadPos(); }
void InspectorVBox::apply() { VBox* box = static_cast<VBox*>(inspector->element()); Score* score = box->score(); qreal _spatium = score->spatium(); qreal topGap = vb.topGap->value() * _spatium; qreal bottomGap = vb.bottomGap->value() * _spatium; Spatium height(vb.height->value()); if (topGap != box->topGap() || bottomGap != box->bottomGap() || height != box->boxHeight()) { score->startCmd(); score->undo(new ChangeBoxProperties(box, box->leftMargin(), box->topMargin(), box->rightMargin(), box->bottomMargin(), height, box->boxWidth(), topGap, bottomGap )); score->setLayoutAll(true); score->endCmd(); mscore->endCmd(); } }