本文整理汇总了C++中DocumentUndo::nextUndoLabel方法的典型用法代码示例。如果您正苦于以下问题:C++ DocumentUndo::nextUndoLabel方法的具体用法?C++ DocumentUndo::nextUndoLabel怎么用?C++ DocumentUndo::nextUndoLabel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DocumentUndo
的用法示例。
在下文中一共展示了DocumentUndo::nextUndoLabel方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onExecute
void UndoCommand::onExecute(Context* context)
{
ContextWriter writer(context);
Document* document(writer.document());
DocumentUndo* undo = document->undoHistory();
Sprite* sprite = document->sprite();
SpritePosition spritePosition;
const bool gotoModified =
Preferences::instance().undo.gotoModified();
if (gotoModified) {
SpritePosition currentPosition(writer.site()->layerIndex(),
writer.site()->frame());
if (m_type == Undo)
spritePosition = undo->nextUndoSpritePosition();
else
spritePosition = undo->nextRedoSpritePosition();
if (spritePosition != currentPosition) {
current_editor->setLayer(sprite->indexToLayer(spritePosition.layerIndex()));
current_editor->setFrame(spritePosition.frame());
// Draw the current layer/frame (which is not undone yet) so the
// user can see the doUndo/doRedo effect.
current_editor->drawSpriteClipped(
gfx::Region(gfx::Rect(0, 0, sprite->width(), sprite->height())));
current_editor->manager()->flipDisplay();
base::this_thread::sleep_for(0.01);
}
}
StatusBar* statusbar = StatusBar::instance();
if (statusbar)
statusbar->showTip(1000, "%s %s",
(m_type == Undo ? "Undid": "Redid"),
(m_type == Undo ?
undo->nextUndoLabel().c_str():
undo->nextRedoLabel().c_str()));
// Effectively undo/redo.
if (m_type == Undo)
undo->undo();
else
undo->redo();
// After redo/undo, we retry to change the current SpritePosition
// (because new frames/layers could be added, positions that we
// weren't able to reach before the undo).
if (gotoModified) {
SpritePosition currentPosition(
writer.site()->layerIndex(),
writer.site()->frame());
if (spritePosition != currentPosition) {
current_editor->setLayer(sprite->indexToLayer(spritePosition.layerIndex()));
current_editor->setFrame(spritePosition.frame());
}
}
document->generateMaskBoundaries();
document->setExtraCel(ExtraCelRef(nullptr));
update_screen_for_document(document);
set_current_palette(writer.palette(), false);
}