Index: fbreader-0.12.10dfsg/fbreader/desktop/desktop
===================================================================
--- fbreader-0.12.10dfsg.orig/fbreader/desktop/desktop	2011-07-29 01:05:20.749470733 +0300
+++ fbreader-0.12.10dfsg/fbreader/desktop/desktop	2011-07-29 01:05:29.845515843 +0300
@@ -1,9 +1,5 @@
 [Desktop Entry]
-Name=E-book reader
-Name[ar]=قارئ الكتب الإلكترونية
-Name[es]=Lector de Libros
-Name[ru]=Чтение электронных книг
-Name[zh_CN]=电子书阅读
+Name=FBReader
 GenericName=E-book reader
 GenericName[ar]=قارئ الكتب الإلكترونية
 GenericName[es]=Lector de Libros
@@ -14,10 +10,9 @@
 Comment[es]=FBReader Lector de Libros Elecrónicos
 Comment[ru]=FBReader, программа для чтения электронных книг
 Comment[zh_CN]=FBReader 电子书阅读器
-TryExec=FBReader
-Exec=FBReader %F
+Exec=single-instance /usr/bin/fbreader
 StartupNotify=true
 Terminal=false
 Type=Application
-Icon=FBReader.png
+Icon=/usr/share/pixmaps/FBReader.png
 Categories=Office;Viewer;Literature;
Index: fbreader-0.12.10dfsg/zlibrary/ui/src/qt4/view/ZLQtPaintContext.cpp
===================================================================
--- fbreader-0.12.10dfsg.orig/zlibrary/ui/src/qt4/view/ZLQtPaintContext.cpp	2011-07-29 01:05:20.497469489 +0300
+++ fbreader-0.12.10dfsg/zlibrary/ui/src/qt4/view/ZLQtPaintContext.cpp	2011-07-29 01:05:29.849515859 +0300
@@ -37,28 +37,40 @@
 }
 
 ZLQtPaintContext::~ZLQtPaintContext() {
+	end();
 	if (myPixmap != 0) {
-		myPainter->end();
 		delete myPixmap;
 	}
 	delete myPainter;
 }
 
+void ZLQtPaintContext::begin() {
+	if (!myPainter->isActive()) {
+		myPainter->begin(myPixmap);
+		if (myFontIsStored) {
+			myFontIsStored = false;
+			setFont(myStoredFamily, myStoredSize, myStoredBold, myStoredItalic);
+		}
+	}
+}
+
+void ZLQtPaintContext::end() {
+	if (myPainter->isActive()) {
+		myPainter->end();
+	}
+}
+
 void ZLQtPaintContext::setSize(int w, int h) {
 	if (myPixmap != 0) {
 		if ((myPixmap->width() != w) || (myPixmap->height() != h)) {
-			myPainter->end();
+			end();
 			delete myPixmap;
 			myPixmap = 0;
 		}
 	}
 	if ((myPixmap == 0) && (w > 0) && (h > 0)) {
 		myPixmap = new QPixmap(w, h);
-		myPainter->begin(myPixmap);
-		if (myFontIsStored) {
-			myFontIsStored = false;
-			setFont(myStoredFamily, myStoredSize, myStoredBold, myStoredItalic);
-		}
+		begin();
 	}
 }
 
@@ -95,7 +107,7 @@
 		myStoredFamily = family;
 		myStoredSize = size;
 		myStoredBold = bold;
-		myStoredItalic= italic;
+		myStoredItalic = italic;
 	} else {
 		QFont font = myPainter->font();
 		bool fontChanged = false;
Index: fbreader-0.12.10dfsg/zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp
===================================================================
--- fbreader-0.12.10dfsg.orig/zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp	2011-07-29 01:05:20.405469032 +0300
+++ fbreader-0.12.10dfsg/zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp	2011-07-29 01:05:29.849515859 +0300
@@ -105,6 +105,7 @@
 			context.setSize(height(), width());
 			break;
 	}
+	context.begin();
 	myHolder.view()->paint();
 	QPainter realPainter(this);
 	switch (myHolder.rotation()) {
@@ -124,6 +125,7 @@
 			realPainter.drawPixmap(-1, 1 - width(), context.pixmap());
 			break;
 	}
+	context.end();
 }
 
 void ZLQtViewWidget::Widget::mousePressEvent(QMouseEvent *event) {
Index: fbreader-0.12.10dfsg/zlibrary/ui/src/qt4/view/ZLQtPaintContext.h
===================================================================
--- fbreader-0.12.10dfsg.orig/zlibrary/ui/src/qt4/view/ZLQtPaintContext.h	2011-07-29 01:05:20.453469265 +0300
+++ fbreader-0.12.10dfsg/zlibrary/ui/src/qt4/view/ZLQtPaintContext.h	2011-07-29 01:05:29.849515859 +0300
@@ -38,6 +38,9 @@
 	int width() const;
 	int height() const;
 
+	void begin();
+	void end();
+
 	void clear(ZLColor color);
 
 	void fillFamiliesList(std::vector<std::string> &families) const;
Index: fbreader-0.12.10dfsg/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp
===================================================================
--- fbreader-0.12.10dfsg.orig/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp	2011-07-29 01:05:20.541469706 +0300
+++ fbreader-0.12.10dfsg/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp	2011-07-29 01:05:29.849515859 +0300
@@ -66,12 +66,17 @@
 
 ZLQtApplicationWindow::ZLQtApplicationWindow(ZLApplication *application) :
 	ZLDesktopApplicationWindow(application),
+	myResourceSet(new ResourcePolicy::ResourceSet("player")),
 	myFullscreenToolBar(0),
 	myDocWidget(0),
 	myFullScreen(false),
 	myWasMaximized(false),
 	myCursorIsHyperlink(false) {
 
+	myResourceSet->addResourceObject(new ResourcePolicy::ScaleButtonResource);
+	myResourceSet->acquire();
+	QApplication::instance()->installEventFilter(this);
+
 	const std::string iconFileName = ZLibrary::ImageDirectory() + ZLibrary::FileNameDelimiter + ZLibrary::ApplicationName() + ".png";
 	QPixmap icon(iconFileName.c_str());
 	setWindowIcon(icon);
@@ -93,6 +98,7 @@
 	move(myXOption.value(), myYOption.value());
 
 	menuBar()->hide();
+	setStatusBar(0);
 	show();
 }
 
@@ -132,6 +138,7 @@
 			delete it->second;
 		}
 	}
