]> git.lyx.org Git - lyx.git/blobdiff - src/Changes.cpp
Remove special code for Qt5 to manage HiDPI. It's not needed anymore and leads to...
[lyx.git] / src / Changes.cpp
index 832ccacd76b9dd6db3d181dae26fd5bd6db64e0d..877c3f104281fec2c8cee5b3f4b31b10e67be6a6 100644 (file)
@@ -138,6 +138,8 @@ void Changes::set(Change const & change, pos_type const start, pos_type const en
                        << ", author: " << change.author 
                        << ", time: " << long(change.changetime)
                        << ") in range (" << start << ", " << end << ")");
+               if (!isChanged())
+                       is_update_required_ = true;
        }
 
        Range const newRange(start, end);
@@ -298,8 +300,21 @@ bool Changes::isChanged(pos_type const start, pos_type const end) const
 }
 
 
+bool Changes::isChanged() const
+{
+       ChangeTable::const_iterator it = table_.begin();
+       ChangeTable::const_iterator const itend = table_.end();
+       for (; it != itend; ++it) {
+               if (it->change.changed())
+                       return true;
+       }
+       return false;
+}
+
+
 void Changes::merge()
 {
+       bool merged = false;
        ChangeTable::iterator it = table_.begin();
 
        while (it != table_.end()) {
@@ -312,6 +327,7 @@ void Changes::merge()
                                << it->range.start);
 
                        table_.erase(it);
+                       merged = true;
                        // start again
                        it = table_.begin();
                        continue;
@@ -330,6 +346,7 @@ void Changes::merge()
                        (it + 1)->change.changetime = max(it->change.changetime,
                                                          (it + 1)->change.changetime);
                        table_.erase(it);
+                       merged = true;
                        // start again
                        it = table_.begin();
                        continue;
@@ -337,6 +354,8 @@ void Changes::merge()
 
                ++it;
        }
+       if (merged && !isChanged())
+               is_update_required_ = true;
 }
 
 
@@ -501,7 +520,7 @@ void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer,
                        // ΒΆ U+00B6 PILCROW SIGN
                        str.push_back(0xb6);
                docstring const & author = author_list.get(it->change.author).name();
-               Toc::iterator it = change_list->item(0, author);
+               Toc::iterator it = TocBackend::findItem(*change_list, 0, author);
                if (it == change_list->end()) {
                        change_list->push_back(TocItem(dit, 0, author, true));
                        change_list->push_back(TocItem(dit, 1, str, output_active,
@@ -517,4 +536,15 @@ void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer,
        }
 }
 
+
+void Changes::updateBuffer(Buffer const & buf)
+{
+       is_update_required_ = false;
+       if (!buf.areChangesPresent() && isChanged())
+               buf.setChangesPresent(true);
+}
+
+
+
+
 } // namespace lyx