[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