Merge pull request #187 from lavendthomas/bf.shifttab

Fix Shift-Tab Behaviour
github/fork/sternenseemann/patch-1
somas95 2019-12-25 17:29:44 +01:00 committed by GitHub
commit d246877a17
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 7 deletions

View File

@ -110,7 +110,7 @@ class TextView(Gtk.TextView):
# Hemingway mode
self.hemingway_mode = False
self.connect('key-press-event', self.on_key_press_event)
self.connect('key-press-event', self._on_key_press_event)
# While resizing the TextView, there is unwanted scroll upwards if a top margin is present.
# When a size allocation is detected, this variable will hold the scroll to re-set until the
@ -243,12 +243,6 @@ class TextView(Gtk.TextView):
self.hemingway_mode = hemingway_mode
def on_key_press_event(self, _widget, event):
if self.hemingway_mode:
return event.keyval == Gdk.KEY_BackSpace or event.keyval == Gdk.KEY_Delete
else:
return False
def clear(self):
"""Clear text and undo history"""
@ -285,3 +279,23 @@ class TextView(Gtk.TextView):
"""Returns the font width for a given size. Note: specific to Fira Mono!"""
return font_size * 1 / 1.6
def _on_key_press_event(self, _widget, event):
if self.hemingway_mode:
return event.keyval == Gdk.KEY_BackSpace or event.keyval == Gdk.KEY_Delete
if event.state & Gdk.ModifierType.SHIFT_MASK == Gdk.ModifierType.SHIFT_MASK \
and event.keyval == Gdk.KEY_ISO_Left_Tab: # Capure Shift-Tab
self._on_shift_tab()
return True
def _on_shift_tab(self):
"""Delete last character if it is a tab"""
text_buffer = self.get_buffer()
pen_iter = text_buffer.get_end_iter()
pen_iter.backward_char()
end_iter = text_buffer.get_end_iter()
if pen_iter.get_char() == "\t":
with user_action(text_buffer):
text_buffer.delete(pen_iter, end_iter)