diff -urN -X psidiff.ignore sources/src/options/opt_events.cpp work/src/options/opt_events.cpp
--- sources/src/options/opt_events.cpp	2009-03-07 01:25:53.000000000 +0500
+++ work/src/options/opt_events.cpp	2009-03-07 01:53:04.000000000 +0500
@@ -108,6 +108,7 @@
 
 	PsiOptions::instance()->setOption("options.ui.notifications.passive-popups.enabled", d->ck_popupOn->isChecked());
 	PsiOptions::instance()->setOption("options.ui.notifications.passive-popups.incoming-message", d->ck_popupOnMessage->isChecked());
+	PsiOptions::instance()->setOption("options.ui.notifications.passive-popups.showMessage", d->ck_showPopupMessage->isChecked());
 	PsiOptions::instance()->setOption("options.ui.notifications.passive-popups.incoming-chat", d->ck_popupOnMessage->isChecked());
 	PsiOptions::instance()->setOption("options.ui.notifications.passive-popups.incoming-headline", d->ck_popupOnHeadline->isChecked());
 	PsiOptions::instance()->setOption("options.ui.notifications.passive-popups.incoming-file-transfer", d->ck_popupOnFile->isChecked());
@@ -133,9 +134,9 @@
 	d->ck_autoAuth->setChecked( PsiOptions::instance()->getOption("options.subscriptions.automatically-allow-authorization").toBool() );
 	d->ck_notifyAuth->setChecked( PsiOptions::instance()->getOption("options.ui.notifications.successful-subscription").toBool() );
 	d->cb_bounce->setCurrentIndex( d->cb_bounce->findData(PsiOptions::instance()->getOption("options.ui.notifications.bounce-dock").toString()) );
-
 	d->ck_popupOn->setChecked( PsiOptions::instance()->getOption("options.ui.notifications.passive-popups.enabled").toBool() );
 	d->ck_popupOnMessage->setChecked( PsiOptions::instance()->getOption("options.ui.notifications.passive-popups.incoming-message").toBool() || PsiOptions::instance()->getOption("options.ui.notifications.passive-popups.incoming-chat").toBool() );
+	d->ck_showPopupMessage->setChecked( PsiOptions::instance()->getOption("options.ui.notifications.passive-popups.showMessage").toBool());
 	d->ck_popupOnHeadline->setChecked( PsiOptions::instance()->getOption("options.ui.notifications.passive-popups.incoming-headline").toBool() );
 	d->ck_popupOnFile->setChecked( PsiOptions::instance()->getOption("options.ui.notifications.passive-popups.incoming-file-transfer").toBool() );
 	d->ck_popupOnOnline->setChecked( PsiOptions::instance()->getOption("options.ui.notifications.passive-popups.status.online").toBool() );
diff -urN -X psidiff.ignore sources/src/options/opt_events.ui work/src/options/opt_events.ui
--- sources/src/options/opt_events.ui	2009-03-07 01:25:53.000000000 +0500
+++ work/src/options/opt_events.ui	2009-03-07 01:53:04.000000000 +0500
@@ -222,6 +222,13 @@
        </widget>
       </item>
       <item>
+       <widget class="QCheckBox" name="ck_showPopupMessage" >
+        <property name="text" >
+         <string>Show incoming message on popup</string>
+        </property>
+       </widget>
+      </item>
+      <item>
        <widget class="QCheckBox" name="ck_popupOnHeadline" >
         <property name="text" >
          <string>On incoming headline event</string>
diff -urN -X psidiff.ignore sources/src/psipopup.cpp work/src/psipopup.cpp
--- sources/src/psipopup.cpp	2009-03-07 01:25:53.000000000 +0500
+++ work/src/psipopup.cpp	2009-03-07 01:53:04.000000000 +0500
@@ -31,6 +31,7 @@
 #include "psiiconset.h"
 #include "iconlabel.h"
 #include "psioptions.h"
+#include "avatars.h"
 
 #include <qapplication.h>
 #include <qlayout.h>
@@ -68,7 +69,7 @@
 
 	void init(const PsiIcon *titleIcon, QString titleText, PsiAccount *_acc, PopupType type);
 	QString clipText(QString);
