From 1270ad31e827ef3a5c52cff2800d8206e91f727a Mon Sep 17 00:00:00 2001
From: Kai Willadsen <kai.willadsen@gmail.com>
Date: Mon, 17 May 2010 17:40:22 +1000
Subject: [PATCH] Add has_mergeable_changes API

---
 meld/diffutil.py |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/meld/diffutil.py b/meld/diffutil.py
index b1d4c7b..09825ee 100644
--- a/meld/diffutil.py
+++ b/meld/diffutil.py
@@ -101,6 +101,14 @@ class Differ(gobject.GObject):
                                         self._consume_blank_lines(c[1], texts, 1, 2))
             self._merge_cache = [x for x in self._merge_cache if x != (None, None)]
 
+        mergeable0, mergeable1 = False, False
+        for (c0, c1) in self._merge_cache:
+            mergeable0 = mergeable0 or (c0 and c0[0] != 'conflict')
+            mergeable1 = mergeable1 or (c1 and c1[0] != 'conflict')
+            if mergeable0 and mergeable1:
+                break
+        self._has_mergeable_changes = (mergeable0, mergeable1)
+
         self._update_line_cache()
         self.emit("diffs-changed")
 
@@ -219,6 +227,17 @@ class Differ(gobject.GObject):
     def diff_count(self):
         return len(self._merge_cache)
 
+    def has_mergeable_changes(self, which):
+        if which == 0:
+            return (False, self._has_mergeable_changes[0])
+        elif which == 1:
+            if self.num_sequences == 2:
+                return (self._has_mergeable_changes[0], False)
+            else:
+                return self._has_mergeable_changes
+        else: # which == 2
+            return (self._has_mergeable_changes[1], False)
+
     def _change_sequence(self, which, sequence, startidx, sizechange, texts):
         diffs = self.diffs[which]
         lines_added = [0,0,0]
-- 
1.6.6.1

