diff options
Diffstat (limited to 'scene/gui/popup_menu.h')
| -rw-r--r-- | scene/gui/popup_menu.h | 19 | 
1 files changed, 17 insertions, 2 deletions
diff --git a/scene/gui/popup_menu.h b/scene/gui/popup_menu.h index 43cd7a54e9..45a3336747 100644 --- a/scene/gui/popup_menu.h +++ b/scene/gui/popup_menu.h @@ -31,7 +31,9 @@  #ifndef POPUP_MENU_H  #define POPUP_MENU_H +#include "scene/gui/margin_container.h"  #include "scene/gui/popup.h" +#include "scene/gui/scroll_container.h"  #include "scene/gui/shortcut.h"  class PopupMenu : public Popup { @@ -57,11 +59,17 @@ class PopupMenu : public Popup {  		String tooltip;  		uint32_t accel;  		int _ofs_cache; +		int _height_cache;  		int h_ofs;  		Ref<ShortCut> shortcut;  		bool shortcut_is_global;  		bool shortcut_is_disabled; +		// Returns (0,0) if icon is null. +		Size2 get_icon_size() const { +			return icon.is_null() ? Size2() : icon->get_size(); +		} +  		Item() {  			checked = false;  			checkable_type = CHECKABLE_TYPE_NONE; @@ -71,6 +79,7 @@ class PopupMenu : public Popup {  			accel = 0;  			disabled = false;  			_ofs_cache = 0; +			_height_cache = 0;  			h_ofs = 0;  			shortcut_is_global = false;  			shortcut_is_disabled = false; @@ -88,7 +97,10 @@ class PopupMenu : public Popup {  	String _get_accel_text(int p_item) const;  	int _get_mouse_over(const Point2 &p_over) const;  	virtual Size2 _get_contents_minimum_size() const override; -	void _scroll(float p_factor, const Point2 &p_over); + +	int _get_items_total_height() const; +	void _scroll_to_item(int p_item); +  	void _gui_input(const Ref<InputEvent> &p_event);  	void _activate_submenu(int over);  	void _submenu_timeout(); @@ -111,9 +123,12 @@ class PopupMenu : public Popup {  	uint64_t search_time_msec;  	String search_string; +	MarginContainer *margin_container; +	ScrollContainer *scroll_container;  	Control *control; -	void _draw(); +	void _draw_items(); +	void _draw_background();  protected:  	friend class MenuButton;  |