diff options
author | neikeq <ignalfonsore@gmail.com> | 2015-11-22 15:53:22 +0100 |
---|---|---|
committer | neikeq <ignalfonsore@gmail.com> | 2015-11-22 15:53:22 +0100 |
commit | 9797b6374bff3845130e31029eeaa544ca546653 (patch) | |
tree | 25325bc85063c19b45478f4430fbc8148fd2a6da | |
parent | cf3ae61a7feaf352e9535e14c1f11e3ae0634eb6 (diff) |
Popup submenu position enhancement
-rw-r--r-- | scene/gui/popup_menu.cpp | 9 |
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>(); |