Exemple #1
0
FWL_ERR CFWL_NoteDriver::Run() {
  CFWL_WidgetMgr* pWidgetMgr = static_cast<CFWL_WidgetMgr*>(FWL_GetWidgetMgr());
  if (!pWidgetMgr)
    return FWL_ERR_Indefinite;
#if (_FX_OS_ == _FX_MACOSX_)
  IFWL_AdapterWidgetMgr* adapterWidgetMgr = pWidgetMgr->GetAdapterWidgetMgr();
  CFWL_NoteLoop* pTopLoop = GetTopLoop();
  if (pTopLoop) {
    CFWL_WidgetImp* formImp = pTopLoop->GetForm();
    if (formImp) {
      IFWL_Widget* pForm = formImp->GetInterface();
      adapterWidgetMgr->RunLoop(pForm);
    }
  }
#elif(_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_)
  FX_BOOL bIdle = TRUE;
  int32_t iIdleCount = 0;
  CFWL_NoteLoop* pTopLoop = NULL;
  for (;;) {
    pTopLoop = GetTopLoop();
    if (!pTopLoop || !pTopLoop->ContinueModal()) {
      break;
    }
    if (UnqueueMessage(pTopLoop)) {
      continue;
    }
    while (bIdle && !(pWidgetMgr->CheckMessage_Native())) {
      if (FWL_ERR_Indefinite == pTopLoop->Idle(iIdleCount++)) {
        bIdle = FALSE;
      }
    }
    do {
      if (FWL_ERR_Indefinite == pWidgetMgr->DispatchMessage_Native()) {
        break;
      }
      if (pWidgetMgr->IsIdleMessage_Native()) {
        bIdle = TRUE;
        iIdleCount = 0;
      }
    } while (pWidgetMgr->CheckMessage_Native());
  }
#elif(_FX_OS_ == _FX_LINUX_DESKTOP_)
  CFWL_NoteLoop* pTopLoop = NULL;
  for (;;) {
    pTopLoop = GetTopLoop();
    if (!pTopLoop || !pTopLoop->ContinueModal()) {
      break;
    }
    if (UnqueueMessage(pTopLoop)) {
      continue;
    }
    if (pWidgetMgr->CheckMessage_Native()) {
      pWidgetMgr->DispatchMessage_Native();
    }
  }
#endif
  return FWL_ERR_Succeeded;
}
Exemple #2
0
FWL_ERR CFWL_NoteLoop::EndModalLoop() {
  m_bContinueModal = FALSE;
#if (_FX_OS_ == _FX_MACOSX_)
  CFWL_WidgetMgr* pWidgetMgr = static_cast<CFWL_WidgetMgr*>(FWL_GetWidgetMgr());
  IFWL_AdapterWidgetMgr* adapterWidgetMgr = pWidgetMgr->GetAdapterWidgetMgr();
  adapterWidgetMgr->EndLoop();
#endif
  return FWL_ERR_Succeeded;
}