-	QBoxLayout *createContactInfo(const PsiIcon *icon, QString text);
+	QBoxLayout *createContactInfo(const QPixmap *avatar, const PsiIcon *icon, QString text);
 
 private slots:
 	void popupDestroyed();
@@ -193,11 +194,21 @@
 	return text;
 }
 
-QBoxLayout *PsiPopup::Private::createContactInfo(const PsiIcon *icon, QString text)
+QBoxLayout *PsiPopup::Private::createContactInfo(const QPixmap *avatar, const PsiIcon *icon, QString text)
 {
 	QHBoxLayout *dataBox = new QHBoxLayout();
 
-	if ( icon ) {
+
+	if (avatar && !avatar->isNull()) {
+		int size = PsiOptions::instance()->getOption("options.ui.chat.avatars.size").toInt();
+		QLabel *avatarLabel = new QLabel(popup);
+		avatarLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
+		avatarLabel->setPixmap(avatar->scaled(QSize(size, size), Qt::KeepAspectRatio, Qt::SmoothTransformation));
+		dataBox->addWidget(avatarLabel);
+		dataBox->addSpacing(5);
+	}
+
+	if (icon) {
 		IconLabel *iconLabel = new IconLabel(popup);
 		iconLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
 		iconLabel->setPsiIcon(icon);
@@ -283,14 +294,14 @@
 	d->init(icon, text, acc, doAlertIcon ? type : AlertNone);
 }
 
-void PsiPopup::setData(const PsiIcon *icon, QString text)
+void PsiPopup::setData(const QPixmap *avatar, const PsiIcon *icon, QString text)
 {
 	if ( !d->popup ) {
 		deleteLater();
 		return;
 	}
 
-	d->popup->addLayout( d->createContactInfo(icon, text) );
+	d->popup->addLayout( d->createContactInfo(avatar, icon, text) );
 
 	// update id
 	if ( icon )
@@ -369,13 +380,29 @@
 			}
 		}
 	}
-
+        QPixmap avatar = d->account->avatarFactory()->getAvatar(jid);
 	// show popup
-	if ( d->popupType != AlertHeadline && (d->popupType != AlertFile || !PsiOptions::instance()->getOption("options.ui.file-transfer.auto-popup").toBool()) )
-		setData(icon, contactText);
+	if ( d->popupType != AlertHeadline && (d->popupType != AlertFile || !PsiOptions::instance()->getOption("options.ui.file-transfer.auto-popup").toBool()) ) {
+
+		if ((event && event->type() == PsiEvent::Message) && (PsiOptions::instance()->getOption("options.ui.notifications.passive-popups.showMessage").toBool())) {
+			const Message *jmessage = &((MessageEvent *)event)->message();
+			QString message;
+			 
+			if ( !jmessage->subject().isEmpty() )
+				message += "<font color=\"red\"><b>" + tr("Subject:") + " " + jmessage->subject() + "</b></font><br>";
+			message += TextUtil::plain2rich( jmessage->body() );
+			
+			if (!message.isEmpty()) {
+				contactText += "<br/><font size=\"+1\">" + message + "</font>";
+			}
+		}
+
+
+                setData(&avatar, icon, contactText);
+	}
 	else if ( d->popupType == AlertHeadline ) {
 		QVBoxLayout *vbox = new QVBoxLayout;
-		vbox->addLayout( d->createContactInfo(icon, contactText) );
+                vbox->addLayout( d->createContactInfo(&avatar, icon, contactText) );
 
 		vbox->addSpacing(5);
 
diff -urN -X psidiff.ignore sources/src/psipopup.h work/src/psipopup.h
--- sources/src/psipopup.h	2009-03-07 01:25:53.000000000 +0500
+++ work/src/psipopup.h	2009-03-07 01:53:04.000000000 +0500
@@ -23,6 +23,7 @@
 
 #include <QObject>
 
+class QPixmap;
 class PsiCon;
 class PsiAccount;
 class UserListItem;
@@ -57,7 +58,7 @@
 	};
 	PsiPopup(PopupType type, PsiAccount *acc);
 
-	void setData(const PsiIcon *icon, QString text);
+	void setData(const QPixmap *avatar, const PsiIcon *icon, QString text);
 	void setData(const Jid &, const Resource &, const UserListItem * = 0, const PsiEvent * = 0);
 
 	void show();
