(svn r16513) -Codechange: Add nested widgets root and array to Window, and NWidgetBase::FillNestedArray() to fill the array.
This commit is contained in:
@@ -838,6 +838,13 @@ NWidgetBase::NWidgetBase(WidgetType tp) : ZeroedMemoryAllocator()
|
||||
* the smallest size such that all widgets of the window are consistent, and \e current_x and \e current_y contain the current size.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @fn void FillNestedArray(NWidgetCore **array, uint length)
|
||||
* Fill the Window::nested_array array with pointers to nested widgets in the tree.
|
||||
* @param array Base pointer of the array.
|
||||
* @param length Length of the array.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Store size and position.
|
||||
* @param sizing Type of resizing to perform.
|
||||
@@ -971,6 +978,11 @@ int NWidgetCore::SetupSmallestSize()
|
||||
return this->index;
|
||||
}
|
||||
|
||||
void NWidgetCore::FillNestedArray(NWidgetCore **array, uint length)
|
||||
{
|
||||
if (this->index >= 0 && (uint)(this->index) < length) array[this->index] = this;
|
||||
}
|
||||
|
||||
void NWidgetCore::StoreWidgets(Widget *widgets, int length, bool left_moving, bool top_moving, bool rtl)
|
||||
{
|
||||
if (this->index < 0) return;
|
||||
@@ -1046,6 +1058,13 @@ void NWidgetContainer::Add(NWidgetBase *wid)
|
||||
}
|
||||
}
|
||||
|
||||
void NWidgetContainer::FillNestedArray(NWidgetCore **array, uint length)
|
||||
{
|
||||
for (NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->next) {
|
||||
child_wid->FillNestedArray(array, length);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the biggest possible size of a nested widget.
|
||||
* @param base Base size of the widget.
|
||||
@@ -1419,6 +1438,10 @@ int NWidgetSpacer::SetupSmallestSize()
|
||||
return -1;
|
||||
}
|
||||
|
||||
void NWidgetSpacer::FillNestedArray(NWidgetCore **array, uint length)
|
||||
{
|
||||
}
|
||||
|
||||
void NWidgetSpacer::StoreWidgets(Widget *widgets, int length, bool left_moving, bool top_moving, bool rtl)
|
||||
{
|
||||
/* Spacer widgets are never stored in the widget array. */
|
||||
@@ -1518,6 +1541,12 @@ void NWidgetBackground::StoreWidgets(Widget *widgets, int length, bool left_movi
|
||||
if (this->child != NULL) this->child->StoreWidgets(widgets, length, left_moving, top_moving, rtl);
|
||||
}
|
||||
|
||||
void NWidgetBackground::FillNestedArray(NWidgetCore **array, uint length)
|
||||
{
|
||||
if (this->index >= 0 && (uint)(this->index) < length) array[this->index] = this;
|
||||
if (this->child != NULL) this->child->FillNestedArray(array, length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Nested leaf widget.
|
||||
* @param tp Type of leaf widget.
|
||||
|
Reference in New Issue
Block a user