Skip to content

Commit 3604009

Browse files
committed
filediff: Fix change deletion shortcut for non-keypad deletes
This was broken by 30bd323, because you can't actually expect multiple accelerators to work. The change here is kind of unpleasant. Really, it would be nice if this was a generic helper that ran on focus, probably as part of MeldDoc handling... but that's very overkill for this one accelerator.
1 parent ab7d7dc commit 3604009

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

data/ui/filediff.ui

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@
132132
<signal name="activate" handler="delete_change" swapped="no"/>
133133
</object>
134134
<accelerator key="Delete" modifiers="GDK_MOD1_MASK"/>
135-
<accelerator key="KP_Delete" modifiers="GDK_MOD1_MASK"/>
136135
</child>
137136
<child>
138137
<object class="GtkAction" id="MergeFromLeft">

meld/filediff.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,11 @@ def __init__(self, num_panes):
191191
self.actiongroup = self.FilediffActions
192192
self.actiongroup.set_translation_domain("meld")
193193

194+
# Alternate keybindings for a few commands.
195+
self.extra_accels = (
196+
("<Alt>KP_Delete", self.delete_change),
197+
)
198+
194199
self.findbar = FindBar(self.grid)
195200
self.grid.attach(self.findbar.widget, 1, 2, 5, 1)
196201

@@ -279,6 +284,22 @@ def go_to_line(widget, line, pane):
279284

280285
self.connect("notify::ignore-blank-lines", self.refresh_comparison)
281286

287+
def on_container_switch_in_event(self, ui):
288+
MeldDoc.on_container_switch_in_event(self, ui)
289+
290+
accel_group = ui.get_accel_group()
291+
for accel, callback in self.extra_accels:
292+
keyval, mask = Gtk.accelerator_parse(accel)
293+
accel_group.connect(keyval, mask, 0, callback)
294+
295+
def on_container_switch_out_event(self, ui):
296+
accel_group = ui.get_accel_group()
297+
for accel, callback in self.extra_accels:
298+
keyval, mask = Gtk.accelerator_parse(accel)
299+
accel_group.disconnect_key(keyval, mask)
300+
301+
MeldDoc.on_container_switch_out_event(self, ui)
302+
282303
def get_keymask(self):
283304
return self._keymask
284305

0 commit comments

Comments
 (0)