diff options
Diffstat (limited to 'src/windows/leash/LeashView.cpp')
-rw-r--r-- | src/windows/leash/LeashView.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/windows/leash/LeashView.cpp b/src/windows/leash/LeashView.cpp index c16feeff1b..1b67937c51 100644 --- a/src/windows/leash/LeashView.cpp +++ b/src/windows/leash/LeashView.cpp @@ -44,6 +44,7 @@ IMPLEMENT_DYNCREATE(CLeashView, CFormView) BEGIN_MESSAGE_MAP(CLeashView, CFormView) //{{AFX_MSG_MAP(CLeashView) + ON_MESSAGE(WM_WARNINGPOPUP, OnWarningPopup) ON_MESSAGE(WM_GOODBYE, OnGoodbye) ON_MESSAGE(WM_TRAYICON, OnTrayIcon) ON_NOTIFY(TVN_ITEMEXPANDED, IDC_TREEVIEW, OnItemexpandedTreeview) @@ -172,7 +173,7 @@ CFormView(CLeashView::IDD) m_publicIPAddress = 0; m_autoRenewTickets = 0; m_autoRenewalAttempted = 0; - + m_pWarningMessage = NULL; m_bIconAdded = FALSE; m_bIconDeleted = FALSE; #ifndef KRB5_TC_NOTICKET @@ -2073,6 +2074,27 @@ void CLeashView::SetTrayIcon(int nim, int state) m_bIconDeleted = TRUE; } +BOOL CLeashView::PostWarningMessage(const CString& message) +{ + if (m_pWarningMessage) + { + return FALSE; // can't post more than one warning at a time + } + m_pWarningMessage = new CString(message); + PostMessage(WM_WARNINGPOPUP); + return TRUE; +} + +LRESULT CLeashView::OnWarningPopup(WPARAM wParam, LPARAM lParam) +{ + CLeashMessageBox leashMessageBox(CMainFrame::m_isMinimum ? GetDesktopWindow() : NULL, + *m_pWarningMessage, 100000); + leashMessageBox.DoModal(); + delete m_pWarningMessage; + m_pWarningMessage = NULL; + return 0L; +} + BOOL CLeashView::PreTranslateMessage(MSG* pMsg) { if ( pMsg->message == ID_OBTAIN_TGT_WITH_LPARAM ) @@ -2464,9 +2486,7 @@ BOOL CLeashView::PreTranslateMessage(MSG* pMsg) ReleaseMutex(ticketinfo.lockObj); AlarmBeep(); - CLeashMessageBox leashMessageBox(!CMainFrame::m_isMinimum ? GetDesktopWindow() : NULL, - lowTicketWarning, 100000); - leashMessageBox.DoModal(); + PostWarningMessage(lowTicketWarning); if (WaitForSingleObject( ticketinfo.lockObj, 100 ) != WAIT_OBJECT_0) throw("Unable to lock ticketinfo"); } |