// /// Responds to a WM_DESTROY message when a window is removed from the /// Clipboard-viewer chain. // void TClipboardViewer::EvDestroy() { if (DoDestroy() == esComplete) return; TWindow::EvDestroy(); }
wxFrame::~wxFrame() { m_isBeingDeleted = true; if (m_clientArea) { XtRemoveEventHandler((Widget) m_clientArea, ExposureMask, False, wxUniversalRepaintProc, (XtPointer) this); } if (GetMainWidget()) Show(false); if (m_frameMenuBar) { m_frameMenuBar->DestroyMenuBar(); // Hack to stop core dump on Ultrix, OSF, for some strange reason. #if MOTIF_MENUBAR_DELETE_FIX GetMenuBar()->SetMainWidget((WXWidget) NULL); #endif delete m_frameMenuBar; m_frameMenuBar = NULL; } if (m_frameStatusBar) { delete m_frameStatusBar; m_frameStatusBar = NULL; } PreDestroy(); DoDestroy(); }
void obj_ServerVehicle::DoDamage(float damage, DWORD killerNetworkID) { if(state_ == obj_ServerVehicle::Vehicle_Killed) return; Health -= damage; r3dOutToLog("Vehicle Damage: %f\n", damage, Health); if(Health < 0) { DoDestroy(killerNetworkID); return; } if(Health < 130 && state_ != Vehicle_Damaged) { state_ = Vehicle_Damaged; // PKT_S2C_VehicleSetState_s n; // n.state = (BYTE)state_; // n.killerId = gp2pnetid_t(killerNetworkID); // gServerLogic.p2pBroadcastToActive(this, &n, sizeof(n)); } return; }
void wxCodeCompletionBox::StcKeyDown(wxKeyEvent& event) { switch(event.GetKeyCode()) { case WXK_UP: DoScrollUp(); break; case WXK_DOWN: DoScrollDown(); break; case WXK_PAGEDOWN: { DoPgDown(); break; } case WXK_PAGEUP: { DoPgUp(); break; } case WXK_ESCAPE: case WXK_LEFT: case WXK_RIGHT: case WXK_HOME: case WXK_END: case WXK_DELETE: case WXK_NUMPAD_DELETE: case WXK_ALT: case WXK_WINDOWS_LEFT: case WXK_WINDOWS_RIGHT: case WXK_CONTROL: DoDestroy(); event.Skip(); break; case WXK_TAB: case WXK_RETURN: case WXK_NUMPAD_ENTER: // Insert the selection InsertSelection(); DoDestroy(); break; default: event.Skip(); break; } }
void wxCodeCompletionBox::ShowCompletionBox(wxStyledTextCtrl* ctrl, const wxCodeCompletionBoxEntry::Vec_t& entries) { m_index = 0; m_stc = ctrl; m_allEntries = entries; // Keep the start position if(m_startPos == wxNOT_FOUND) { m_startPos = m_stc->WordStartPosition(m_stc->GetCurrentPos(), true); } // Filter all duplicate entries from the list (based on simple string match) RemoveDuplicateEntries(); // Filter results based on user input FilterResults(); // If we got a single match - insert it if((m_entries.size() == 1) && (m_flags & kInsertSingleMatch)) { // single match InsertSelection(); DoDestroy(); return; } if(m_entries.empty()) { // no entries to display DoDestroy(); return; } DoShowCompletionBox(); if(m_stc) { // Set the focus back to the completion control m_stc->CallAfter(&wxStyledTextCtrl::SetFocus); } // Display the help window DoDisplayTipWindow(); }
// 새 유저객체를 만들어 유저매니저에 넣는다. XSPUserBase XEWinSocketSvr::CreateAddToUserMng( XSPWinConnInServer spConnect, XSPDBAcc spAccount ) { // 커넥션이 끊긴채로 왔으면 생성하지 않는다. // 커넥션이 생성되고 메인스레드의 Process에서 XUser가 연결되기까지 // 아주 잠깐동안의 시간이 있는데 이시간동안 만약 접속이 끊기면 유저 등록을 취소해야한다. if( spConnect->IsDisconnected() ) { // 드문경우라서 로그를 한번 남겨봄. 너무 자주나오면 없앰. //#if _DEV_LEVEL <= DLV_DEV_EXTERNAL CONSOLE_THIS( "connect", "pConnect is disconnected. ip=%s", spConnect->GetszIP() ); //#endif return nullptr; } XBREAK( m_pUserMng == nullptr ); // 유저 생성 auto spNewUser = CreateUser( spConnect ); // virtual // 아마도 메모리풀 꽉참? 혹은 CreateUser미구현? if( XBREAK( spNewUser == nullptr ) ) return nullptr; spNewUser->SetspDBAccount( spAccount ); // 유저매니저에 넣는다. // 넣기전 중복체크 const ID idUser = spNewUser->GetidUser(); { auto spExist = m_pUserMng->GetspUserFromidAcc( idUser ); if( spExist ) { #if _DEV_LEVEL <= DLV_DEV_EXTERNAL CONSOLE( "중복접속 계정: idAcc=%d", spExist->GetidUser() ); #endif spExist->DoDisconnect(); // 일단 먼저 끊고 spExist->DoDestroy(); // 커넥션 삭제되도록 파괴 메시지 m_pUserMng->DelUser( spExist ); // 기존유저에게 이벤트핸들링 호출하고 리스트에서 삭제 spExist.reset(); } } // 새 유저객체 등록 auto bSuccess = m_pUserMng->Add( spNewUser ); // // if( XBREAK( bSuccess == false ) ) { // spNewUser = nullptr; // } if( XASSERT( bSuccess ) ) { spConnect->SetspUser( spNewUser ); // 커넥션에 유저를 붙인다. // idAcc로 커넥션 찾는 맵에 등록. auto pMap = &m_Logined.m_shoMapByidAcc.GetSharedObj(); (*pMap)[ spAccount->GetidAccount() ] = spConnect; m_Logined.m_shoMapByidAcc.ReleaseSharedObj(); spNewUser->OnLogined(); // 유저객체로 핸들러를 날려준다. } else { spNewUser = nullptr; } return spNewUser; }
void wxCodeCompletionBox::StcCharAdded(wxStyledTextEvent& event) { event.Skip(); int keychar = m_stc->GetCharAt(m_stc->PositionBefore(m_stc->GetCurrentPos())); if(((keychar >= 65) && (keychar <= 90)) || // A-Z ((keychar >= 97) && (keychar <= 122)) || // a-z ((keychar >= 48) && (keychar <= 57)) || // 0-9 (keychar == 95)) // Underscore { DoUpdateList(); } else { DoDestroy(); } }
void wxCodeCompletionBox::DoUpdateList() { bool refreshList = FilterResults(); int curpos = m_stc->GetCurrentPos(); if(m_entries.empty() || curpos < m_startPos || refreshList) { if((m_entries.empty() || refreshList) && (m_flags & kRefreshOnKeyType)) { // Trigger a new CC box wxCommandEvent event(wxEVT_MENU, XRCID("complete_word")); wxTheApp->GetTopWindow()->GetEventHandler()->AddPendingEvent(event); } DoDestroy(); } else { DoDisplayTipWindow(); Refresh(); } }
void wxCodeCompletionBox::OnLeftDClick(wxMouseEvent& event) { // Check the scroll area if(m_scrollBottomRect.Contains(event.GetPosition())) { DoScrollDown(); } else if(m_scrollTopRect.Contains(event.GetPosition())) { DoScrollUp(); } else { for(size_t i = 0; i < m_entries.size(); ++i) { if(m_entries.at(i)->m_itemRect.Contains(event.GetPosition())) { m_index = i; InsertSelection(); DoDestroy(); return; } } } }
wxDialog::~wxDialog() { m_isBeingDeleted = true; delete m_eventLoop; if (m_mainWidget) { XtRemoveEventHandler((Widget) m_mainWidget, ExposureMask, False, wxUniversalRepaintProc, (XtPointer) this); } m_modalShowing = false; if (!wxUSE_INVISIBLE_RESIZE && m_mainWidget) { XtUnmapWidget((Widget) m_mainWidget); } PreDestroy(); DoDestroy(); }
void wxCodeCompletionBox::StcLeftDown(wxMouseEvent& event) { event.Skip(); DoDestroy(); }
void wxCodeCompletionBox::StcKeyDown(wxKeyEvent& event) { switch(event.GetKeyCode()) { case WXK_UP: DoScrollUp(); break; case WXK_DOWN: DoScrollDown(); break; case WXK_PAGEDOWN: { int newindex = m_index + (LINES_PER_PAGE - 1); if(newindex >= (int)m_entries.size()) { newindex = (int)m_entries.size() - 1; } // only refresh if there was an actual change if(m_index != newindex) { m_index = newindex; DoDisplayTipWindow(); Refresh(); } break; } case WXK_PAGEUP: { int newindex = m_index - (LINES_PER_PAGE - 1); if(newindex < 0) { newindex = 0; } // only refresh if there was an actual change if(m_index != newindex) { m_index = newindex; DoDisplayTipWindow(); Refresh(); } break; } case WXK_ESCAPE: case WXK_LEFT: case WXK_RIGHT: case WXK_HOME: case WXK_END: case WXK_DELETE: case WXK_NUMPAD_DELETE: case WXK_ALT: case WXK_WINDOWS_LEFT: case WXK_WINDOWS_RIGHT: case WXK_CONTROL: DoDestroy(); event.Skip(); break; case WXK_TAB: case WXK_RETURN: case WXK_NUMPAD_ENTER: // Insert the selection InsertSelection(); DoDestroy(); break; default: event.Skip(); break; } }
bool wxMenuBase::Destroy(wxMenuItem *item) { wxCHECK_MSG( item, false, wxT("invalid item in wxMenu::Destroy") ); return DoDestroy(item); }
void TWindow::DoClose() { DoDestroy(); }
void TWindow::Destroy() { DoDestroy(); }