void _m_emit(event_code evt_code, const Arg& arg, Mfptr mfptr) { const int pos = static_cast<int>(evt_code); if (realizer_ && (method_state::not_overrided != mth_state_[pos])) { _m_bground_pre(); if (method_state::pending == mth_state_[pos]) { (realizer_->*mfptr)(graphics, arg); //Check realizer, when the window is closed in that event handler, the drawer will be //detached and realizer will be a nullptr if(realizer_) mth_state_[pos] = (realizer_->_m_overrided(evt_code) ? method_state::overrided : method_state::not_overrided); } else (realizer_->*mfptr)(graphics, arg); if (_m_lazy_decleared()) { _m_draw_dynamic_drawing_object(); _m_bground_end(); } } }
void _m_emit(event_code evt_code, const Arg& arg, Mfptr mfptr) { const int pos = static_cast<int>(evt_code); auto realizer = this->realizer(); auto & mth_state = _m_mth_state(pos); if (realizer && (method_state::not_overrided != mth_state)) { _m_effect_bground(true); if (method_state::pending == mth_state) { (realizer->*mfptr)(graphics, arg); //Check realizer, when the window is closed in that event handler, the drawer will be //detached and realizer will be a nullptr if (realizer) mth_state = (realizer->_m_overrided(evt_code) ? method_state::overrided : method_state::not_overrided); } else (realizer->*mfptr)(graphics, arg); if (_m_lazy_decleared()) _m_effect_bground(false); } }