1. In WindowManager.cpp childRemoved method the second parameter "end" is misleading and
should be named "numChildren" instead. It represents how many children to remove. As a result, the method was implemented incorrectly and failed to remove UI objects. So I fixed it.
replaced this:
void WindowManager::childRemoved(unsigned int start, unsigned int end) {
while(start < end) {
Window* window = getByIndex(start);
if(!window) continue;
if(_remove(window)) {
window->_index = -1;
window->unmanaged(this);
}
start++;
}
}
with this:
void WindowManager::childRemoved(unsigned int start, unsigned int numChildren) {
for (unsigned int i = start; i < start+numChildren; i++)
{
Window* window = getByIndex(i);
if(!window) continue;
if(_remove(window)) {
window->_index = -1;
window->unmanaged(this);
}
}
}
2. in Input.cpp
The cursor in Input did not get positioned correctly, probably as a left over from the TOP LEFT origin system which is now BOTTOM LEFT.
in method positioned()
replaced this:
_cursor->setOrigin(x + xoffset + 1.0f, y - _cursor->getHeight() + 1.0f);
with this:
_cursor->setOrigin(x + xoffset + 1.0f, y + 1.0f);
Now it is placed correctly.
"