-Moved all the "root" input handling for GUI from individual Controls to Viewport.

-Should fix several reported bugs when controls don't have a common parent

This may have added new bugs, so please report if so!
This commit is contained in:
Juan Linietsky 2016-01-16 22:41:10 -03:00
parent 4081829923
commit 72fcb8a35b
10 changed files with 1156 additions and 1017 deletions

View file

@ -59,8 +59,6 @@ void Popup::_notification(int p_what) {
void Popup::_fix_size() {
Control *window = get_window();
ERR_FAIL_COND(!window);
#if 0
Point2 pos = get_pos();
@ -182,14 +180,12 @@ void Popup::popup_centered_minsize(const Size2& p_minsize) {
void Popup::popup_centered(const Size2& p_size) {
Control *window = get_window();
ERR_FAIL_COND(!window);
Point2 window_size = get_viewport_rect().size;
emit_signal("about_to_show");
Rect2 rect;
rect.size = p_size==Size2()?get_size():p_size;
Point2 window_size = window==this ? get_parent_area_size() :window->get_size();
rect.pos = ((window_size-rect.size)/2.0).floor();
set_pos( rect.pos );
set_size( rect.size );
@ -209,13 +205,11 @@ void Popup::popup_centered(const Size2& p_size) {
void Popup::popup_centered_ratio(float p_screen_ratio) {
Control *window = get_window();
ERR_FAIL_COND(!window);
emit_signal("about_to_show");
Rect2 rect;
Point2 window_size = window==this ? get_parent_area_size() :window->get_size();
Point2 window_size = get_viewport_rect().size;
rect.size = (window_size * p_screen_ratio).floor();
rect.pos = ((window_size-rect.size)/2.0).floor();
set_pos( rect.pos );