+	myResourceSet->deleteResource(ResourcePolicy::ScaleButtonType);
 }
 
 void ZLQtApplicationWindow::setFullscreen(bool fullscreen) {
@@ -194,6 +201,15 @@
 	}
 }
 
+bool ZLQtApplicationWindow::eventFilter(QObject *obj, QEvent *event) {
+	if (event->type() == QEvent::ApplicationDeactivate) {
+		myResourceSet->release();
+	} else if (event->type() == QEvent::ApplicationActivate) {
+		myResourceSet->acquire();
+	}
+	return QMainWindow::eventFilter(obj, event);
+}
+
 void ZLQtApplicationWindow::addToolbarItem(ZLToolbar::ItemPtr item) {
 	QToolBar *tb = toolbar(type(*item));
 	QAction *action = 0;
Index: fbreader-0.12.10dfsg/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h
===================================================================
--- fbreader-0.12.10dfsg.orig/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h	2011-07-29 01:05:20.597469979 +0300
+++ fbreader-0.12.10dfsg/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h	2011-07-29 01:05:29.849515859 +0300
@@ -26,6 +26,8 @@
 #include <QtGui/QAction>
 #include <QtGui/QCursor>
 
+#include <policy/resource-set.h>
+
 class QDockWidget;
 class QToolBar;
 class QToolButton;
@@ -66,8 +68,10 @@
 	void closeEvent(QCloseEvent *event);
 	void keyPressEvent(QKeyEvent *event);
 	void wheelEvent(QWheelEvent *event);
+	bool eventFilter(QObject *obj, QEvent *event);
 
 private:
+	ResourcePolicy::ResourceSet *myResourceSet;
 	QToolBar *myWindowToolBar;
 	QToolBar *myFullscreenToolBar;
 	QDockWidget *myDocWidget;
Index: fbreader-0.12.10dfsg/fbreader/data/default/keymap.desktop.xml
===================================================================
--- fbreader-0.12.10dfsg.orig/fbreader/data/default/keymap.desktop.xml	2011-07-29 01:05:20.821471094 +0300
+++ fbreader-0.12.10dfsg/fbreader/data/default/keymap.desktop.xml	2011-07-29 01:05:29.849515859 +0300
@@ -11,6 +11,8 @@
 	<binding key="&lt;P&gt;" action="findPrevious"/>
 	<binding key="&lt;F3&gt;" action="findNext"/>
 	<binding key="&lt;N&gt;" action="findNext"/>
+	<binding key="&lt;XF86AudioLowerVolume&gt;" action="pageForward"/>
+	<binding key="&lt;XF86AudioRaiseVolume&gt;" action="pageBackward"/>
 	<binding key="&lt;PageDown&gt;" action="pageForward"/>
 	<binding key="&lt;PageUp&gt;" action="pageBackward"/>
 	<binding key="&lt;DownArrow&gt;" action="lineForward"/>
Index: fbreader-0.12.10dfsg/zlibrary/ui/data/keynames.desktop-qt4.xml
===================================================================
--- fbreader-0.12.10dfsg.orig/zlibrary/ui/data/keynames.desktop-qt4.xml	2011-07-29 01:05:20.657470279 +0300
+++ fbreader-0.12.10dfsg/zlibrary/ui/data/keynames.desktop-qt4.xml	2011-07-29 01:16:27.824778579 +0300
@@ -35,6 +35,8 @@
 	<key code="0x0100003a" name="&lt;F11&gt;"/>
 	<key code="0x0100003b" name="&lt;F12&gt;"/>
 	<key code="0x0100003c" name="&lt;F13&gt;"/>
+	<key code="0x01000070" name="&lt;XF86AudioLowerVolume&gt;"/>
+	<key code="0x01000072" name="&lt;XF86AudioRaiseVolume&gt;"/>
 	<key code="0x20" name="&lt;Space&gt;"/>
 	<key code="0x01000024" name="&lt;CapsLock&gt;"/>
 	<key code="0x01000025" name="&lt;NumLock&gt;"/>
Index: fbreader-0.12.10dfsg/makefiles/arch/desktop.mk
===================================================================
--- fbreader-0.12.10dfsg.orig/makefiles/arch/desktop.mk	2011-07-29 01:05:20.705470516 +0300
+++ fbreader-0.12.10dfsg/makefiles/arch/desktop.mk	2011-07-29 01:05:29.853515883 +0300
@@ -18,7 +18,7 @@
   QTINCLUDE = -I /usr/include/qt3
 else
   MOC = moc-qt4
-  QTINCLUDE = -I /usr/include/qt4
+  QTINCLUDE = $(shell pkg-config --cflags QtGui libresourceqt1)
 endif
 
 GTKINCLUDE = $(shell pkg-config --cflags gtk+-2.0 libpng xft)
@@ -28,7 +28,7 @@
 endif
 
 ifeq "$(UI_TYPE)" "qt4"
-  UILIBS = -lQtGui
+  UILIBS = $(shell pkg-config --libs QtGui libresourceqt1)
 endif
 
 ifeq "$(UI_TYPE)" "gtk"

