--- a/DboxMain.cpp
+++ b/DboxMain.cpp
@@ -77,7 +77,7 @@
      m_bSortAscending(true), m_iSortedColumn(CItemData::TITLE),
      m_lastFindCS(FALSE), m_lastFindStr(_T("")),
      m_core(app.m_core), m_lock_displaystatus(_T("")),
-     m_hFontTree(NULL), m_IsReadOnly(false),
+     m_pFontTree(NULL), m_IsReadOnly(false),
      m_selectedAtMinimize(NULL), m_bTSUpdated(false),
      m_iSessionEndingStatus(IDIGNORE),
      m_bFindActive(false), m_pchTip(NULL), m_pwchTip(NULL),
@@ -125,8 +125,8 @@
 {
   delete m_pchTip;
   delete m_pwchTip;
-
-  ::DeleteObject(m_hFontTree);
+  delete m_pFontTree;
+
   CFindDlg::EndIt();
   // Save Find wrap value
   PWSprefs::GetInstance()->SetPref(PWSprefs::FindWraps, m_bFindWrap);
@@ -388,6 +388,22 @@
   m_pctlItemListHdr = m_ctlItemList.GetHeaderCtrl();
   m_pctlItemListHdr->SetDlgCtrlID(IDC_LIST_HEADER);
 
+  // Set up fonts before playing with Tree/List views
+  m_pFontTree = new CFont;
+  CString szTreeFont = prefs->GetPref(PWSprefs::TreeFont);
+
+  if (szTreeFont != _T("")) {
+    LOGFONT *ptreefont = new LOGFONT;
+    memset(ptreefont, 0, sizeof(LOGFONT)); 
+    ExtractFont(szTreeFont, ptreefont);
+    m_pFontTree->CreateFontIndirect(ptreefont);
+    // transfer the fonts to the tree windows
+    m_ctlItemTree.SetFont(m_pFontTree);
+    m_ctlItemList.SetFont(m_pFontTree);
+    m_pctlItemListHdr->SetFont(m_pFontTree);
+    delete ptreefont;
+  }
+
   const CString lastView = prefs->GetPref(PWSprefs::LastView);
   m_IsListView = true;
   if (lastView != _T("list")) {
@@ -397,31 +413,7 @@
     m_IsListView = false;
   }
 
-  // Get default column width for datetime fields
-  TCHAR time_str[80], datetime_str[80];
-  // Use "fictitious" longest English date
-  SYSTEMTIME systime;
-  systime.wYear = (WORD)2000;
-  systime.wMonth = (WORD)9;
-  systime.wDay = (WORD)30;
-  systime.wDayOfWeek = (WORD)3;
-  systime.wHour = (WORD)23;
-  systime.wMinute = (WORD)44;
-  systime.wSecond = (WORD)55;
-  systime.wMilliseconds = (WORD)0;
-  TCHAR szBuf[80];
-  VERIFY(::GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, szBuf, 80));
-  GetDateFormat(LOCALE_USER_DEFAULT, 0, &systime, szBuf, datetime_str, 80);
-  szBuf[0] = _T(' ');  // Put a blank between date and time
-  VERIFY(::GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, &szBuf[1], 79));
-  GetTimeFormat(LOCALE_USER_DEFAULT, 0, &systime, szBuf, time_str, 80);
-#if _MSC_VER >= 1400
-  _tcscat_s(datetime_str, 80, time_str);
-#else
-  _tcscat(datetime_str, 80, time_str);
-#endif
-
-  m_iDateTimeFieldWidth = m_ctlItemList.GetStringWidth(datetime_str) + 6;
+  CalcHeaderWidths();
 
   CString cs_ListColumns = prefs->GetPref(PWSprefs::ListColumns);
   CString cs_ListColumnsWidths = prefs->GetPref(PWSprefs::ColumnWidths);
@@ -471,16 +463,6 @@
   m_core.SetUseDefUser(prefs->GetPref(PWSprefs::UseDefUser));
   m_core.SetDefUsername(prefs->GetPref(PWSprefs::DefUserName));
 
-  CString szTreeFont = prefs->GetPref(PWSprefs::TreeFont);
-
-  if (szTreeFont != _T("")) {
-    ExtractFont(szTreeFont);
-    m_hFontTree = ::CreateFontIndirect(&m_treefont);
-    // transfer the fonts to the tree windows
-    m_ctlItemTree.SendMessage(WM_SETFONT, (WPARAM) m_hFontTree, true);
-    m_ctlItemList.SendMessage(WM_SETFONT, (WPARAM) m_hFontTree, true);
-  }
-
   SetMenu(app.m_mainmenu);  // Now show menu...
 }
 
@@ -511,7 +493,7 @@
     TRACE("After drag\n");
     for (int i = 0; i < m_nColumns; i++) {
       TRACE("Column=%d,OrderToItem=%d,ItemType=%d,ItemWidth=%d\n", i,
-          m_nColumnOrderToItem[i], m_nColumnItemType[i], m_nColumnItemWidth[i]);
+          m_nColumnOrderToItem[i], m_nColumnTypeByItem[i], m_nColumnWidthByItem[i]);
     }
     TRACE("TypeToItem=");
     for (int i = 0; i < CItemData::LAST; i++) {
@@ -1008,10 +990,18 @@
                 cs_PID = _T("");
             const CString cs_title(MAKEINTRESOURCE(IDS_FILEINUSE));
             CString cs_str;
+#ifdef PWS_STRICT_LOCKING // define if you don't want to allow user override
+            cs_str.Format(IDS_STRICT_LOCKED, curFile, cs_user_and_host, cs_PID);
+            int user_choice = MessageBox(cs_str, cs_title,
+                                         MB_OKCANCEL|MB_ICONQUESTION);
+#else
             cs_str.Format(IDS_LOCKED, curFile, cs_user_and_host, cs_PID);
-            switch(MessageBox(cs_str, cs_title,
-                              MB_YESNOCANCEL|MB_ICONQUESTION)) {
+            int user_choice = MessageBox(cs_str, cs_title,
+                                         MB_YESNOCANCEL|MB_ICONQUESTION);
+#endif
+            switch(user_choice) {
                 case IDYES:
+                case IDOK:
                     SetReadOnly(true);
                     retval = PWScore::SUCCESS;
                     break;
@@ -1769,6 +1759,16 @@
   if (!m_IsReadOnly && bMaintainDateTimeStamps) {
     ci->SetATime();
     SetChanged(TimeStamp);
+    // Need to update view if there
+    if (m_nColumnTypeToItem[CItemData::ATIME] != -1) {
+       // Get index of entry
+       DisplayInfo *di = (DisplayInfo *)ci->GetDisplayInfo();
+       // Get value in correct format
+       CString cs_atime = ci->GetATimeL();
+       // Update it
+       m_ctlItemList.SetItemText(di->list_index,
+           m_nColumnTypeToItem[CItemData::ATIME], cs_atime);
+    }
   }
 }