Add pre-sort signal and notification in Container
Allows processing before children are sorted, useful for custom containers inherited from existing ones like BoxContainer.
This commit is contained in:
parent
198b49d8b5
commit
1c0ebc85dd
|
@ -29,6 +29,11 @@
|
||||||
<member name="mouse_filter" type="int" setter="set_mouse_filter" getter="get_mouse_filter" override="true" enum="Control.MouseFilter" default="1" />
|
<member name="mouse_filter" type="int" setter="set_mouse_filter" getter="get_mouse_filter" override="true" enum="Control.MouseFilter" default="1" />
|
||||||
</members>
|
</members>
|
||||||
<signals>
|
<signals>
|
||||||
|
<signal name="pre_sort_children">
|
||||||
|
<description>
|
||||||
|
Emitted when children are going to be sorted.
|
||||||
|
</description>
|
||||||
|
</signal>
|
||||||
<signal name="sort_children">
|
<signal name="sort_children">
|
||||||
<description>
|
<description>
|
||||||
Emitted when sorting the children is needed.
|
Emitted when sorting the children is needed.
|
||||||
|
@ -36,7 +41,10 @@
|
||||||
</signal>
|
</signal>
|
||||||
</signals>
|
</signals>
|
||||||
<constants>
|
<constants>
|
||||||
<constant name="NOTIFICATION_SORT_CHILDREN" value="50">
|
<constant name="NOTIFICATION_PRE_SORT_CHILDREN" value="50">
|
||||||
|
Notification just before children are going to be sorted, in case there's something to process beforehand.
|
||||||
|
</constant>
|
||||||
|
<constant name="NOTIFICATION_SORT_CHILDREN" value="51">
|
||||||
Notification for when sorting the children, it must be obeyed immediately.
|
Notification for when sorting the children, it must be obeyed immediately.
|
||||||
</constant>
|
</constant>
|
||||||
</constants>
|
</constants>
|
||||||
|
|
|
@ -87,6 +87,9 @@ void Container::_sort_children() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
notification(NOTIFICATION_PRE_SORT_CHILDREN);
|
||||||
|
emit_signal(SceneStringNames::get_singleton()->pre_sort_children);
|
||||||
|
|
||||||
notification(NOTIFICATION_SORT_CHILDREN);
|
notification(NOTIFICATION_SORT_CHILDREN);
|
||||||
emit_signal(SceneStringNames::get_singleton()->sort_children);
|
emit_signal(SceneStringNames::get_singleton()->sort_children);
|
||||||
pending_sort = false;
|
pending_sort = false;
|
||||||
|
@ -174,7 +177,10 @@ void Container::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("queue_sort"), &Container::queue_sort);
|
ClassDB::bind_method(D_METHOD("queue_sort"), &Container::queue_sort);
|
||||||
ClassDB::bind_method(D_METHOD("fit_child_in_rect", "child", "rect"), &Container::fit_child_in_rect);
|
ClassDB::bind_method(D_METHOD("fit_child_in_rect", "child", "rect"), &Container::fit_child_in_rect);
|
||||||
|
|
||||||
|
BIND_CONSTANT(NOTIFICATION_PRE_SORT_CHILDREN);
|
||||||
BIND_CONSTANT(NOTIFICATION_SORT_CHILDREN);
|
BIND_CONSTANT(NOTIFICATION_SORT_CHILDREN);
|
||||||
|
|
||||||
|
ADD_SIGNAL(MethodInfo("pre_sort_children"));
|
||||||
ADD_SIGNAL(MethodInfo("sort_children"));
|
ADD_SIGNAL(MethodInfo("sort_children"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,8 @@ protected:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum {
|
enum {
|
||||||
NOTIFICATION_SORT_CHILDREN = 50
|
NOTIFICATION_PRE_SORT_CHILDREN = 50,
|
||||||
|
NOTIFICATION_SORT_CHILDREN = 51,
|
||||||
};
|
};
|
||||||
|
|
||||||
void fit_child_in_rect(Control *p_child, const Rect2 &p_rect);
|
void fit_child_in_rect(Control *p_child, const Rect2 &p_rect);
|
||||||
|
|
|
@ -73,6 +73,7 @@ SceneStringNames::SceneStringNames() {
|
||||||
focus_entered = StaticCString::create("focus_entered");
|
focus_entered = StaticCString::create("focus_entered");
|
||||||
focus_exited = StaticCString::create("focus_exited");
|
focus_exited = StaticCString::create("focus_exited");
|
||||||
|
|
||||||
|
pre_sort_children = StaticCString::create("pre_sort_children");
|
||||||
sort_children = StaticCString::create("sort_children");
|
sort_children = StaticCString::create("sort_children");
|
||||||
|
|
||||||
body_shape_entered = StaticCString::create("body_shape_entered");
|
body_shape_entered = StaticCString::create("body_shape_entered");
|
||||||
|
|
|
@ -89,6 +89,7 @@ public:
|
||||||
StringName focus_entered;
|
StringName focus_entered;
|
||||||
StringName focus_exited;
|
StringName focus_exited;
|
||||||
|
|
||||||
|
StringName pre_sort_children;
|
||||||
StringName sort_children;
|
StringName sort_children;
|
||||||
|
|
||||||
StringName finished;
|
StringName finished;
|
||||||
|
|
Loading…
Reference in New Issue