[meld] Avoid flash of pre-merging text in auto-merge mode
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld] Avoid flash of pre-merging text in auto-merge mode
- Date: Tue, 25 Sep 2012 20:44:51 +0000 (UTC)
commit ff6af6fa1e5ea4ff2834f444ee98ade57b2e244a
Author: Kai Willadsen <kai willadsen gmail com>
Date: Tue Sep 25 05:33:52 2012 +1000
Avoid flash of pre-merging text in auto-merge mode
This commit also touches some of the FileDiff expose code that assumed
a particular arrangement of buffer-view correspondence. While this
assumption exists elsewhere, it's only relevant here; elsewhere
requires that the files already be loaded.
meld/filediff.py | 17 +++++++++--------
meld/filemerge.py | 3 +++
2 files changed, 12 insertions(+), 8 deletions(-)
---
diff --git a/meld/filediff.py b/meld/filediff.py
index 7604d3d..0269cce 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -1209,6 +1209,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
visible = textview.get_visible_rect()
pane = self.textview.index(textview)
+ textbuffer = textview.get_buffer()
area = event.area
x, y = textview.window_to_buffer_coords(gtk.TEXT_WINDOW_WIDGET,
area.x, area.y)
@@ -1237,8 +1238,8 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
context.stroke()
if textview.is_focus() and self.cursor.line is not None:
- it = self.textbuffer[pane].get_iter_at_line(self.cursor.line)
- ypos, line_height = self.textview[pane].get_line_yrange(it)
+ it = textbuffer.get_iter_at_line(self.cursor.line)
+ ypos, line_height = textview.get_line_yrange(it)
context.save()
context.rectangle(0, ypos - visible.y, width, line_height)
context.clip()
@@ -1253,10 +1254,10 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
rgba_pairs = zip(c.start_rgba, c.end_rgba)
rgba = [s + (e - s) * percent for s, e in rgba_pairs]
- it = self.textbuffer[pane].get_iter_at_mark(c.start_mark)
- ystart, _ = self.textview[pane].get_line_yrange(it)
- it = self.textbuffer[pane].get_iter_at_mark(c.end_mark)
- yend, _ = self.textview[pane].get_line_yrange(it)
+ it = textbuffer.get_iter_at_mark(c.start_mark)
+ ystart, _ = textview.get_line_yrange(it)
+ it = textbuffer.get_iter_at_mark(c.end_mark)
+ yend, _ = textview.get_line_yrange(it)
if ystart == yend:
ystart -= 1
@@ -1267,8 +1268,8 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
if current_time <= c.start_time + c.duration:
new_anim_chunks.append(c)
else:
- self.textbuffer[pane].delete_mark(c.start_mark)
- self.textbuffer[pane].delete_mark(c.end_mark)
+ textbuffer.delete_mark(c.start_mark)
+ textbuffer.delete_mark(c.end_mark)
self.animating_chunks[pane] = new_anim_chunks
if self.animating_chunks[pane] and self.anim_source_id[pane] is None:
diff --git a/meld/filemerge.py b/meld/filemerge.py
index 60d4d99..4f2a3aa 100644
--- a/meld/filemerge.py
+++ b/meld/filemerge.py
@@ -19,6 +19,7 @@ from gettext import gettext as _
import gtk
import filediff
+import meldbuffer
import merge
@@ -32,10 +33,12 @@ class FileMerge(filediff.FileDiff):
self.textview[2].set_editable(0)
def _set_files_internal(self, files):
+ self.textview[1].set_buffer(meldbuffer.MeldBuffer())
for i in self._load_files(files, self.textbuffer):
yield i
for i in self._merge_files():
yield i
+ self.textview[1].set_buffer(self.textbuffer[1])
for i in self._diff_files():
yield i
filediff.FileDiff.set_buffer_writable(self, self.textbuffer[1], True)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]