From kde-commits Thu May 31 23:39:06 2012 From: C. Boemann Date: Thu, 31 May 2012 23:39:06 +0000 To: kde-commits Subject: [calligra] /: Make sure cut doesn't produce two undo steps Message-Id: <20120531233906.61A8FA60A9 () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=133850772813468 Git commit 43de093956051c98abc814ede335bb317dce3f08 by C. Boemann. Committed on 01/06/2012 at 01:37. Pushed by boemann into branch 'master'. Make sure cut doesn't produce two undo steps BUG: 260162 M +10 -11 libs/kotext/KoTextEditor.h M +0 -1 plugins/textshape/CMakeLists.txt M +6 -2 plugins/textshape/TextTool.cpp D +0 -53 plugins/textshape/commands/TextCutCommand.cpp D +0 -42 plugins/textshape/commands/TextCutCommand.h http://commits.kde.org/calligra/43de093956051c98abc814ede335bb317dce3f08 diff --git a/libs/kotext/KoTextEditor.h b/libs/kotext/KoTextEditor.h index 363b279..afc1e0d 100644 --- a/libs/kotext/KoTextEditor.h +++ b/libs/kotext/KoTextEditor.h @@ -318,14 +318,19 @@ public slots: = const QTextDocument *document() const; = - //Starts a new custom command. Everything between these two is one cus= tom command. These should not be called from whithin a KUndo2Command -// void beginCustomCommand(); -// void endCustomCommand(); - - //Same as Qt, only to be used inside KUndo2Commands + /// Same as Qt, only to be used inside KUndo2Commands KUndo2Command *beginEditBlock(QString title =3D QString()); void endEditBlock(); = + /** + * Delete one character in the specified direction or a selection. + * Warning: From the outside this method should only be used with a pa= rent command + * and only if there is a selection + * @param previous should be true if act like backspace + */ + void deleteChar(bool previous, KUndo2Command *parent =3D 0); + + bool hasComplexSelection() const; = /** @@ -475,12 +480,6 @@ signals: void textFormatChanged(); = protected: - /** - * Delete one character in the specified direction or a selection. - * @param previous should be true if act like backspace - */ - void deleteChar(bool previous, KUndo2Command *parent =3D 0); - void recursivelyVisitSelection(QTextFrame::iterator it, KoTextVisitor = &visitor) const; = private: diff --git a/plugins/textshape/CMakeLists.txt b/plugins/textshape/CMakeList= s.txt index 911c632..6253323 100644 --- a/plugins/textshape/CMakeLists.txt +++ b/plugins/textshape/CMakeLists.txt @@ -89,7 +89,6 @@ SET ( textshape_SRCS dialogs/ListLevelChooser.cpp = commands/ChangeListLevelCommand.cpp - commands/TextCutCommand.cpp commands/ShowChangesCommand.cpp commands/AcceptChangeCommand.cpp commands/RejectChangeCommand.cpp diff --git a/plugins/textshape/TextTool.cpp b/plugins/textshape/TextTool.cpp index 9c11f39..330a1b5 100644 --- a/plugins/textshape/TextTool.cpp +++ b/plugins/textshape/TextTool.cpp @@ -34,7 +34,6 @@ #include "dialogs/FontDia.h" #include "dialogs/TableDialog.h" #include "dialogs/SimpleTableWidget.h" -#include "commands/TextCutCommand.h" #include "commands/AutoResizeCommand.h" #include "commands/ChangeListLevelCommand.h" #include "FontSizeAction.h" @@ -1099,7 +1098,12 @@ bool TextTool::paste() = void TextTool::cut() { - m_textEditor.data()->addCommand(new TextCutCommand(this)); + if (m_textEditor.data()->hasSelection()) { + copy(); + KUndo2Command *topCmd =3D m_textEditor.data()->beginEditBlock(i18n= c("(qtundo-format)", "Cut")); + m_textEditor.data()->deleteChar(false, topCmd); + m_textEditor.data()->endEditBlock(); + } } = QStringList TextTool::supportedPasteMimeTypes() const diff --git a/plugins/textshape/commands/TextCutCommand.cpp b/plugins/textsh= ape/commands/TextCutCommand.cpp deleted file mode 100644 index b2c68e6..0000000 --- a/plugins/textshape/commands/TextCutCommand.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - This file is part of the KDE project - * Copyright (C) 2009 Pierre Stirnweiss - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public Licen= se - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA.*/ - -#include "TextCutCommand.h" - -#include -#include -#include -#include - -TextCutCommand::TextCutCommand(TextTool *tool, KUndo2Command *parent) : - KUndo2Command (parent), - m_tool(tool), - m_first(true) -{ - setText(i18nc("(qtundo-format)", "Cut")); -} - -void TextCutCommand::undo() -{ - KUndo2Command::undo(); -} - -void TextCutCommand::redo() -{ - if (!m_first) { - KUndo2Command::redo(); - } else { - m_first =3D false; - m_tool->copy(); - KoTextEditor *te =3D m_tool->m_textEditor.data(); - if (te =3D=3D 0) - return; - - te->deleteChar(); - } -} diff --git a/plugins/textshape/commands/TextCutCommand.h b/plugins/textshap= e/commands/TextCutCommand.h deleted file mode 100644 index ebad6f8..0000000 --- a/plugins/textshape/commands/TextCutCommand.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - This file is part of the KDE project - * Copyright (C) 2009 Pierre Stirnweiss - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public Licen= se - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA.*/ - -#ifndef TEXTCUTCOMMAND_H -#define TEXTCUTCOMMAND_H - -#include - -class TextTool; - -class TextCutCommand : public KUndo2Command -{ -public: - - TextCutCommand(TextTool *tool, KUndo2Command* parent =3D 0); - - virtual void undo(); - virtual void redo(); - -private: - - TextTool *m_tool; - bool m_first; -}; - -#endif // TEXTCUTCOMMAND_H