diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index a8ca745..7da6447 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -90,7 +90,9 @@ typedef struct {
 	GtkWidget         *scrolled_window_input;
 	GtkWidget         *scrolled_window_contacts;
 	GtkWidget         *hbox_topic;
+	GtkWidget         *topic_expander;
 	GtkWidget         *label_topic;
+	GtkWidget         *label_topic_expander;
 	GtkWidget         *contact_list_view;
 } EmpathyChatPriv;
 
@@ -579,6 +581,8 @@ chat_property_changed_cb (EmpathyTpChat *tp_chat,
 			gtk_widget_hide (priv->hbox_topic);
 		} else {
 			gtk_label_set_text (GTK_LABEL (priv->label_topic), priv->subject);
+			gtk_label_set_text (GTK_LABEL (priv->label_topic_expander),
+			                    priv->subject);
 			gtk_widget_show (priv->hbox_topic);
 		}
 		if (priv->block_events_timeout_id == 0) {
@@ -1385,6 +1389,25 @@ show_pending_messages (EmpathyChat *chat) {
 }
 
 static void
+topic_expander_activated_cb (GtkExpander *expander,
+                             EmpathyChat *chat)
+{
+	EmpathyChatPriv *priv = GET_PRIV (chat);
+	gboolean         expanded;
+	
+	expanded = gtk_expander_get_expanded (expander);
+		
+	if (expanded) {
+		gtk_widget_show (priv->label_topic);
+		
+		/* TODO: expand the label to the hbox size */
+	}
+	else {
+		gtk_widget_hide (priv->label_topic);
+	}
+}
+
+static void
 chat_create_ui (EmpathyChat *chat)
 {
 	EmpathyChatPriv *priv = GET_PRIV (chat);
@@ -1402,7 +1425,9 @@ chat_create_ui (EmpathyChat *chat)
 					"scrolled_window_chat", &priv->scrolled_window_chat,
 					"scrolled_window_input", &priv->scrolled_window_input,
 					"hbox_topic", &priv->hbox_topic,
+					"topic_expander", &priv->topic_expander,
 					"label_topic", &priv->label_topic,
+					"label_topic_expander", &priv->label_topic_expander,
 					"scrolled_window_contacts", &priv->scrolled_window_contacts,
 					NULL);
 	g_free (filename);
@@ -1472,6 +1497,12 @@ chat_create_ui (EmpathyChat *chat)
 	/* Add the main widget in the chat widget */
 	gtk_container_add (GTK_CONTAINER (chat), priv->widget);
 	g_object_unref (gui);
+	
+	/* Make the expander hide label_topic when expanded */
+	g_signal_connect (priv->topic_expander, "activate",
+			  G_CALLBACK (topic_expander_activated_cb),
+			  chat);
+	
 }
 
 static void
diff --git a/libempathy-gtk/empathy-chat.ui b/libempathy-gtk/empathy-chat.ui
index 7af4832..f616ab9 100644
--- a/libempathy-gtk/empathy-chat.ui
+++ b/libempathy-gtk/empathy-chat.ui
@@ -8,6 +8,60 @@
     <property name="orientation">vertical</property>
     <property name="spacing">6</property>
     <child>
+      <object class="GtkHBox" id="hbox_topic">
+        <property name="visible">True</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkExpander" id="topic_expander">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <object class="GtkLabel" id="label_topic_expander">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="xalign">0</property>
+                <property name="use_markup">True</property>
+                <property name="wrap">True</property>
+                <property name="selectable">True</property>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Topic:</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="label_topic">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="use_markup">True</property>
+            <property name="ellipsize">end</property>
+            <property name="single_line_mode">True</property>
+            <property name="track_visited_links">False</property>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">False</property>
+        <property name="padding">2</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
       <object class="GtkHPaned" id="hpaned">
         <property name="visible">True</property>
         <property name="can_focus">True</property>
@@ -71,50 +125,7 @@
         </child>
       </object>
       <packing>
-        <property name="position">0</property>
-      </packing>
-    </child>
-    <child>
-      <object class="GtkHBox" id="hbox_topic">
-        <property name="visible">True</property>
-        <property name="spacing">6</property>
-        <child>
-          <object class="GtkLabel" id="label80">
-            <property name="visible">True</property>
-            <property name="xalign">0</property>
-            <property name="yalign">0</property>
-            <property name="label" translatable="yes">Topic:</property>
-            <attributes>
-              <attribute name="weight" value="bold"/>
-            </attributes>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkLabel" id="label_topic">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="xalign">0</property>
-            <property name="use_markup">True</property>
-            <property name="wrap">True</property>
-            <property name="selectable">True</property>
-            <property name="ellipsize">end</property>
-            <property name="single_line_mode">True</property>
-          </object>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">False</property>
-        <property name="padding">2</property>
-        <property name="position">0</property>
+        <property name="position">1</property>
       </packing>
     </child>
   </object>
