summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorneikeq <ignalfonsore@gmail.com>2015-11-22 15:53:22 +0100
committerneikeq <ignalfonsore@gmail.com>2015-11-22 15:53:22 +0100
commit9797b6374bff3845130e31029eeaa544ca546653 (patch)
tree25325bc85063c19b45478f4430fbc8148fd2a6da
parentcf3ae61a7feaf352e9535e14c1f11e3ae0634eb6 (diff)
Popup submenu position enhancement
-rw-r--r--scene/gui/popup_menu.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp
index 99663fb2e2..20f28ecf10 100644
--- a/scene/gui/popup_menu.cpp
+++ b/scene/gui/popup_menu.cpp
@@ -170,7 +170,14 @@ void PopupMenu::_activate_submenu(int over) {
Point2 p = get_global_pos();
Rect2 pr(p,get_size());
Ref<StyleBox> style = get_stylebox("panel");
- pm->set_pos(p+Point2(get_size().width,items[over]._ofs_cache-style->get_offset().y));
+
+ Point2 pos = p+Point2(get_size().width,items[over]._ofs_cache-style->get_offset().y);
+ Size2 size = pm->get_size();
+ // fix pos
+ if (pos.x+size.width > get_viewport_rect().size.width)
+ pos.x=p.x-size.width;
+
+ pm->set_pos(pos);
pm->popup();
PopupMenu *pum = pm->cast_to<PopupMenu>();