diff --git a/vncviewer/InfoDialog.cxx b/vncviewer/InfoDialog.cxx
index 0d2313a..e74896d 100644
--- a/vncviewer/InfoDialog.cxx
+++ b/vncviewer/InfoDialog.cxx
@@ -1,5 +1,5 @@
-/* Copyright (C) 2002-2004 RealVNC Ltd.  All Rights Reserved.
- *    
+/* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved.
+ * 
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -17,7 +17,7 @@
  */
 #include <vncviewer/InfoDialog.h>
 #include <vncviewer/resource.h>
-#include <vncviewer/CView.h>
+#include <vncviewer/CConn.h>
 #include <rfb/secTypes.h>
 #include <rfb/encodings.h>
 #include <rfb/CSecurity.h>
@@ -29,37 +29,37 @@
 static LogWriter vlog("Info");
 
 
-bool InfoDialog::showDialog(CView* vw) {
-  view = vw;
+bool InfoDialog::showDialog(CConn* cc) {
+  conn = cc;
   return Dialog::showDialog(MAKEINTRESOURCE(IDD_CONNECTION_INFO));
 }
 
 void InfoDialog::initDialog() {
   char buf[256];
 
-  setItemString(IDC_INFO_NAME, TStr(view->cp.name()));
+  setItemString(IDC_INFO_NAME, TStr(conn->cp.name()));
 
-  setItemString(IDC_INFO_HOST, TCharArray(view->sock->getPeerAddress()).buf);
+  setItemString(IDC_INFO_HOST, TCharArray(conn->getSocket()->getPeerAddress()).buf);
 
-  Rect bufRect = view->buffer->getRect();
-  sprintf(buf, "%dx%d", bufRect.width(), bufRect.height());
+  sprintf(buf, "%dx%d", conn->cp.width, conn->cp.height);
   setItemString(IDC_INFO_SIZE, TStr(buf));
 
-  view->cp.pf().print(buf, 256);
+  conn->cp.pf().print(buf, 256);
   setItemString(IDC_INFO_PF, TStr(buf));
 
-  view->serverDefaultPF.print(buf, 256);
+  conn->getServerDefaultPF().print(buf, 256);
   setItemString(IDC_INFO_DEF_PF, TStr(buf));
 
-  setItemString(IDC_REQUESTED_ENCODING, TStr(encodingName(view->getOptions().preferredEncoding)));
-  setItemString(IDC_LAST_ENCODING, TStr(encodingName(view->lastUsedEncoding())));
+  setItemString(IDC_REQUESTED_ENCODING, TStr(encodingName(conn->getOptions().preferredEncoding)));
+  setItemString(IDC_LAST_ENCODING, TStr(encodingName(conn->lastUsedEncoding())));
 
-  sprintf(buf, "%d kbits/s", view->sock->inStream().kbitsPerSecond());
+  sprintf(buf, "%d kbits/s", conn->getSocket()->inStream().kbitsPerSecond());
   setItemString(IDC_INFO_LINESPEED, TStr(buf));
 
-  sprintf(buf, "%d.%d", view->cp.majorVersion, view->cp.minorVersion);
+  sprintf(buf, "%d.%d", conn->cp.majorVersion, conn->cp.minorVersion);
   setItemString(IDC_INFO_VERSION, TStr(buf));
 
-  int secType = view->getCurrentCSecurity()->getType();
-  setItemString(IDC_INFO_SECURITY, TStr(secTypeName(secType)));
+  const CSecurity* cSec = conn->getCurrentCSecurity();
+  setItemString(IDC_INFO_SECURITY, TStr(secTypeName(cSec->getType())));
+  setItemString(IDC_INFO_ENCRYPTION, TStr(cSec->description()));
 }
