summaryrefslogtreecommitdiff
path: root/scene/gui/popup.h
diff options
context:
space:
mode:
Diffstat (limited to 'scene/gui/popup.h')
-rw-r--r--scene/gui/popup.h26
1 files changed, 19 insertions, 7 deletions
diff --git a/scene/gui/popup.h b/scene/gui/popup.h
index 6cd2b4028f..c7090e7231 100644
--- a/scene/gui/popup.h
+++ b/scene/gui/popup.h
@@ -5,8 +5,8 @@
/* GODOT ENGINE */
/* https://godotengine.org */
/*************************************************************************/
-/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the */
@@ -33,30 +33,42 @@
#include "scene/main/window.h"
-class Popup : public Window {
+#include "core/templates/local_vector.h"
+
+class Panel;
+class Popup : public Window {
GDCLASS(Popup, Window);
- Window *parent_visible;
+ LocalVector<Window *> visible_parents;
+ bool popped_up = false;
+ bool close_on_parent_focus = true;
void _input_from_window(const Ref<InputEvent> &p_event);
+
+ void _initialize_visible_parents();
+ void _deinitialize_visible_parents();
+
void _parent_focused();
protected:
void _close_pressed();
- virtual Rect2i _popup_adjust_rect() const;
+ virtual Rect2i _popup_adjust_rect() const override;
void _notification(int p_what);
static void _bind_methods();
public:
void set_as_minsize();
+
+ void set_close_on_parent_focus(bool p_close);
+ bool get_close_on_parent_focus();
+
Popup();
~Popup();
};
class PopupPanel : public Popup {
-
GDCLASS(PopupPanel, Popup);
Panel *panel;
@@ -65,7 +77,7 @@ protected:
void _update_child_rects();
void _notification(int p_what);
- virtual Size2 _get_contents_minimum_size() const;
+ virtual Size2 _get_contents_minimum_size() const override;
public:
void set_child_rect(Control *p_child);