summaryrefslogtreecommitdiff
path: root/muse2
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2011-06-06 12:31:55 +0000
committerFlorian Jung <flo@windfisch.org>2011-06-06 12:31:55 +0000
commit5e9533d5620f312b3727122c1680d97cf6ca2ff1 (patch)
treee4efe11e58a43e12d4b6f89c46048e54d47ca1b8 /muse2
parente2e536eab73dc7d1e2294078628eea80ecf6d120 (diff)
speeded up list editor
Diffstat (limited to 'muse2')
-rw-r--r--muse2/muse/liste/listedit.cpp14
-rw-r--r--muse2/muse/midiedit/scoreedit.cpp22
-rw-r--r--muse2/muse/undo.cpp1
3 files changed, 17 insertions, 20 deletions
diff --git a/muse2/muse/liste/listedit.cpp b/muse2/muse/liste/listedit.cpp
index 080ee01c..5f73a3ba 100644
--- a/muse2/muse/liste/listedit.cpp
+++ b/muse2/muse/liste/listedit.cpp
@@ -852,7 +852,7 @@ void ListEdit::cmd(int cmd)
bool found = false;
for (int row = 0; row < liste->topLevelItemCount(); ++row)
{
- QTreeWidgetItem* i = liste->topLevelItem(row);
+ QTreeWidgetItem* i = liste->topLevelItem(row);
EventListItem *item = (EventListItem *) i;
if (i->isSelected() || item->event.selected())
{
@@ -862,7 +862,8 @@ void ListEdit::cmd(int cmd)
}
if(!found)
break;
- song->startUndo();
+
+ Undo operations;
EventListItem *deletedEvent=NULL;
for (int row = 0; row < liste->topLevelItemCount(); ++row) {
@@ -871,8 +872,8 @@ void ListEdit::cmd(int cmd)
if (i->isSelected() || item->event.selected()) {
deletedEvent=item;
- // Indicate no undo, and do port controller values and clone parts.
- audio->msgDeleteEvent(item->event, item->part, false, true, true);
+ // Port controller values and clone parts.
+ operations.push_back(UndoOp(UndoOp::DeleteEvent,item->event, item->part, true, true));
}
}
@@ -895,9 +896,8 @@ void ListEdit::cmd(int cmd)
}
}
selectedTick=nextTick;
- song->endUndo(SC_EVENT_MODIFIED);
- //printf("selected tick = %d\n", selectedTick);
- //emit selectionChanged();
+
+ song->applyOperationGroup(operations);
break;
}
}
diff --git a/muse2/muse/midiedit/scoreedit.cpp b/muse2/muse/midiedit/scoreedit.cpp
index ca88d36a..309342ae 100644
--- a/muse2/muse/midiedit/scoreedit.cpp
+++ b/muse2/muse/midiedit/scoreedit.cpp
@@ -4443,7 +4443,7 @@ void staff_t::update_part_indices()
-//hint: recalculating event- and itemlists "from zero"
+//note: recalculating event- and itemlists "from zero"
// could happen in realtime, as it is pretty fast.
// however, this adds unneccessary cpu usage.
// it is NO problem to recalc the stuff "from zero"
@@ -4456,25 +4456,21 @@ void staff_t::update_part_indices()
* between, for example, when a cis is tied to a des
*
* CURRENT TODO
- * o speed up list editor
- * o insert empty measure should also work inside parts
- * o canvas editor: create clone via "alt+drag" moves window instead
- *
- * o rename stuff: UndoOp -> Operation, Undo -> OpList,
- * UndoType -> OpType, iUndoOp, riUndoOp -> iOperation,
- * undo.cpp/.h -> operations.cpp/.h
+ * o remove functions for disabling key/sigmap
* o either remove these "hidden notes", or deal with them in the score editor
+ * o insert empty measure should also work inside parts, that is,
+ * move notes _within_ parts
+ *
+ * IMPORTANT TODO
+ * o canvas editor: create clone via "alt+drag" moves window instead
* o investigate with valgrind
* o controller view in score editor
* o deal with expanding parts
* o fix sigedit boxes
- * o remove functions for disabling key/sigmap
- * o mastertrack editor: key-combobox is buggy
- * o drum editor: channel-stuff
- *
- * IMPORTANT TODO
* o solo button
* o grand staff brace
+ * o mastertrack editor: key-combobox is buggy
+ * o drum editor: channel-stuff
* o do partial recalculating; recalculating can take pretty long
* (0,5 sec) when displaying a whole song in scores
* o transpose etc. must also transpose key-pressure events
diff --git a/muse2/muse/undo.cpp b/muse2/muse/undo.cpp
index c5b211b2..0c05ef08 100644
--- a/muse2/muse/undo.cpp
+++ b/muse2/muse/undo.cpp
@@ -77,6 +77,7 @@ void UndoOp::dump()
case ModifyMarker:
case AddKey:
case DeleteKey:
+ case DoNothing:
break;
}
}