diff --git a/libempathy-gtk/empathy-chat-text-view.c b/libempathy-gtk/empathy-chat-text-view.c
index d7ebda6..2449117 100644
--- a/libempathy-gtk/empathy-chat-text-view.c
+++ b/libempathy-gtk/empathy-chat-text-view.c
@@ -43,6 +43,7 @@
 #include "empathy-conf.h"
 #include "empathy-ui-utils.h"
 #include "empathy-smiley-manager.h"
+#include "empathy-images.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_CHAT
 #include <libempathy/empathy-debug.h>
@@ -70,6 +71,7 @@ typedef struct {
 	guint                 notify_system_fonts_id;
 	EmpathySmileyManager *smiley_manager;
 	gboolean              only_if_date;
+	gboolean              show_clear;
 } EmpathyChatTextViewPriv;
 
 static void chat_text_view_iface_init (EmpathyChatViewIface *iface);
@@ -82,7 +84,8 @@ G_DEFINE_TYPE_WITH_CODE (EmpathyChatTextView, empathy_chat_text_view,
 enum {
 	PROP_0,
 	PROP_LAST_CONTACT,
-	PROP_ONLY_IF_DATE
+	PROP_ONLY_IF_DATE,
+	PROP_SHOW_CLEAR
 };
 
 static gboolean
@@ -260,17 +263,18 @@ chat_text_view_populate_popup (EmpathyChatTextView *view,
 	GtkTextIter         iter, start, end;
 	GtkWidget          *item;
 	gchar              *str = NULL;
+	GtkWidget          *img;
+	gboolean           show_clear;
 
 	priv = GET_PRIV (view);
 
 	/* Clear menu item */
-	if (gtk_text_buffer_get_char_count (priv->buffer) > 0) {
-		item = gtk_separator_menu_item_new ();
-		gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
-		gtk_widget_show (item);
-
+	g_object_get (view, "show-clear", &show_clear, NULL);
+	if (show_clear &&
+	    (gtk_text_buffer_get_char_count (priv->buffer) > 0)) {
 		item = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLEAR, NULL);
-		gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+		gtk_menu_shell_insert (GTK_MENU_SHELL (menu),
+		                       item, 6);
 		gtk_widget_show (item);
 
 		g_signal_connect_swapped (item, "activate",
@@ -320,7 +324,10 @@ chat_text_view_populate_popup (EmpathyChatTextView *view,
 	gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
 	gtk_widget_show (item);
 
-	item = gtk_menu_item_new_with_mnemonic (_("_Open Link"));
+	item = gtk_image_menu_item_new_with_mnemonic (_("_Open Link"));
+	img = gtk_image_new_from_icon_name (EMPATHY_IMAGE_OPEN_LINK,
+	                                    GTK_ICON_SIZE_MENU);
+	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), img);
 	g_signal_connect (item, "activate",
 			  G_CALLBACK (chat_text_view_open_address_cb),
 			  str);
@@ -529,6 +536,9 @@ chat_text_view_get_property (GObject    *object,
 	case PROP_ONLY_IF_DATE:
 		g_value_set_boolean (value, priv->only_if_date);
 		break;
+	case PROP_SHOW_CLEAR:
+		g_value_set_boolean (value, priv->show_clear);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
 		break;
@@ -547,6 +557,9 @@ chat_text_view_set_property (GObject      *object,
 	case PROP_ONLY_IF_DATE:
 		priv->only_if_date = g_value_get_boolean (value);
 		break;
+	case PROP_SHOW_CLEAR:
+		priv->show_clear = g_value_get_boolean (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
 		break;
@@ -607,6 +620,13 @@ empathy_chat_text_view_class_init (EmpathyChatTextViewClass *klass)
 							      "Display timestamp only if the date changes",
 							      FALSE,
 							      G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+					 PROP_SHOW_CLEAR,
+					 g_param_spec_boolean ("show-clear",
+							      "Show clear",
+							      "Display clear option",
+							      TRUE,
+							      G_PARAM_READWRITE));
 
 
 	g_type_class_add_private (object_class, sizeof (EmpathyChatTextViewPriv));
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index a8ca745..6569d5e 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -985,6 +985,14 @@ chat_text_send_cb (GtkMenuItem *menuitem,
 }
 
 static void
+chat_input_clear_cb (GtkMenuItem *menuitem,
+                     GtkTextBuffer *buffer)
+{
+	/* Clear the input field. */
+	gtk_text_buffer_set_text (buffer, "", -1);
+}
+
+static void
 chat_input_populate_popup_cb (GtkTextView *view,
 			      GtkMenu     *menu,
 			      EmpathyChat *chat)
@@ -1006,6 +1014,12 @@ chat_input_populate_popup_cb (GtkTextView *view,
 	priv = GET_PRIV (chat);
 	buffer = gtk_text_view_get_buffer (view);
 
+	/* Add the clear menu item. */
+	item = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLEAR, NULL);
+	gtk_menu_shell_insert (GTK_MENU_SHELL (menu), item, 6);
+	g_signal_connect (G_OBJECT (item), "activate",
+	                  G_CALLBACK (chat_input_clear_cb), buffer);
+
 	/* Add the emoticon menu. */
 	item = gtk_separator_menu_item_new ();
 	gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
diff --git a/libempathy-gtk/empathy-images.h b/libempathy-gtk/empathy-images.h
index c714f04..14eb1fa 100644
--- a/libempathy-gtk/empathy-images.h
+++ b/libempathy-gtk/empathy-images.h
@@ -41,6 +41,7 @@ G_BEGIN_DECLS
 #define EMPATHY_IMAGE_VIDEO_CALL          "camera-web"
 #define EMPATHY_IMAGE_LOG                 "document-open-recent"
 #define EMPATHY_IMAGE_DOCUMENT_SEND       "document-send"
+#define EMPATHY_IMAGE_OPEN_LINK           "go-jump"
 
 G_END_DECLS
 
diff --git a/libempathy-gtk/empathy-log-window.c b/libempathy-gtk/empathy-log-window.c
index f05017c..1357283 100644
--- a/libempathy-gtk/empathy-log-window.c
+++ b/libempathy-gtk/empathy-log-window.c
@@ -212,6 +212,8 @@ empathy_log_window_show (EmpathyAccount   *account,
 
 	/* Configure Contacts EmpathyChatView */
 	window->chatview_chats = empathy_theme_manager_create_view (empathy_theme_manager_get ());
+		/* Don't show the clear option */
+	g_object_set (window->chatview_chats, "show-clear", FALSE, NULL);
 	gtk_container_add (GTK_CONTAINER (window->scrolledwindow_chats),
 			   GTK_WIDGET (window->chatview_chats));
 	gtk_widget_show (GTK_WIDGET (window->chatview_chats));
