]> git.lyx.org Git - lyx.git/blobdiff - src/changes.C
Restore the version number position on the splash screen
[lyx.git] / src / changes.C
index e3cbdf5270299d1cea95552b1ac51fe12447fb7e..4c3ca6d9776b1e357391bb41121d31e8ce263994 100644 (file)
@@ -53,8 +53,16 @@ bool Change::isSimilarTo(Change const & change)
 
 bool operator==(Change const & l, Change const & r)
 {
-       return l.type == r.type &&
-              l.author == r.author &&
+       if (l.type != r.type) {
+               return false;
+       }
+
+       // two changes of type UNCHANGED are always equal
+       if (l.type == Change::UNCHANGED) {
+               return true;
+       }
+       
+       return l.author == r.author &&
               l.changetime == r.changetime;
 }
 
@@ -77,18 +85,6 @@ bool operator!=(Changes::Range const & r1, Changes::Range const & r2)
 }
 
 
-bool Changes::Range::contains(Range const & r) const
-{
-       return r.start >= start && r.end <= end;
-}
-
-
-bool Changes::Range::contains(pos_type const pos) const
-{
-       return pos >= start && pos < end;
-}
-
-
 bool Changes::Range::intersects(Range const & r) const
 {
        return r.start < end && r.end > start; // end itself is not in the range!
@@ -103,8 +99,8 @@ void Changes::set(Change const & change, pos_type const pos)
 
 void Changes::set(Change const & change, pos_type const start, pos_type const end)
 {
-       if (lyxerr.debugging(Debug::CHANGES)) {
-               lyxerr[Debug::CHANGES] << "setting change (type: " << change.type
+       if (change.type != Change::UNCHANGED) {
+               LYXERR(Debug::CHANGES) << "setting change (type: " << change.type
                        << ", author: " << change.author << ", time: " << change.changetime
                        << ") in range (" << start << ", " << end << ")" << endl;
        }
@@ -123,17 +119,15 @@ void Changes::set(Change const & change, pos_type const start, pos_type const en
                if (it->range.end > start) {
                        pos_type oldEnd = it->range.end;
                        it->range.end = start;
-                       if (lyxerr.debugging(Debug::CHANGES)) {
-                               lyxerr[Debug::CHANGES] << "  cutting tail of type " << it->change.type
-                                       << " resulting in range (" << it->range.start << ", "
-                                       << it->range.end << ")" << endl;
-                       }
+
+                       LYXERR(Debug::CHANGES) << "  cutting tail of type " << it->change.type
+                               << " resulting in range (" << it->range.start << ", "
+                               << it->range.end << ")" << endl;
+
                        ++it;
                        if (oldEnd >= end) {
-                               if (lyxerr.debugging(Debug::CHANGES)) {
-                                       lyxerr[Debug::CHANGES] << "  inserting tail in range ("
-                                               << end << ", " << oldEnd << ")" << endl;
-                               }
+                               LYXERR(Debug::CHANGES) << "  inserting tail in range ("
+                                       << end << ", " << oldEnd << ")" << endl;
                                it = table_.insert(it, ChangeRange((it-1)->change, Range(end, oldEnd)));
                        }
                        continue;
@@ -143,9 +137,7 @@ void Changes::set(Change const & change, pos_type const start, pos_type const en
        }
 
        if (change.type != Change::UNCHANGED) {
-               if (lyxerr.debugging(Debug::CHANGES)) {
-                       lyxerr[Debug::CHANGES] << "  inserting change" << endl;
-               }
+               LYXERR(Debug::CHANGES) << "  inserting change" << endl;
                it = table_.insert(it, ChangeRange(change, Range(start, end)));
                ++it;
        }
@@ -153,10 +145,8 @@ void Changes::set(Change const & change, pos_type const start, pos_type const en
        for (; it != table_.end(); ) {
                // new change 'contains' existing change
                if (newRange.contains(it->range)) {
-                       if (lyxerr.debugging(Debug::CHANGES)) {
-                               lyxerr[Debug::CHANGES] << "  removing subrange ("
-                                       << it->range.start << ", " << it->range.end << ")" << endl;
-                       }
+                       LYXERR(Debug::CHANGES) << "  removing subrange ("
+                               << it->range.start << ", " << it->range.end << ")" << endl;
                        it = table_.erase(it);
                        continue;
                }
@@ -168,11 +158,9 @@ void Changes::set(Change const & change, pos_type const start, pos_type const en
 
                // new change intersects with existing change
                it->range.start = end;
-               if (lyxerr.debugging(Debug::CHANGES)) {
-                       lyxerr[Debug::CHANGES] << "  cutting head of type "
-                               << it->change.type << " resulting in range ("
-                               << end << ", " << it->range.end << ")" << endl;
-               }
+               LYXERR(Debug::CHANGES) << "  cutting head of type "
+                       << it->change.type << " resulting in range ("
+                       << end << ", " << it->range.end << ")" << endl;
                break; // no need for another iteration
        }
 
@@ -182,9 +170,7 @@ void Changes::set(Change const & change, pos_type const start, pos_type const en
 
 void Changes::erase(pos_type const pos)
 {
-       if (lyxerr.debugging(Debug::CHANGES)) {
-               lyxerr[Debug::CHANGES] << "Erasing change at position " << pos << endl;
-       }
+       LYXERR(Debug::CHANGES) << "Erasing change at position " << pos << endl;
 
        ChangeTable::iterator it = table_.begin();
        ChangeTable::iterator end = table_.end();
@@ -206,8 +192,8 @@ void Changes::erase(pos_type const pos)
 
 void Changes::insert(Change const & change, lyx::pos_type pos)
 {
-       if (lyxerr.debugging(Debug::CHANGES)) {
-               lyxerr[Debug::CHANGES] << "Inserting change of type " << change.type
+       if (change.type != Change::UNCHANGED) {
+               LYXERR(Debug::CHANGES) << "Inserting change of type " << change.type
                        << " at position " << pos << endl;
        }
 
@@ -230,11 +216,10 @@ void Changes::insert(Change const & change, lyx::pos_type pos)
 }
 
 
-Change const Changes::lookup(pos_type const pos) const
+Change const Changes::lookup(pos_type const pos) const
 {
-       if (table_.empty()) {
-               return Change(Change::UNCHANGED);
-       }
+       static Change const noChange = Change(Change::UNCHANGED);
+               
        ChangeTable::const_iterator it = table_.begin();
        ChangeTable::const_iterator const end = table_.end();
 
@@ -243,7 +228,7 @@ Change const Changes::lookup(pos_type const pos) const
                        return it->change;
        }
 
-       return Change(Change::UNCHANGED);
+       return noChange;
 }
 
 
@@ -254,12 +239,10 @@ bool Changes::isChanged(pos_type const start, pos_type const end) const
 
        for (; it != itend; ++it) {
                if (it->range.intersects(Range(start, end))) {
-                       if (lyxerr.debugging(Debug::CHANGES)) {
-                               lyxerr[Debug::CHANGES] << "found intersection of range ("
-                                       << start << ", " << end << ") with ("
-                                       << it->range.start << ", " << it->range.end
-                                       << ") of type " << it->change.type << endl;
-                       }
+                       LYXERR(Debug::CHANGES) << "found intersection of range ("
+                               << start << ", " << end << ") with ("
+                               << it->range.start << ", " << it->range.end
+                               << ") of type " << it->change.type << endl;
                        return true;
                }
        }
@@ -269,24 +252,16 @@ bool Changes::isChanged(pos_type const start, pos_type const end) const
 
 void Changes::merge()
 {
-       if (lyxerr.debugging(Debug::CHANGES)) {
-               lyxerr[Debug::CHANGES] << "merging changes..." << endl;
-       }
-
        ChangeTable::iterator it = table_.begin();
 
        while (it != table_.end()) {
-               if (lyxerr.debugging(Debug::CHANGES)) {
-                       lyxerr[Debug::CHANGES] << "  found change of type " << it->change.type
-                               << " and range (" << it->range.start << ", " << it->range.end
-                               << ")" << endl;
-               }
+               LYXERR(Debug::CHANGES) << "found change of type " << it->change.type
+                       << " and range (" << it->range.start << ", " << it->range.end
+                       << ")" << endl;
 
                if (it->range.start == it->range.end) {
-                       if (lyxerr.debugging(Debug::CHANGES)) {
-                               lyxerr[Debug::CHANGES] << "  removing empty range for pos "
-                                       << it->range.start << endl;
-                       }
+                       LYXERR(Debug::CHANGES) << "removing empty range for pos "
+                               << it->range.start << endl;
 
                        table_.erase(it);
                        // start again
@@ -298,11 +273,10 @@ void Changes::merge()
                        break;
 
                if (it->change.isSimilarTo((it + 1)->change) && it->range.end == (it + 1)->range.start) {
-                       if (lyxerr.debugging(Debug::CHANGES)) {
-                               lyxerr[Debug::CHANGES] << "  merging ranges (" << it->range.start << ", "
-                                       << it->range.end << ") and (" << (it + 1)->range.start << ", "
-                                       << (it + 1)->range.end << ")" << endl;
-                       }
+                       LYXERR(Debug::CHANGES) << "merging ranges (" << it->range.start << ", "
+                               << it->range.end << ") and (" << (it + 1)->range.start << ", "
+                               << (it + 1)->range.end << ")" << endl;
+
                        (it + 1)->range.start = it->range.start;
                        (it + 1)->change.changetime = max(it->change.changetime,
                                                          (it + 1)->change.changetime);