- The WSMS issue was fixed in Window::GetAtPosition() and replacing the 'last.parent == this' check by last.IsDescendantOf(this)
- The sampleScrolling issue (nicktick's issue, trying to scroll with a right click with buttons within a grouping Window) had to do
with both the buttons and the group being clickThrough, and at same level, resulting in alternating activation which would move
windows around in the order). The fix was to set activate = false after performing an activation. The group should actually be
marked as 'inactive' if the buttons do not have it set as a parent, to work around an otherwise alternate activation on a mouse click.
- Another issue was found in WSMS while testing with the timer: crashes due to clearing a ListBox fields without calling ListBox::Clear()
first to clear the data. This has now been enforced in ClearFields(), and also fixed in WSMS.
// If the window is disabled, stop looking in children (for acceptDisabled mode)
if(!disabled)
{
- for(child = (last && last.parent == this) ? last.previous : children.last; child; child = child.prev)
+ bool isD = (last && last.IsDescendantOf(this)); // last.parent == this); Fix for WSMS (#844)
+ for(child = isD ? (last.previous == children.first ? null : last.previous) : children.last; child; child = child.prev)
{
if(child != statusBar && child.rootWindow == rootWindow)
{
}
if(clickThru)
{
- for(child = (last && last.parent == this) ? last.previous : children.last; child; child = child.prev)
+ for(child = isD ? (last.previous == children.first ? null : last.previous) : children.last; child; child = child.prev)
{
if(child != statusBar && child.rootWindow == rootWindow)
{
return false;
}
delete activateWindow;
+ // Trouble with clickThrough, siblings and activation (Fix for nicktick scrolling, siblings/activation endless loops, #844)
+ activate = false;
}
mods->isActivate = true;
}
{
DataField field;
for(field = listBox.fields.first; field && field.index != cellIndex; field = field.next);
- if(field.dataType)
+ if(field && field.dataType)
{
// TOCHECK: Is this check good? Will need incref/decref sometime?
if(field.dataType.type == normalClass || field.dataType.type == noHeadClass)
if(this)
{
DataField field;
+ Clear(); // Ensure data is cleared first
while((field = fields.first))
{
- //delete field;
field.Free();
delete field;
}