Skip to content

Commit f064296

Browse files
committed
Add ScrollLinkMap for diff scrolling in folder comparisons (bgo#729756)
In file comparisons, scrolling in the LinkMap flips between changes, but does nothing in folder comparisons. While it's a bit weird to have this behaviour on an otherwise blank widget, it doesn't hurt anything and does feel somewhat more consistent.
1 parent f8b796a commit f064296

3 files changed

Lines changed: 24 additions & 4 deletions

File tree

data/ui/dirdiff.ui

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,11 +257,11 @@
257257
</packing>
258258
</child>
259259
<child>
260-
<object class="GtkDrawingArea" id="linkmap1">
260+
<object class="ScrollLinkMap" id="linkmap1">
261261
<property name="width_request">50</property>
262262
<property name="visible">True</property>
263263
<property name="can_focus">False</property>
264-
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
264+
<property name="events">GDK_SCROLL_MASK</property>
265265
<property name="vexpand">True</property>
266266
</object>
267267
<packing>
@@ -315,11 +315,11 @@
315315
</packing>
316316
</child>
317317
<child>
318-
<object class="GtkDrawingArea" id="linkmap0">
318+
<object class="ScrollLinkMap" id="linkmap0">
319319
<property name="width_request">50</property>
320320
<property name="visible">True</property>
321321
<property name="can_focus">False</property>
322-
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
322+
<property name="events">GDK_SCROLL_MASK</property>
323323
<property name="vexpand">True</property>
324324
</object>
325325
<packing>

meld/dirdiff.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1398,6 +1398,9 @@ def set_num_panes(self, n):
13981398
idx = 1 if i else 0
13991399
w.setup(scroll, self.get_state_traversal(idx), [self.fill_colors, self.line_colors])
14001400

1401+
for w in self.linkmap:
1402+
w.associate(self)
1403+
14011404
for widget in (
14021405
self.vbox[:n] + self.file_toolbar[:n] + self.diffmap[:n] +
14031406
self.linkmap[:n - 1] + self.dummy_toolbar_linkmap[:n - 1]):

meld/linkmap.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,20 @@ def do_draw(self, context):
122122

123123
def do_scroll_event(self, event):
124124
self.filediff.next_diff(event.direction)
125+
126+
127+
class ScrollLinkMap(Gtk.DrawingArea):
128+
129+
__gtype_name__ = "ScrollLinkMap"
130+
131+
def __init__(self):
132+
self._setup = False
133+
134+
def associate(self, melddoc):
135+
self.melddoc = melddoc
136+
self._setup = True
137+
138+
def do_scroll_event(self, event):
139+
if not self._setup:
140+
return
141+
self.melddoc.next_diff(event.direction)

0 commit comments

Comments
 (0)