]> git.lyx.org Git - features.git/commitdiff
fix bug 2212: First change is skipped in Merge changes... dialog
authorMartin Vermeer <martin.vermeer@hut.fi>
Fri, 10 Mar 2006 16:46:03 +0000 (16:46 +0000)
committerMartin Vermeer <martin.vermeer@hut.fi>
Fri, 10 Mar 2006 16:46:03 +0000 (16:46 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13331 a592a061-630c-0410-9148-cb99ea01b6c8

src/BufferView_pimpl.C
src/ChangeLog
src/frontends/controllers/ChangeLog
src/frontends/controllers/ControlChanges.C
src/frontends/controllers/ControlChanges.h
src/frontends/gtk/ChangeLog
src/frontends/gtk/GChanges.C
src/frontends/qt2/ChangeLog
src/frontends/qt2/QChanges.C
src/frontends/xforms/ChangeLog
src/frontends/xforms/FormChanges.C

index 776bb78c08623b8056f0e0afa82bb8233467a417..d1529f798ef922ba9bd663a41e1eba58b118df31 100644 (file)
@@ -922,12 +922,7 @@ void BufferView::Pimpl::trackChanges()
                buffer_->undostack().clear();
        } else {
                cursor_.setCursor(doc_iterator_begin(buffer_->inset()));
-               bool const found = lyx::find::findNextChange(bv_);
-               if (found) {
-                       // We reset the cursor to the start of the
-                       // document, since the Changes Dialog is going
-                       // to search for the next change anyway.
-                       cursor_.setCursor(doc_iterator_begin(buffer_->inset()));
+               if (lyx::find::findNextChange(bv_)) {
                        owner_->getDialogs().show("changes");
                        return;
                }
@@ -1228,7 +1223,8 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & cmd)
        }
 
        case LFUN_MERGE_CHANGES:
-               owner_->getDialogs().show("changes");
+               if (lyx::find::findNextChange(bv_))
+                       owner_->getDialogs().show("changes");
                break;
 
        case LFUN_ACCEPT_ALL_CHANGES: {
index 0ab399626e00a5d71362aa45f8be9363a05f0599..e46c766da7b9e9595844794ea63ba164ca69f51e 100644 (file)
@@ -1,3 +1,8 @@
+2006-03-10  Martin Vermeer  <martin.vermeer@hut.fi>
+
+       * BufferView_pimpl.C: fix bug 2212: First change is skipped is
+       "Merge changes..." dialog
+
 2006-03-10  Jürgen Spitzmüller  <j.spitzmueller@gmx.de>
 
        * bufferparams.C (writeLaTeX): define \labelitemi with \def. Fixes LaTeX 
@@ -6,7 +11,7 @@
 2006-03-10  Martin Vermeer  <martin.vermeer@hut.fi>
 
        * BufferView.[Ch]:
-        * BufferView_pimpl.[Ch]: 
+       * BufferView_pimpl.[Ch]: 
        * LyXAction.C:
        * debug.[Ch]:
        * rowpainter.C:
index b96aef43cc35f2c2e1f931af28cc9acf8bc8ed82..af0b6456316bed01660c099426f829bf48c2880a 100644 (file)
@@ -1,3 +1,8 @@
+2006-03-10  Martin Vermeer  <martin.vermeer@hut.fi>
+
+       * ControlChanges.C: fix bug 2212: First change is skipped in
+       "Merge changes..." dialog
+
 2006-03-07  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
 
        * tests/pch.h: fix nullstream.hpp location for boost 1.33.0
index ea6b8909cf621543a8136023dded6da3a4136c78..c03ec9845754f973b657ecebef2b9c9b4c2f5147 100644 (file)
@@ -39,6 +39,13 @@ bool ControlChanges::find()
 }
 
 
