shellEntry: Show popup menu at cursor position when pressing menu key

When pressing the menu key to show the popupMenu inside a ShellEntry,
the menu is currently aligned with the end of the entered text, this
causes a bug in case the text is overflowing the width of the entry: The
menu will be shown outside of the entry field, because it's aligned with
the (invisible) end of the text.

Fix that by simply aligning the popup menu with the cursor of the entry,
which is a behavior that makes sense when pressing the menu-key anyway.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/934
This commit is contained in:
Jonas Dreßler 2019-12-08 21:56:46 +01:00
parent e4cb1a8f4b
commit d27638e37e

View File

@ -116,7 +116,8 @@ function _onButtonPressEvent(actor, event, entry) {
} }
function _onPopup(actor, entry) { function _onPopup(actor, entry) {
let [success, textX, textY_, lineHeight_] = entry.clutter_text.position_to_coords(-1); let cursorPosition = entry.clutter_text.get_cursor_position();
let [success, textX, textY_, lineHeight_] = entry.clutter_text.position_to_coords(cursorPosition);
if (success) if (success)
entry.menu.setSourceAlignment(textX / entry.width); entry.menu.setSourceAlignment(textX / entry.width);
entry.menu.open(BoxPointer.PopupAnimation.FULL); entry.menu.open(BoxPointer.PopupAnimation.FULL);