diff --git a/scribus/chartablemodel.cpp b/scribus/chartablemodel.cpp
index e59d1ab..5c866c6 100644
--- a/scribus/chartablemodel.cpp
+++ b/scribus/chartablemodel.cpp
@@ -62,6 +62,15 @@ QVariant CharTableModel::data(const QModelIndex &index, int role) const
 		return "Unicode:\n0x"+tmp;
 	}
 
+	// status tip
+	if ( role == Qt::StatusTipRole )
+	{
+		QString tmp = QString("%1").arg(currentChar, 4, 16, QChar('0')).toUpper();
+		QStringList lst;
+		lst << tmp << currentFont;
+		return lst;
+	}
+
 	// pixmap
 	if (role == Qt::DecorationRole)
 	{
diff --git a/scribus/ui/charselect.cpp b/scribus/ui/charselect.cpp
index 49265a4..aeab896 100644
--- a/scribus/ui/charselect.cpp
+++ b/scribus/ui/charselect.cpp
@@ -39,12 +39,14 @@ CharSelect::CharSelect(QWidget* parent) : ScrPaletteBase(parent, "CharSelect"),
 	m_userTableModel = new CharTableModel(this, 6, m_doc, PrefsManager::instance()->appPrefs.itemToolPrefs.textFont);
 	loadUserContent(ScPaths::getApplicationDataDir() + "charpalette.ucp");
 
+	m_unicodeSearchModel = new UnicodeSearchModel(this);
+
 	m_userTable->setModel(m_userTableModel);
 	m_userTable->setAcceptDrops(true);
 
 	// signals and slots connections
 	connect(m_userTable, SIGNAL(selectChar(uint, QString)), this, SLOT(userNewChar(uint, QString)));
-	connect(m_userTableModel, SIGNAL(selectionChanged(QItemSelectionModel*)), m_userTable, SLOT(modelSelectionChanged(QItemSelectionModel*)));
+	connect(m_userTable->selectionModel(), SIGNAL(selectionChanged(const QItemSelection& ,const QItemSelection&)), this, SLOT(slot_selectionChanged(const QItemSelection&, const QItemSelection&)) );
 	connect(m_userTableModel, SIGNAL(rowAppended()), m_userTable, SLOT(resizeLastRow()));
 	connect(unicodeButton, SIGNAL(chosenUnicode(const QString &)), m_userTableModel, SLOT(appendUnicode(const QString &)));
 	connect(hideButton, SIGNAL(toggled(bool)), this, SLOT(hideButton_toggled(bool)));
@@ -156,6 +158,31 @@ void CharSelect::slot_insertUserSpecialChar(QChar ch, QString font)
 	m_doc->changed();
 }
 
+void CharSelect::slot_selectionChanged( const QItemSelection& sel, const QItemSelection& )
+{
+	QModelIndexList indexes = sel.indexes();
+	if ( indexes.size() == 0 )
+		return;
+
+	QModelIndex index = indexes.at(0);
+	if ( !index.isValid() )
+		return;
+
+	// we retrieve a QStringList of two elements from data() encapsulated in a
+	// QVariant, so we should make sure first that we can convert to QStringList.
+	// Otherwise clear the status label
+	QVariant tmp = index.data(Qt::StatusTipRole);
+	if ( !tmp.canConvert(QMetaType::QStringList) )
+	{
+		m_statusLabel->setText(QString());
+		return;
+	}
+
+	QStringList lst = tmp.toStringList();
+	m_statusLabel->setText("<p><b>" + QString("%1").arg(m_unicodeSearchModel->descriptionFromHex(lst.at(0))).toUpper() +
+												 "</b><br>" + QString(tr("Font: %2")).arg(lst.at(1)) + "</p>");
+}
+
 void CharSelect::openEnhanced()
 {
 	if (m_enhanced)
@@ -317,6 +344,7 @@ void CharSelect::uniClearButton_clicked()
 	   )
 	{
 		m_userTableModel->setCharacters(CharClassDef());
+		m_statusLabel->setText(QString());
 	}
 }
 
diff --git a/scribus/ui/charselect.h b/scribus/ui/charselect.h
index ace4ac8..15d3f56 100644
--- a/scribus/ui/charselect.h
+++ b/scribus/ui/charselect.h
@@ -10,6 +10,7 @@ for which a new license (GPL+exception) is in place.
 #include "scribusapi.h"
 #include "scrpalettebase.h"
 #include "chartablemodel.h"
+#include "unicodesearch.h"
 #include "ui_charselect.h"
 
 class PageItem;
@@ -64,6 +65,7 @@ private:
 	ScribusDoc* m_doc;
 	//! \brief m_userTable model
 	CharTableModel * m_userTableModel;
+	UnicodeSearchModel *m_unicodeSearchModel;
 
 	CharSelectEnhanced * m_enhanced;
 
@@ -86,6 +88,7 @@ private slots:
 	void slot_insertSpecialChar();
 	void slot_insertSpecialChars(const QString & chars);
 	void slot_insertUserSpecialChar(QChar, QString font);
+	void slot_selectionChanged( const QItemSelection&, const QItemSelection& );
 	void uniLoadButton_clicked();
 	void uniSaveButton_clicked();
 	void uniClearButton_clicked();
diff --git a/scribus/ui/charselect.ui b/scribus/ui/charselect.ui
index 55fe90e..1b0e3d7 100644
--- a/scribus/ui/charselect.ui
+++ b/scribus/ui/charselect.ui
@@ -81,6 +81,13 @@
      </property>
     </widget>
    </item>
+   <item row="2" column="0">
+    <widget class="QLabel" name="m_statusLabel">
+     <property name="text">
+      <string/>
+     </property>
+    </widget>
+   </item>
   </layout>
  </widget>
  <customwidgets>
diff --git a/scribus/ui/unicodesearch.cpp b/scribus/ui/unicodesearch.cpp
index 22a2841..c7df3ad 100644
--- a/scribus/ui/unicodesearch.cpp
+++ b/scribus/ui/unicodesearch.cpp
@@ -117,6 +117,16 @@ UnicodeSearchModel::~UnicodeSearchModel()
 {
 }
 
+QString UnicodeSearchModel::descriptionFromHex(const QString& hex)
+{
+	foreach( UnicodeStruct I, m_unicode )
+	{
+		if ( I.hex == hex )
+			return I.description;
+	}
+	return QString();
+}
+
 int UnicodeSearchModel::rowCount(const QModelIndex & /*parent*/) const
 {
 	return m_unicode.count();
diff --git a/scribus/ui/unicodesearch.h b/scribus/ui/unicodesearch.h
index 53a9b8f..b5a374b 100644
--- a/scribus/ui/unicodesearch.h
+++ b/scribus/ui/unicodesearch.h
@@ -82,6 +82,9 @@ class UnicodeSearchModel : public QAbstractTableModel
 		//! \brief Return hex-key for the row of given index. See m_keys.
 		QString hexData(const QModelIndex & index);
 
+		//! \brief Return character unicode description from hex code
+		QString descriptionFromHex(const QString& hex);
+
 	private:
 
 		//! \brief Easier to use QPair-like replacement
