How to add LineEdit object to Popup created in GDScript?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By tommila
:warning: Old Version Published before Godot 3 was released.

Hi.

I’ve created a modal popup with nested LineEdits, the problem is that the popup closes when I try to select one of the LineEdits with a mouse. TAB-select works fine though. i’ve tried messing with set_focus_mode and set_stop_mouse but nothing seems to work. Here’s a example code.

tool
extends Button

onready var m_popup = Popup.new()
onready var m_x = LineEdit.new()
onready var m_y = LineEdit.new()
    
func _ready():
    connect("pressed", self, "clicked")

    m_x.set_text("0")
    m_y.set_text("0")
    
    var hBox = HBoxContainer.new()
       
    hBox.add_child(m_x)
    hBox.add_child(m_y)

    m_popup.add_child(hBox)
    add_child(m_popup)

func clicked():
   var pos = get_global_mouse_pos()
   pos.x -= 125
   pos.y += 10
   m_popup.set_global_pos(pos)
   m_popup.popup()
:bust_in_silhouette: Reply From: BE-Never Games

That is because a popup is supposed to close when you click somewhere outside of its boundaries and I am going to guess that the LineEdits are not within its margins due to the Container. There are a couple of solutions for this:
You could simply use a normal “Control” and use .show() and .hide() for manipulating its visibility. You can also use these methods on a popup by the way instead of .popup() which will show the Popup without disappearing automatically.
And finally, you can set the popup to “Exclusive” with the method set_exclusive(true) in order to make it hide other popups on the screen and to stay visible.

I hope any of these solutions help you! :smiley:

Manually resizing the popup boundaries/size solved this problem. It’s interesting, though, that the popup object isn’t inherited from a container object. Thanks for pointing me to the right direction!

tommila | 2017-07-27 08:00