summaryrefslogtreecommitdiff
path: root/muse2/muse/midiedit/scoreedit.h
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/midiedit/scoreedit.h')
-rw-r--r--muse2/muse/midiedit/scoreedit.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/muse2/muse/midiedit/scoreedit.h b/muse2/muse/midiedit/scoreedit.h
index 71b672a9..0e61f066 100644
--- a/muse2/muse/midiedit/scoreedit.h
+++ b/muse2/muse/midiedit/scoreedit.h
@@ -35,6 +35,7 @@
#include "mtscale_flo.h"
#include "steprec.h"
#include "cleftypes.h"
+#include "helper.h"
#include <set>
#include <map>
@@ -489,6 +490,7 @@ enum staff_mode_t
struct staff_t
{
set<Part*> parts;
+ set<int> part_indices;
ScoreEventList eventlist;
ScoreItemList itemlist;
@@ -532,6 +534,7 @@ struct staff_t
clef=clef_;
parts=parts_;
parent=parent_;
+ update_part_indices();
}
bool cleanup_parts();
@@ -540,6 +543,9 @@ struct staff_t
void read_status(Xml& xml);
void write_status(int level, Xml& xml) const;
+
+ void update_parts(); //re-populates the set<Part*> from the set<int>
+ void update_part_indices(); //re-populates the set<int> from the set<Part*>
};
list<int> calc_accidentials(key_enum key, clef_t clef, key_enum next_key=KEY_C);
@@ -643,6 +649,8 @@ class ScoreCanvas : public View
float y_scroll_pos;
Part* selected_part;
+ int selected_part_index;
+
int last_len;
int new_len; //when zero or negative, last_len is used
@@ -728,7 +736,8 @@ class ScoreCanvas : public View
void set_steprec(bool);
void set_midiin(bool);
-
+
+ void update_parts(); //re-populates the set<Part*>s from the set<int>s
signals:
void xscroll_changed(int);
void yscroll_changed(int);
@@ -772,7 +781,7 @@ class ScoreCanvas : public View
void set_last_len(int l) {last_len=l;}
Part* get_selected_part() {return selected_part;}
- void set_selected_part(Part* p) {selected_part=p;}
+ void set_selected_part(Part* p) {selected_part=p; if (selected_part) selected_part_index=partToIndex(selected_part);}
set<Part*> get_all_parts();