//------------------------------------------------------------------------------ // UISuspendFocusMgr.cpp // (C) 2005 Webzen Sunstudio //------------------------------------------------------------------------------ #include "SunClientPrecompiledHeader.h" //#include ".\uisuspendfocusmgr.h" //#include "InterfaceManager.h" //#include "SolarDialog.h" //#include "globalfunc.h" ////------------------------------------------------------------------------------------------- ///** //*/ //UISuspendFocusMgr::UISuspendFocusMgr(void) //{ //} // ////------------------------------------------------------------------------------------------- ///** //*/ //UISuspendFocusMgr::~UISuspendFocusMgr(void) //{ // ClearFocus(); //} // // ////------------------------------------------------------------------------------------------- ///** // SetFocusCtrl È£Ãâ½Ã ¶Ç´Â À¯ÀúÀÇ ¸¶¿ì½º ÀԷ¿¡ ÀÇÇØ¼­ È£Ãâ // ÇöÀç´Â Edit ÄÁÆ®·Ñ¿¡ ÀÇÇØ¼­¸¸ Àǹ̰¡ ÀÖ´Ù. //*/ //BOOL //UISuspendFocusMgr::ChangeFocusTransact(SolarDialog * pDlg, WzID wzControlID) //{ // assert(pDlg); // if (!pDlg) // { // return FALSE; // } // // WzID DialogID = (WzID)pDlg->GetDialogWZ()->GetDlgID(); // WzID ControlID = wzControlID; // // CControlWZ * pControl = pDlg->GetDialogWZ()->GetControlWZ( ControlID ); // if ( !pControl ) // { // RequestFocusTransact(pDlg); // } // else // if ( CTRL_KIND_EDIT != pControl->GetCtrlInfo()->m_dwKind ) // { // // ¿¡µðÅͰ¡ ¾Æ´Ñ ´Ù¸¥ ÄÁÆ®·Ñ // RequestFocusTransact(pDlg); // } // else // { // // Á¤»óÀûÀ¸·Î ¿¡µðÅÍ·Î À̵¿ÇÒ¶§. // // // °°Àº ´ÙÀ̾ó·Î±×ÀÇ Á¤º¸°¡ ÀÖ³Ä? // FOCUS_ITR itr = find(DialogID); // if (this->m_SuspendFocusDeque.end() != itr) // { // // ÀÖ´Ù¸é °»½Å // update(DialogID, ControlID); // } // else // { // // ¾ø´Ù¸é »õ·Î ³ÖÀ½. // add(DialogID, ControlID); // } // } // // return TRUE; //} // //void //UISuspendFocusMgr::RequestFocusTransact(SolarDialog * pDlg) //{ // assert(pDlg); // if (!pDlg) // { // return; // } // // if ( 0 == m_SuspendFocusDeque.size() ) // { // return; // } // // this->returnPendingFocus(); //} // ////------------------------------------------------------------------------------------------- ///** ´ÙÀ̾ó·Î±×¸¦ ÇÏÀ̵å ÇÒ¶§ È£ÃâÇØÁØ´Ù. //*/ //void //UISuspendFocusMgr::RemoveFocus(SolarDialog * pDlg) //{ // if ( !pDlg ) // { // return; // } // // remove(pDlg->GetDialogWZ()->GetDlgID()); // // if (m_SuspendFocusDeque.size()) // { // // ÆæµùµÈ Æ÷Ä¿½º°¡ ÀÖ´Ù. // this->returnPendingFocus(); // } //} // ////------------------------------------------------------------------------------------------- ///** //*/ //void //UISuspendFocusMgr::ForceChangeFocus(SolarDialog * pDlg, WzID wzControlID) //{ // if ( !this->isValidFocus( pDlg, wzControlID) ) // { // return; // } // // this->ClearFocus(); // this->add(pDlg->GetDialogWZ()->GetDlgID(), wzControlID); // this->returnPendingFocus(); //} // ////------------------------------------------------------------------------------------------- ///** //*/ //void //UISuspendFocusMgr::ClearFocus() //{ // FOCUS_ITR itr = m_SuspendFocusDeque.begin(); // // while (itr != m_SuspendFocusDeque.end()) // { // UISuspendFocus * pInfo = (*itr); // // SAFE_DELETE( pInfo ); // // itr++; // } // // m_SuspendFocusDeque.clear(); //} // ////------------------------------------------------------------------------------------------- ///** //*/ //BOOL //UISuspendFocusMgr::isValidFocus(SolarDialog * pDlg, WzID ControlID) //{ // if ( !pDlg ) // { // return FALSE; // } // // CControlWZ * pControl = pDlg->GetControlWZ(ControlID); // if ( !pControl ) // { // return FALSE; // } // // if ( CTRL_KIND_EDIT != pControl->GetCtrlInfo()->m_dwKind ) // { // return FALSE; // } // // return TRUE; //} // ////------------------------------------------------------------------------------------------- ///** //*/ //FOCUS_ITR //UISuspendFocusMgr::find( WzID DialogID) //{ // FOCUS_ITR itr = m_SuspendFocusDeque.begin(); // // while (itr != m_SuspendFocusDeque.end()) // { // UISuspendFocus * pInfo = (*itr); // // if ( pInfo->wzDialogID == DialogID ) // { // break; // } // // itr++; // } // // return itr; //} // ////------------------------------------------------------------------------------------------- ///** //*/ //BOOL //UISuspendFocusMgr::add(WzID DialogID, WzID ControlID ) //{ // if ( this->m_SuspendFocusDeque.end() != find(DialogID) ) // { // return FALSE; // } // // UISuspendFocus * pSuspendFocus = new UISuspendFocus(DialogID, ControlID); // if ( !pSuspendFocus ) // { // return FALSE; // } // // this->m_SuspendFocusDeque.push_front( pSuspendFocus ); // // return TRUE; //} // ////------------------------------------------------------------------------------------------- ///** //*/ //void //UISuspendFocusMgr::remove( WzID DialogID ) //{ // FOCUS_ITR itr = find(DialogID); // // if ( itr == m_SuspendFocusDeque.end() ) // { // return; // } // // m_SuspendFocusDeque.erase( itr ); //} // ////------------------------------------------------------------------------------------------- ///** //*/ //void //UISuspendFocusMgr::update( WzID DialogID, WzID ControlID ) //{ // FOCUS_ITR itr = find(DialogID); // // if ( itr == m_SuspendFocusDeque.end() ) // { // return; // } // // UISuspendFocus * pFocus = *itr; // SAFE_DELETE(pFocus); // m_SuspendFocusDeque.erase( itr ); // // add(DialogID, ControlID); //} // ////------------------------------------------------------------------------------------------- ///** ÆæµùµÈ ´ÙÀ̾ó·Î±×ÀÇ ÄÁÆ®·Ñ·Î Æ÷Ä¿½º¸¦ µ¹·ÁÁØ´Ù. //*/ //void //UISuspendFocusMgr::returnPendingFocus() //{ // if (0 == this->m_SuspendFocusDeque.size()) // { // return; // } // // FOCUS_ITR itr = this->m_SuspendFocusDeque.begin(); // UISuspendFocus * pFocus = *itr; // SolarDialog * pFocusDlg = g_InterfaceManager.GetDialog((WzID) pFocus->wzDialogID); // if ( pFocusDlg ) // { // if ( pFocusDlg->IsSkipCheckSuspendFocus() ) // { // return; // } // // CCtrlDxEditBox * pFocusEdit = static_cast( pFocusDlg->GetControlWZ( pFocus->wzControlID ) ); // // if ( pFocusEdit ) // { // g_InterfaceManager.GetDialogManager()->RequestFocus( pFocusDlg->GetDialogWZ() ); // GlobalFunc::SetFocus(pFocusDlg, pFocusEdit); // } // } //}