浏览代码

Updated fork to match current version of Godot.

SASUPERNOVA 7 年之前
父节点
当前提交
d8d329883e
共有 2 个文件被更改,包括 18 次插入0 次删除
  1. 17 0
      scene/gui/grid_container.cpp
  2. 1 0
      scene/gui/grid_container.h

+ 17 - 0
scene/gui/grid_container.cpp

@@ -178,6 +178,8 @@ void GridContainer::_bind_methods() {
 
 	ClassDB::bind_method(D_METHOD("set_columns", "columns"), &GridContainer::set_columns);
 	ClassDB::bind_method(D_METHOD("get_columns"), &GridContainer::get_columns);
+	ClassDB::bind_method(D_METHOD("get_child_control_at_cell", "row", "column"),
+			&GridContainer::get_child_control_at_cell);
 
 	ADD_PROPERTY(PropertyInfo(Variant::INT, "columns", PROPERTY_HINT_RANGE, "1,1024,1"), "set_columns", "get_columns");
 }
@@ -232,6 +234,21 @@ Size2 GridContainer::get_minimum_size() const {
 	return ms;
 }
 
+Control *GridContainer::get_child_control_at_cell(int row, int column) {
+	Control *c;
+	int grid_index = row * columns + column;
+	for (int i = 0; i < get_child_count(); i++) {
+		c = Object::cast_to<Control>(get_child(i));
+		if (!c || !c->is_visible_in_tree())
+			continue;
+
+		if (grid_index == i) {
+			break;
+		}
+	}
+	return c;
+}
+
 GridContainer::GridContainer() {
 
 	set_mouse_filter(MOUSE_FILTER_PASS);

+ 1 - 0
scene/gui/grid_container.h

@@ -47,6 +47,7 @@ public:
 	void set_columns(int p_columns);
 	int get_columns() const;
 	virtual Size2 get_minimum_size() const;
+	Control *get_child_control_at_cell(int row, int column);
 
 	GridContainer();
 };