summaryrefslogtreecommitdiffstats
path: root/src/windows/leash/LeashView.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/windows/leash/LeashView.cpp')
-rw-r--r--src/windows/leash/LeashView.cpp28
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");
}