+bool ControlChanges::changed()
+{
+       Change c(kernel().bufferview()->getCurrentChange());
+       return c.type != Change::UNCHANGED;
+}
+
+
 string const ControlChanges::getChangeDate()
 {
        Change c(kernel().bufferview()->getCurrentChange());
index f146befa450ed5e0836ca83444d1a4f844c59e14..d0425fb5767c7d5fc09d749ca1b2da4ff8b5521c 100644 (file)
@@ -38,6 +38,9 @@ public:
        /// find the next merge chunk and highlight it
        bool find();
 
+       /// Are there changes to be merged at current location?
+       bool changed();
+       
        /// return date of change
        std::string const getChangeDate();
 
index 30b7eadc67ced07f407b202020703bab97dc06f2..3cf01d0a629a0da80400043cb33f6dc59ef4ae54 100644 (file)
@@ -1,3 +1,8 @@
+2006-03-10  Martin Vermeer  <martin.vermeer@hut.fi>
+
+       * GChanges.C: fix bug 2212: First change is skipped in
+               "Merge changes..." dialog
+
 2006-02-20  John Spray  <spray@lyx.org>
        * glade/documents.glade: change "page style" to "page numbering"
          in UI.
index a518b759804424826ba4695fc62bde7cd0e39978..771ac148e0658e2d12d441991ea6ba00f4805ec4 100644 (file)
@@ -63,7 +63,10 @@ void GChanges::doBuild()
 
 void GChanges::update()
 {
-       onNext();
+       if (controller().changed())
+               promptChange();
+       else
+               promptDismiss();
 }
 
 
index 8894d0e6350228aea3e4aa939e30a6b75678821d..914d5f312c40b4c9cd7fe3bf768d8b7a3d6585ef 100644 (file)
@@ -1,3 +1,8 @@
+2006-03-10  Martin Vermeer  <martin.vermeer@hut.fi>
+
+       * QChanges.C: fix bug 2212: First change is skipped in
+        "Merge changes..." dialog
+
 2006-03-10  Georg Baum  <Georg.Baum@post.rwth-aachen.de>
 
        * QWorkArea.C (getClipboard): convert MAC to UNIX line endings on OSX
index 654566e5a3a680ae5bd63326865f86808818f1d5..16a2c1c2303db0205991c98eb5244fc29cfc251b 100644 (file)
@@ -50,14 +50,6 @@ void QChanges::build_dialog()
 
 void QChanges::update_contents()
 {
-       next();
-}
-
-
-void QChanges::next()
-{
-       controller().find();
-
        string text;
        string author(controller().getChangeAuthor());
        string date(controller().getChangeDate());
@@ -71,6 +63,13 @@ void QChanges::next()
 }
 
 
+void QChanges::next()
+{
+       controller().find();
+       update_contents();
+}
+
+
 void QChanges::accept()
 {
        controller().accept();
index 762f8f11a3d54deb035867398b9ed3bcc9d90ae3..1277726d4996b40db625193338a3686150599e10 100644 (file)
@@ -1,3 +1,8 @@
+2006-03-10  Martin Vermeer  <martin.vermeer@hut.fi>
+
+       * FormChanges.C: fix bug 2212: First change is skipped in
+       "Merge changes..." dialog
+
 2006-02-15  Jürgen Spitzmüller  <j.spitzmueller@gmx.de>
 
        * FormCitation.C (input): get rid of the iterator.
index 284ed5e7172a5984f84bf1bf94e8b1a6e669239e..ef275e91d7d45096c9421fbea00f1f85a0be5e13 100644 (file)
@@ -48,35 +48,32 @@ void FormChanges::build()
 
 void FormChanges::update()
 {
-       input(dialog_->button_next, 0);
+       if (!dialog_.get()) return;
+       bool exist = controller().changed();
+       setEnabled(dialog_->button_accept, exist);
+       setEnabled(dialog_->button_reject, exist);
+       setEnabled(dialog_->button_next, exist);
+
+       string const author = exist ? controller().getChangeAuthor() : "";
+       fl_set_object_label(dialog_->text_author, author.c_str());
+
+       string const date = exist ? controller().getChangeDate() : "";
+       fl_set_object_label(dialog_->text_date, date.c_str());
+
+       // Yes, this is needed.
+       fl_redraw_form(form());
 }
 
 
 ButtonPolicy::SMInput FormChanges::input(FL_OBJECT * obj, long)
 {
-       if (obj == dialog_->button_accept) {
+       if (obj == dialog_->button_accept)
                controller().accept();
-
-       } else if (obj == dialog_->button_reject) {
+       else if (obj == dialog_->button_reject)
                controller().reject();
-
-       } else if (obj == dialog_->button_next) {
-
-               bool const exist = controller().find();
-               setEnabled(dialog_->button_accept, exist);
-               setEnabled(dialog_->button_reject, exist);
-               setEnabled(dialog_->button_next, exist);
-
-               string const author = exist ? controller().getChangeAuthor() : "";
-               fl_set_object_label(dialog_->text_author, author.c_str());
-
-               string const date = exist ? controller().getChangeDate() : "";
-               fl_set_object_label(dialog_->text_date, date.c_str());
-
-               // Yes, this is needed.
-               fl_redraw_form(form());
-       }
-
+       else if (obj == dialog_->button_next)
+               controller().find();
+       update();
        return ButtonPolicy::SMI_VALID;
 }