bool OWidgetStack::eventFilter( QObject*, QEvent* e) { if ( e->type() == QEvent::Resize && !m_forced ) { QResizeEvent *res = static_cast<QResizeEvent*>( e ); QSize size = res->size(); if ( size.width() >= mode_size ) switchTop(); else switchStack(); } return false; }
void Coroutine::yieldHelper(Status stopStatus) { Coroutine *stoppingCoroutine = *qt_currentCoroutine.localData(); Q_ASSERT(stoppingCoroutine); Q_ASSERT(stoppingCoroutine->_status == Running); stoppingCoroutine->_status = stopStatus; Coroutine *continuingCoroutine = stoppingCoroutine->_caller; Q_ASSERT(continuingCoroutine); stoppingCoroutine->_caller = 0; *qt_currentCoroutine.localData() = continuingCoroutine; switchStack(continuingCoroutine->_stackPointer, &stoppingCoroutine->_stackPointer); }
/*! Passes control to the coroutine. The coroutine will run until it terminates or is stopped by a call to yield(). Returns whether it can be continued again. Calling this function is only valid if in the NotStarted or Stopped state. \sa yield() */ bool Coroutine::cont() { Q_ASSERT(_status == NotStarted || _status == Stopped); Q_ASSERT(!_caller); if (!_stackPointer) createStack(); _status = Running; _caller = *qt_currentCoroutine.localData(); *qt_currentCoroutine.localData() = this; switchStack(_stackPointer, &_caller->_stackPointer); return _status != Terminated; }