]> git.lyx.org Git - features.git/commitdiff
#7740 Add undo for change of text language with LFUN_BUFFER_LANGUAGE
authorStephan Witt <switt@lyx.org>
Tue, 23 Aug 2011 10:22:14 +0000 (10:22 +0000)
committerStephan Witt <switt@lyx.org>
Tue, 23 Aug 2011 10:22:14 +0000 (10:22 +0000)
When a document is not multi-lingual the text contents is changed
to the new language. This should be recorded for Undo.
Because Undo wants a cursor the implemantation has to be
moved to the BufferView class.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39508 a592a061-630c-0410-9148-cb99ea01b6c8

src/Buffer.cpp
src/BufferView.cpp

index 071c5312cfa25f885b46bfc769aebd5d0f63cac1..bbb5903b021b17e0a00c1322493937bec6f3dd1b 100644 (file)
@@ -2333,18 +2333,6 @@ void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
                break;
        }
 
-       case LFUN_BUFFER_LANGUAGE: {
-               Language const * oldL = params().language;
-               Language const * newL = languages.getLanguage(argument);
-               if (!newL || oldL == newL)
-                       break;
-               if (oldL->rightToLeft() == newL->rightToLeft() && !isMultiLingual()) {
-                       changeLanguage(oldL, newL);
-                       dr.forceBufferUpdate();
-               }
-               break;
-       }
-
        default:
                dispatched = false;
                break;
index 8fa8a036bccaf95c33b30c12d4c69026bd5f9eca..19f78a19d799ed563c365d813c339d821d25ebd6 100644 (file)
@@ -1892,6 +1892,24 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                break;
        }
 
+       // FIXME:
+       // The change of language of buffer belongs to the Buffer class.
+       // We have to do it here because we need a cursor for Undo.
+       // When Undo::recordUndoBufferParams() is implemented someday
+       // LFUN_BUFFER_LANGUAGE should be handled by the Buffer class.
+       case LFUN_BUFFER_LANGUAGE: {
+               Language const * oldL = buffer_.params().language;
+               Language const * newL = languages.getLanguage(argument);
+               if (!newL || oldL == newL)
+                       break;
+               if (oldL->rightToLeft() == newL->rightToLeft() && !buffer_.isMultiLingual()) {
+                       cur.recordUndoFullDocument();
+                       buffer_.changeLanguage(oldL, newL);
+                       dr.forceBufferUpdate();
+               }
+               break;
+       }
+
        default:
                // OK, so try the Buffer itself...
                buffer_.dispatch(cmd, dr);