void IndigoExpanderLabel::mousePressEvent(QMouseEvent* event) { if (event->buttons() & Qt::LeftButton) { event->accept(); collapse = !collapse; emit stateSwitch(collapse); } else { event->ignore(); } }
void ShaderState::switchTo(const State& to, bool fullStateSwitch) const { const ShaderState& ss = checked_cast_ref<const ShaderState&>(to); if (fullStateSwitch || _program != ss._program) { glUseProgramObjectARB(handleOf(ss._program)); } //UniformMapCIter fromIter = _uniforms.begin(); //UniformMapCIter fromEnd = _uniforms.end(); UniformMapCIter toIter = ss._uniforms.begin(); UniformMapCIter toEnd = ss._uniforms.end(); // This is wrong too. for (; toIter != toEnd; ++toIter) { GLint location = glGetUniformLocationARB(handleOf(ss._program), toIter->first.c_str()); glUniform4fvARB(location, 1, toIter->second.getData()); } #if 0 // This is wrong. while (fromIter != fromEnd || toIter != toEnd) { if (fromIter == fromEnd) { glUniform4fvARB(location, 1, toIter->second.getData()); ++toIter; } else if (toIter == toEnd) { ++fromIter; } else if (fromIter->first > toIter->first) { glUniform4fvARB(location, 1, toIter->second.getData()); switchFromDefault(*assertTrue(toIter->second), fullStateSwitch); ++toIter; } else if (fromIter->first < toIter->first) { glUniform4fvARB(location, 1, toIter->second.getData()); ++fromIter; } else { stateSwitch(*assertTrue(fromIter->second), *assertTrue(toIter->second), fullStateSwitch); ++toIter; ++fromIter; } } #endif }