diff -urN --exclude=.svn ./CMakeLists.txt ./CMakeLists.txt
--- ./CMakeLists.txt	2009-03-20 06:54:20.000000000 +1000
+++ ./CMakeLists.txt	2009-12-15 20:50:23.915416903 +1000
@@ -70,8 +70,8 @@
 	find_package(X11)
 	
 	IF( X11_XTest_FOUND )
-		INCLUDE_DIRECTORIES( ${X11_XTest_INCLUDE_PATH} )
-		SET(AUTOTYPE_LIBRARIES ${X11_XTest_LIB})
+		INCLUDE_DIRECTORIES( ${X11_X11_INCLUDE_PATH} ${X11_XTest_INCLUDE_PATH} )
+		SET(AUTOTYPE_LIBRARIES ${X11_X11_LIB} ${X11_XTest_LIB})
 		ADD_DEFINITIONS(-DAUTOTYPE -DGLOBAL_AUTOTYPE)
 	ELSE( X11_XTest_FOUND )
 		SET(AUTOTYPE FALSE)
diff -urN --exclude=.svn ./src/Database.h ./src/Database.h
--- ./src/Database.h	2009-03-18 22:09:20.000000000 +1000
+++ ./src/Database.h	2009-12-15 20:50:22.627407114 +1000
@@ -233,7 +233,7 @@
 /*!
 This is the common base interface for databases. Every database class must implement this interface necessarily.
 */
-class IDatabase:public QObject{
+class IDatabase{
 public:
 	virtual ~IDatabase(){};
 	
diff -urN --exclude=.svn ./src/Kdb3Database.cpp ./src/Kdb3Database.cpp
--- ./src/Kdb3Database.cpp	2009-08-29 03:22:44.000000000 +1100
+++ ./src/Kdb3Database.cpp	2009-12-15 20:50:22.627407114 +1000
@@ -609,6 +609,7 @@
 	
 	if ((crypto_size > 2147483446) || (!crypto_size && NumGroups)){
 		error=tr("Decryption failed.\nThe key is wrong or the file is damaged.");
+		KeyError=true;
 		LOAD_RETURN_CLEANUP
 	}
 	SHA256::hashBuffer(buffer+DB_HEADER_SIZE,FinalKey,crypto_size);
diff -urN --exclude=.svn ./src/lib/FileDialogs.cpp ./src/lib/FileDialogs.cpp
--- ./src/lib/FileDialogs.cpp	2008-03-13 06:37:54.000000000 +1000
+++ ./src/lib/FileDialogs.cpp	2009-12-15 20:50:19.906387263 +1000
@@ -18,6 +18,9 @@
  ***************************************************************************/
 
 #include <QFileDialog>
+#if QT_VERSION >= 0x040400
+	#include <QDesktopServices>
+#endif
 
 IFileDialog* KpxFileDialogs::iFileDialog=NULL;
 QtStandardFileDialogs DefaultQtDlgs;
@@ -146,8 +149,13 @@
 
 QString FileDlgHistory::getDir(const QString& name){
 	Entry e=History.value(name);
-	if(e.isNull())
+	if(e.isNull()) {
+#if QT_VERSION >= 0x040400
+		return QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation);
+#else
 		return QDir::homePath();
+#endif
+	}
 	else
 		return e.Dir;
 }
diff -urN --exclude=.svn ./src/src.pro ./src/src.pro
--- ./src/src.pro	2009-09-14 01:54:12.000000000 +1100
+++ ./src/src.pro	2009-12-15 20:50:22.624407012 +1000
@@ -63,7 +63,7 @@
 	INSTALLS += shareapp shararemime sharemimelnk sharepixmaps
 	
 	contains(DEFINES,AUTOTYPE){
-		LIBS += -lXtst
+		LIBS += -lX11 -lXtst
 		SOURCES += lib/HelperX11.cpp lib/AutoTypeX11.cpp
 		HEADERS += lib/HelperX11.h lib/AutoTypeX11.h
 	}
