From 63da7b27a3cfe693772d84514a831c4623f7db9f Mon Sep 17 00:00:00 2001 From: Maurizio Gavioli Date: Sat, 8 Sep 2012 01:22:36 +0200 Subject: [PATCH] Added layout and bbox to TabDurationSymbol; included its bbox in Chord bbox --- libmscore/chord.cpp | 4 +++- libmscore/chordrest.cpp | 2 ++ libmscore/stafftype.cpp | 6 +++--- libmscore/stafftype.h | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libmscore/chord.cpp b/libmscore/chord.cpp index 90548b5912..2d5e72be38 100644 --- a/libmscore/chord.cpp +++ b/libmscore/chord.cpp @@ -1268,7 +1268,6 @@ void Chord::layout() qreal lineDist = tab->lineDistance().val(); foreach(Note* note, _notes) { note->layout(); -// note->setPos(0.0, _spatium * (tab->upsideDown() ? tab->lines()-note->string()-1 : note->string()) * lineDist); note->setPos(0.0, _spatium * tab->physStringToVisual(note->string()) * lineDist); note->layout2(); } @@ -1311,6 +1310,7 @@ void Chord::layout() _tabDur->setDuration(durationType().type(), dots()); _tabDur->setParent(this); // needed? _tabDur->setTrack(track()); + _tabDur->layout(); } else { // symbol not needed: if exists, delete delete _tabDur; @@ -1491,6 +1491,8 @@ const QRectF& Chord::bbox() const bb |= _stemSlash->bbox().translated(_stemSlash->pos()); if (_tremolo) bb |= _tremolo->bbox().translated(_tremolo->pos()); + if(staff()->isTabStaff() && _tabDur) + bb |= _tabDur->bbox().translated(_tabDur->pos()); setbbox(bb); return Element::bbox(); } diff --git a/libmscore/chordrest.cpp b/libmscore/chordrest.cpp index 4c18ffd446..74a9a35b52 100644 --- a/libmscore/chordrest.cpp +++ b/libmscore/chordrest.cpp @@ -113,6 +113,8 @@ ChordRest::~ChordRest() delete a; foreach(Lyrics* l, _lyricsList) delete l; + if(_tabDur) + delete _tabDur; } //--------------------------------------------------------- diff --git a/libmscore/stafftype.cpp b/libmscore/stafftype.cpp index eb5160489d..cfcbf0bc37 100644 --- a/libmscore/stafftype.cpp +++ b/libmscore/stafftype.cpp @@ -706,15 +706,15 @@ TabDurationSymbol::TabDurationSymbol(const TabDurationSymbol& e) //--------------------------------------------------------- // layout //--------------------------------------------------------- -/* + void TabDurationSymbol::layout() { QFontMetricsF fm(_tab->durationFont()); qreal mags = magS(); qreal w = fm.width(_text); - _bbox = QRectF(0.0, _tab->durationBoxY() * mags, w * mags, _tab->durationBoxH() * mags); + setbbox(QRectF(0.0, _tab->durationBoxY() * mags, w * mags, _tab->durationBoxH() * mags) ); } -*/ + //--------------------------------------------------------- // draw //--------------------------------------------------------- diff --git a/libmscore/stafftype.h b/libmscore/stafftype.h index 4781350e26..a0768d3c89 100644 --- a/libmscore/stafftype.h +++ b/libmscore/stafftype.h @@ -312,6 +312,7 @@ class TabDurationSymbol : public Element { virtual TabDurationSymbol* clone() const { return new TabDurationSymbol(*this); } virtual void draw(QPainter*) const; virtual bool isEditable() const { return false; } + virtual void layout(); virtual ElementType type() const { return TAB_DURATION_SYMBOL; } void setDuration(TDuration::DurationType type, int dots) { buildText(type, dots); }