[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: Re: Patch for KPresenter (Undo and Redo with Text Object)
From: Toshitaka Fujioka <toshitaka () kde ! gr ! jp>
Date: 2001-05-24 10:30:54
[Download RAW message or body]
On Tuesday 22 May 2001 19:44, Toshitaka Fujioka wrote:
> Hello,
>
> This patch lets Undo(Ctrl+Z) and Redo(Ctrl+Shift+Z) work while
> I edit Text Object. However, there are two bugs.
[snip]
> 2. Crash assumes that I execute Undo after I select it more than
> one character, and pushed Del or Back Space or Ctrl+X key.
> (Even if this problem doesn't apply a patch, it is generated.)
This problem happened when I selected character from right
to left. I was able to fix a bug.
Please review.
--
Toshitaka Fujioka
http://www.kde.org The K Desktop Environment Project
fujioka@kde.org
http://www.kde.gr.jp Japan KDE User's Group
toshitaka@kde.gr.jp
-- We offer the best Desktop Environment to you. (This is my goal. ;-)) --
["koffice-kpresenter-undo_redo-fix-20010524.diff" (text/plain)]
diff -ur koffice.orig/kpresenter/kpresenter_view.cc koffice/kpresenter/kpresenter_view.cc
--- koffice.orig/kpresenter/kpresenter_view.cc Tue May 22 18:38:48 2001
+++ koffice/kpresenter/kpresenter_view.cc Tue May 22 18:52:45 2001
@@ -305,8 +305,12 @@
/*===============================================================*/
void KPresenterView::editUndo()
{
- page->setToolEditMode( TEM_MOUSE );
- m_pKPresenterDoc->commands()->undo();
+ if ( !page->kTxtObj() ) {
+ page->setToolEditMode( TEM_MOUSE );
+ m_pKPresenterDoc->commands()->undo();
+ } else {
+ page->kTxtObj()->undo();
+ }
}
/*===============================================================*/
diff -ur koffice.orig/kpresenter/ktextedit.cc koffice/kpresenter/ktextedit.cc
--- koffice.orig/kpresenter/ktextedit.cc Tue May 22 18:38:48 2001
+++ koffice/kpresenter/ktextedit.cc Thu May 24 19:26:15 2001
@@ -347,10 +347,7 @@
case Key_E:
moveCursor( MoveEnd, e->state() & ShiftButton, FALSE );
break;
- case Key_Z:
- undo();
- break;
- case Key_Y:
+ case Key_Z: // Works fine with "Ctrl + Shift + Z". (Redo)
redo();
break;
}
@@ -2643,6 +2640,13 @@
void KTextEditString::insert( int index, const QString &s, KTextEditFormat *f )
{
int os = data.size();
+
+ // When I select (form right to left) character and eliminate (Ctrl+X or Del or Back Space key)
+ // it and execute Undo, digit value of "index (cursor position)" is digit value before
+ // eliminating character. Therefore I subtract "s.length()" from "index".
+ if ( data.size() > 0 && s != " " && data.size() + s.length() == index + 1 )
+ index -= s.length();
+
data.resize( data.size() + s.length() );
if ( index < os ) {
memmove( data.data() + index + s.length(), data.data() + index,
_______________________________________________
Koffice-devel mailing list
Koffice-devel@master.kde.org
http://master.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic