Delete selection when replacing keypad keys

issue11112
review377911002
This commit is contained in:
Cédric Krier committed 2022-01-11 23:05:35 +01:00
1 parent 3276c06c2a
commit c103809d1a
2 files changed
+14 -6

No files matched your search

+12 -6
View File
@@ -31,18 +31,24 @@ class CellRendererFloat(CellRendererInteger):
for name in ('KP_Decimal', 'KP_Separator'):
if event.keyval == Gdk.keyval_from_name(name):
text = self.__decimal_point
position = widget.props.cursor_position
if self._can_insert_text(widget, text, position):
try:
start_pos, end_pos = widget.get_selection_bounds()
except ValueError:
start_pos = widget.props.cursor_position
end_pos = None
if self._can_insert_text(widget, text, start_pos, end_pos):
buffer_ = widget.get_buffer()
buffer_.insert_text(position, text, len(text))
buffer_.delete_text(start_pos, end_pos - start_pos)
buffer_.insert_text(start_pos, text, len(text))
widget.set_position(
widget.props.cursor_position + len(text))
return True
def _can_insert_text(self, entry, new_text, position):
def _can_insert_text(self, entry, new_text, start_pos, end_pos=None):
value = entry.get_text()
position = entry.get_position()
new_value = value[:position] + new_text + value[position:]
if end_pos is None:
end_pos = start_pos
new_value = value[:start_pos] + new_text + value[end_pos:]
if new_value not in {'-', self.__decimal_point, self.__thousands_sep}:
try:
value = self.convert(
+2
View File
@@ -73,6 +73,8 @@ class NumberEntry(Gtk.Entry, Gtk.Editable):
for name in ['KP_Decimal', 'KP_Separator']:
if event.keyval == Gdk.keyval_from_name(name):
text = self.__decimal_point
if self.get_selection_bounds():
self.delete_text(*self.get_selection_bounds())
self.do_insert_text(
text, len(text), self.props.cursor_position)
self.set_position(self.props.cursor_position + len(text))