of an osgWidget::Label with an osgText::String. I had to do this on a
project I'm working on, because I needed UTF-8 strings on my labels,
and using setLabel with std::string was not working.
"
Also, there was also a small bug in osgDB's CMakeLists.txt that was causing an error when I tested with CMake 2.4.4.
IF(${OSG_DEFAULT_IMAGE_PLUGIN_FOR_OSX} STREQUAL "quicktime")
was changed to
IF(OSG_DEFAULT_IMAGE_PLUGIN_FOR_OSX STREQUAL "quicktime")
"
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.
"
if(
(!win || win->getVisibilityMode() == Window::VM_PARTIAL) &&
!win->isPointerXYWithinVisible(x, y)
) continue;
But it probably should be
if (!win || (win->getVisibilityMode() == Window::VM_PARTIAL) && !win->isPointerXYWithinVisible(x, y)))
continue;
The effect of the bug is to segfault if a non-osgWidgets::Window node hasn't been excluded from picking via NodeMask."
when applying styles to a Label element the code below runs in a infinite loop.
The reason for this is that nothing increments the Reader "r" in the case when applying a style to label,
so I advance the reader when no match was found.
( To replicate the error apply style to any label)
replaced this:
while(!r.eof()) if(_styles[style]->applyStyle(t, r)) inc = true;
with this:
while(!r.eof())
{
if(_styles[style]->applyStyle(t, r))
inc = true;
else
r.advanceOverCurrentFieldOrBlock();
}
I tested it and it works well for me, I did not find any problems with it.
2. Added style support for Canvas element, event though there is no styles to apply yet.
It is usefull for someone who inherits from Canvas class to develop another element.
If applyStyle(Canvas) does not exist
there is no way to apply style to the element that inherited from Canvas element.
Added virtual
bool applyStyle(Canvas).
and in added call to apply style if the Object is of type Canvas:
StyleManager::_applyStyleToObject(osg::Object* obj, const std::string& style) {
...
else if(!std::string("Canvas").compare(c))
return _coerceAndApply<Canvas>(obj,style,c);
"
Notes from Robert Osfield, I've merged osgWidget trunk, and added/changed CMakeLists.txt file to make it suitable for inclusion in the core OSG, and moved imagery/scripts/shaders out into OpenSceneGraph-Data