diff -u meld-1.3.0/debian/control meld-1.3.0/debian/control --- meld-1.3.0/debian/control +++ meld-1.3.0/debian/control @@ -6,7 +6,8 @@ Source: meld Section: gnome Priority: optional -Maintainer: Ross Burton +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Ross Burton Build-Depends: debhelper (>= 5), cdbs, gnome-pkg-tools @@ -14,7 +15,7 @@ python-support (>= 0.4.0), intltool, scrollkeeper -Uploaders: Debian GNOME Maintainers , Emilio Pozuelo Monfort , Loic Minier +Uploaders: Debian GNOME Maintainers , Emilio Pozuelo Monfort , Loic Minier , Ross Burton Standards-Version: 3.8.3 XS-Python-Version: >= 2.3 diff -u meld-1.3.0/debian/control.in meld-1.3.0/debian/control.in --- meld-1.3.0/debian/control.in +++ meld-1.3.0/debian/control.in @@ -1,7 +1,8 @@ Source: meld Section: gnome Priority: optional -Maintainer: Ross Burton +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Ross Burton Build-Depends: debhelper (>= 5), cdbs, gnome-pkg-tools diff -u meld-1.3.0/debian/changelog meld-1.3.0/debian/changelog --- meld-1.3.0/debian/changelog +++ meld-1.3.0/debian/changelog @@ -1,3 +1,9 @@ +meld (1.3.0-2ubuntu1) lucid; urgency=low + + * Backport fix for UI glitches (LP: #505285) + + -- Matthew James Wild Sat, 13 Mar 2010 15:53:05 +0000 + meld (1.3.0-2) unstable; urgency=low * debian/control.in: only in patch2: unchanged: --- meld-1.3.0.orig/debian/patches/02-invisible-merge-arrows.patch +++ meld-1.3.0/debian/patches/02-invisible-merge-arrows.patch @@ -0,0 +1,39 @@ +Backported to Meld 1.3.0 from Meld GIT +Author: Matthew Wild +Original-Author: Kai Willadsen +Commit: 4e3a717a6c4f97a17b9bae03f7f0618a170ade3c + +--- a/filediff.py 2010-03-13 14:57:09.000000000 +0000 ++++ b/filediff.py 2010-03-13 14:57:12.000000000 +0000 +@@ -1104,9 +1104,11 @@ + else: # self.keymask == 0: + pix0 = self.pixbuf_apply0 + pix1 = self.pixbuf_apply1 +- if change in ("insert", "replace"): ++ if change[0] in ("insert", "replace") or (change[0] == "conflict" and ++ change[3] - change[4] != 0): + self.paint_pixbuf_at(context, pix1, x, t0) +- if change in ("delete", "replace"): ++ if change[0] in ("delete", "replace") or (change[0] == "conflict" and ++ change[1] - change[2] != 0): + self.paint_pixbuf_at(context, pix0, 0, f0) + + # +@@ -1172,7 +1174,7 @@ + context.stroke() + + x = wtotal-self.pixbuf_apply0.get_width() +- self._linkmap_draw_icon(context, which, c[0], x, f0, t0) ++ self._linkmap_draw_icon(context, which, c, x, f0, t0) + + # allow for scrollbar at end of textview + mid = int(0.5 * self.textview[0].allocation.height) + 0.5 +@@ -1190,7 +1192,7 @@ + adj = self.scrolledwindow[src].get_vadjustment() + + for c in self.linediffer.pair_changes(src, dst, self._get_texts()): +- if c[0] == "insert": ++ if c[0] == "insert" or (c[0] == "conflict" and c[1] - c[2] == 0): + continue + h = self._line_to_pixel(src, c[1]) - adj.value + if h < 0: # find first visible chunk only in patch2: unchanged: --- meld-1.3.0.orig/debian/patches/01-invisible-merge-arrows-base.patch +++ meld-1.3.0/debian/patches/01-invisible-merge-arrows-base.patch @@ -0,0 +1,131 @@ +Backported to Meld 1.3.0 from Meld GIT +Author: Matthew Wild +Original-Author: Piotr Piastucki +Commit: 516cc2576abc49d32a7d1176467387e4ede7e714 + +diff -Nur -x '*.orig' -x '*~' meld-1.3.0/filediff.py meld-1.3.0.new/filediff.py +--- meld-1.3.0/filediff.py 2009-04-17 23:48:10.000000000 +0100 ++++ meld-1.3.0.new/filediff.py 2010-03-13 15:28:55.000000000 +0000 +@@ -1088,16 +1088,13 @@ + break + return lo,hi + +- # +- # linkmap drawing +- # +- def on_linkmap_expose_event(self, widget, event): +- wtotal, htotal = widget.allocation.width, widget.allocation.height +- context = widget.window.cairo_create() +- context.rectangle(event.area.x, event.area.y, event.area.width, event.area.height) +- context.clip() +- context.set_line_width(1.0) ++ def paint_pixbuf_at(self, context, pixbuf, x, y): ++ context.translate(x, y) ++ context.set_source_pixbuf(pixbuf, 0, 0) ++ context.paint() ++ context.identity_matrix() + ++ def _linkmap_draw_icon(self, context, which, change, x, f0, t0): + if self.keymask & MASK_SHIFT: + pix0 = self.pixbuf_delete + pix1 = self.pixbuf_delete +@@ -1107,6 +1104,21 @@ + else: # self.keymask == 0: + pix0 = self.pixbuf_apply0 + pix1 = self.pixbuf_apply1 ++ if change in ("insert", "replace"): ++ self.paint_pixbuf_at(context, pix1, x, t0) ++ if change in ("delete", "replace"): ++ self.paint_pixbuf_at(context, pix0, 0, f0) ++ ++ # ++ # linkmap drawing ++ # ++ def on_linkmap_expose_event(self, widget, event): ++ wtotal, htotal = widget.allocation.width, widget.allocation.height ++ yoffset = widget.allocation.y ++ context = widget.window.cairo_create() ++ context.rectangle(event.area.x, event.area.y, event.area.width, event.area.height) ++ context.clip() ++ context.set_line_width(1.0) + + which = self.linkmap.index(widget) + pix_start = [None] * self.num_panes +@@ -1120,12 +1132,6 @@ + # For bezier control points + x_steps = [-0.5, (1. / 3) * wtotal, (2. / 3) * wtotal, wtotal + 0.5] + +- def paint_pixbuf_at(pixbuf, x, y): +- context.translate(x, y) +- context.set_source_pixbuf(pixbuf, 0, 0) +- context.paint() +- context.identity_matrix() +- + for c in self.linediffer.pair_changes(which, which+1, self._get_texts()): + if self.prefs.ignore_blank_lines: + c1,c2 = self._consume_blank_lines( self._get_texts()[which ][c[1]:c[2]] ) +@@ -1166,10 +1172,7 @@ + context.stroke() + + x = wtotal-self.pixbuf_apply0.get_width() +- if c[0] in ("insert", "replace"): +- paint_pixbuf_at(pix1, x, t0) +- if c[0] in ("delete", "replace"): +- paint_pixbuf_at(pix0, 0, f0) ++ self._linkmap_draw_icon(context, which, c[0], x, f0, t0) + + # allow for scrollbar at end of textview + mid = int(0.5 * self.textview[0].allocation.height) + 0.5 +@@ -1181,6 +1184,23 @@ + def on_linkmap_scroll_event(self, area, event): + self.next_diff(event.direction) + ++ def _linkmap_process_event(self, event, which, side, htotal, rect_x, pix_width, pix_height): ++ src = which + side ++ dst = which + 1 - side ++ adj = self.scrolledwindow[src].get_vadjustment() ++ ++ for c in self.linediffer.pair_changes(src, dst, self._get_texts()): ++ if c[0] == "insert": ++ continue ++ h = self._line_to_pixel(src, c[1]) - adj.value ++ if h < 0: # find first visible chunk ++ continue ++ elif h > htotal: # we've gone past last visible ++ break ++ elif h < event.y and event.y < h + pix_height: ++ self.mouse_chunk = ((src, dst), (rect_x, h, pix_width, pix_height), c) ++ break ++ + def on_linkmap_button_press_event(self, area, event): + if event.button == 1: + self.focus_before_click = None +@@ -1207,27 +1227,7 @@ + rect_x = wtotal - pix_width + else: + return True +- src = which + side +- dst = which + 1 - side +- adj = self.scrolledwindow[src].get_vadjustment() +- +- for c in self.linediffer.pair_changes(src, dst, self._get_texts()): +- if self.prefs.ignore_blank_lines: +- c1,c2 = self._consume_blank_lines( self._get_texts()[src][c[1]:c[2]] ) +- c3,c4 = self._consume_blank_lines( self._get_texts()[dst][c[3]:c[4]] ) +- c = c[0], c[1]+c1,c[2]-c2, c[3]+c3,c[4]-c4 +- if c[1]==c[2] and c[3]==c[4]: +- continue +- if c[0] == "insert": +- continue +- h = self._line_to_pixel(src, c[1]) - adj.value +- if h < 0: # find first visible chunk +- continue +- elif h > htotal: # we've gone past last visible +- break +- elif h < event.y and event.y < h + pix_height: +- self.mouse_chunk = ( (src,dst), (rect_x, h, pix_width, pix_height), c) +- break ++ self._linkmap_process_event(event, which, side, htotal, rect_x, pix_width, pix_height) + #print self.mouse_chunk + return True + return False