--- a/DboxMain.h
+++ b/DboxMain.h
@@ -114,6 +114,9 @@
   void UpdateListItemUser(const int lindex, const CString &newUser)
   {UpdateListItem(lindex, CItemData::USER, newUser);}
   void SetHeaderInfo();
+  CString GetHeaderText(const int ihdr);
+  int GetHeaderWidth(const int ihdr);
+  void CalcHeaderWidths();
 
   void SetReadOnly(bool state);
   bool IsReadOnly() const {return m_IsReadOnly;};
@@ -383,10 +386,10 @@
   int m_nColumns;
   int m_nColumnTypeToItem[CItemData::LAST];
   int m_nColumnOrderToItem[CItemData::LAST];
-  int m_nColumnItemType[CItemData::LAST];
-  int m_nColumnItemWidth[CItemData::LAST];
-  HFONT m_hFontTree;
-  LOGFONT m_treefont;
+  int m_nColumnTypeByItem[CItemData::LAST];
+  int m_nColumnWidthByItem[CItemData::LAST];
+  int m_nColumnHeaderWidthByType[CItemData::LAST];
+  CFont *m_pFontTree;
   CItemData *m_selectedAtMinimize; // to restore selection upon un-minimize
   CString m_lock_displaystatus;
   bool m_inExit; // help U3ExitNow
@@ -398,7 +401,7 @@
   void ResetIdleLockCounter();
   bool DecrementAndTestIdleLockCounter();
   void ToClipboard(const CMyString &data);
-  void ExtractFont(CString& str);
+  void ExtractFont(CString& str, LOGFONT *ptreefont);
   CString GetToken(CString& str, LPCTSTR c);
   int SaveIfChanged();
   void CheckExpiredPasswords();
@@ -411,7 +414,8 @@
   void MakeSortedItemList(ItemList &il);
   void SetColumns();  // default order
   void SetColumns(const CString cs_ListColumns, const CString cs_ListColumnsWidths);
-  void SetColumns(const std::bitset<CItemData::LAST> bscolumn);
+  void SetColumns(const CItemData::FieldBits bscolumn);
+  void ResizeColumns();
 };
 
 // Following used to keep track of display vs data