Skip to content

Commit

Permalink
make enter-on-close default behavior for inline editor
Browse files Browse the repository at this point in the history
  • Loading branch information
amolenaar committed Aug 25, 2020
1 parent b51fa6c commit 49790c0
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 31 deletions.
7 changes: 2 additions & 5 deletions gaphor/UML/actions/actionseditors.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@ def update_text(text):
item.subject.joinSpec = text
return True

def done():
popover.popdown()

def escape():
item.subject.joinSpec = join_spec

Expand All @@ -24,6 +21,6 @@ def escape():

join_spec = subject.joinSpec or ""
box = view.get_item_bounding_box(view.hovered_item)
entry = popup_entry(join_spec, update_text, done)
popover = show_popover(entry, view, box, escape)
entry = popup_entry(join_spec, update_text)
show_popover(entry, view, box, escape)
return True
9 changes: 3 additions & 6 deletions gaphor/UML/classes/classeseditors.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@ def update_end_text(text):
UML.parse(end_item.subject, text)
return True

def done():
popover.popdown()

subject = item.subject
if not subject:
return False
Expand Down Expand Up @@ -56,7 +53,7 @@ def escape():
assert end_item
UML.parse(end_item.subject, text)

entry = popup_entry(text, update_end_text, done)
entry = popup_entry(text, update_end_text)
bb = end_item.name_bounds
x, y = view.get_matrix_i2v(item).transform_point(bb.x, bb.y)
box = Rectangle(x, y, 10, 10)
Expand All @@ -66,8 +63,8 @@ def escape():
def escape():
item.subject.name = text

entry = popup_entry(text, update_text, done)
entry = popup_entry(text, update_text)
box = editable_text_box(view, view.hovered_item)

popover = show_popover(entry, view, box, escape)
show_popover(entry, view, box, escape)
return True
12 changes: 2 additions & 10 deletions gaphor/diagram/general/generaleditors.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from gi.repository import Gdk, Gtk
from gi.repository import Gtk

from gaphor.core import transactional
from gaphor.diagram.general.comment import CommentItem
Expand All @@ -15,13 +15,6 @@ def update_text():
item.subject.body = text
return True

def on_key_press_event(widget, event):
if event.keyval == Gdk.KEY_Return and not event.get_state() & (
Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK
):
popover.popdown()
return True

def escape():
subject.body = body

Expand All @@ -39,7 +32,6 @@ def escape():
buffer.connect("changed", lambda _: update_text())

text_view = Gtk.TextView.new_with_buffer(buffer)
text_view.connect("key-press-event", on_key_press_event)
box = view.get_item_bounding_box(view.hovered_item)

frame = Gtk.Frame()
Expand All @@ -48,5 +40,5 @@ def escape():
text_view.show()
frame.show()

popover = show_popover(frame, view, box, escape)
show_popover(frame, view, box, escape)
return True
19 changes: 9 additions & 10 deletions gaphor/diagram/inlineeditors.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,8 @@ def named_item_inline_editor(item, view, pos=None) -> bool:
@transactional
def update_text(text):
item.subject.name = text
# popover.popdown()
return True

def done():
popover.popdown()

subject = item.subject
if not subject:
return False
Expand All @@ -45,28 +41,26 @@ def done():
if not box:
box = view.get_item_bounding_box(view.hovered_item)
name = subject.name or ""
entry = popup_entry(name, update_text, done)
entry = popup_entry(name, update_text)

def escape():
subject.name = name

popover = show_popover(entry, view, box, escape)
show_popover(entry, view, box, escape)

return True


def popup_entry(text, update_text, done):
def popup_entry(text, update_text, done=None):
buffer = Gtk.EntryBuffer()
buffer.set_text(text, -1)
entry = Gtk.Entry.new_with_buffer(buffer)
entry.set_activates_default(True)
entry.connect("changed", lambda entry: update_text(entry.get_buffer().get_text()))
entry.connect("activate", lambda _: done())
entry.show()
return entry


def show_popover(widget, view, box, escape):
def show_popover(widget, view, box, escape=None):
popover = Gtk.Popover.new()
popover.add(widget)
popover.set_relative_to(view)
Expand All @@ -78,6 +72,11 @@ def show_popover(widget, view, box, escape):
popover.set_pointing_to(gdk_rect)

def on_escape(popover, event):
if event.keyval == Gdk.KEY_Return and not event.get_state() & (
Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK
):
popover.popdown()
return True
if event.keyval == Gdk.KEY_Escape and escape:
escape()

Expand Down

0 comments on commit 49790c0

Please sign in to comment.