//
/// 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();
}
Exemple #2
0
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();
}
Exemple #3
0
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();
}
Exemple #6
0
// 새 유저객체를 만들어 유저매니저에 넣는다.
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;
            }
        }
    }
}
Exemple #10
0
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;
    }
}
Exemple #13
0
bool wxMenuBase::Destroy(wxMenuItem *item)
{
    wxCHECK_MSG( item, false, wxT("invalid item in wxMenu::Destroy") );

    return DoDestroy(item);
}
Exemple #14
0
void TWindow::DoClose()
{
	DoDestroy();
}
Exemple #15
0
void TWindow::Destroy()
{
	DoDestroy();
}