Index: addressbook/gui/widgets/e-minicard-view.c
===================================================================
--- addressbook/gui/widgets/e-minicard-view.c	(revision 35731)
+++ addressbook/gui/widgets/e-minicard-view.c	(working copy)
@@ -155,28 +155,34 @@ static void
 set_empty_message (EMinicardView *view)
 {
 	char *empty_message;
-	gboolean editable = FALSE, perform_initial_query = FALSE;
+	gboolean editable = FALSE, perform_initial_query = FALSE, searching = FALSE;
 	EBook *book;
 
 	if (view->adapter) {
+		EABModel *model = NULL;
+
 		g_object_get (view->adapter,
 			      "editable", &editable,
+			      "model", &model,
 			      NULL);
 
 		g_object_get (view->adapter, "book", &book, NULL);
 		if (!e_book_check_static_capability (book, "do-initial-query"))
 			perform_initial_query = TRUE;
+
+		searching = model && eab_model_can_stop (model);
 	}
 
-	if (editable) {
+	if (searching) {
+		empty_message = _("\n\nSearching for the Contacts...");
+	} else if (editable) {
 		if (perform_initial_query)
 			empty_message = _("\n\nSearch for the Contact\n\n"
 					  "or double-click here to create a new Contact.");
 		else
 			empty_message = _("\n\nThere are no items to show in this view.\n\n"
 					  "Double-click here to create a new Contact.");
-	}
-	else {
+	} else {
 		if (perform_initial_query)
 			empty_message = _("\n\nSearch for the Contact.");
 		else
@@ -195,6 +201,12 @@ writable_status_change (EABModel *model,
 }
 
 static void
+stop_state_changed (EABModel *model, EMinicardView *view)
+{
+	set_empty_message (view);
+}
+
+static void
 adapter_changed (EMinicardView *view)
 {
 	set_empty_message (view);
@@ -216,19 +228,23 @@ e_minicard_view_set_property (GObject *o
 	switch (prop_id){
 	case PROP_ADAPTER:
 		if (view->adapter) {
-			if (view->writable_status_id) {
+			if (view->writable_status_id || view->stop_state_id) {
 				EABModel *model;
 				g_object_get (view->adapter,
 					      "model", &model,
 					      NULL);
 				if (model) {
-					g_signal_handler_disconnect (model, view->writable_status_id);
+					if (view->writable_status_id)
+						g_signal_handler_disconnect (model, view->writable_status_id);
+					if (view->stop_state_id)
+						g_signal_handler_disconnect (model, view->stop_state_id);
 				}
 			}
 
 			g_object_unref (view->adapter);
 		}
 		view->writable_status_id = 0;
+		view->stop_state_id = 0;
 		view->adapter = g_value_get_object (value);
 		g_object_ref (view->adapter);
 		adapter_changed (view);
@@ -244,6 +260,9 @@ e_minicard_view_set_property (GObject *o
 				view->writable_status_id =
 					g_signal_connect (model, "writable_status",
 							  G_CALLBACK (writable_status_change), view);
+				view->stop_state_id =
+					g_signal_connect (model, "stop_state_changed",
+							  G_CALLBACK (stop_state_changed), view);
 			}
 
 		}
@@ -317,19 +336,23 @@ e_minicard_view_dispose (GObject *object
 	}
 
 	if (view->adapter) {
-		if (view->writable_status_id) {
+		if (view->writable_status_id || view->stop_state_id) {
 			EABModel *model;
 			g_object_get (view->adapter,
 				      "model", &model,
 				      NULL);
 			if (model) {
-				g_signal_handler_disconnect (model, view->writable_status_id);
+				if (view->writable_status_id)
+					g_signal_handler_disconnect (model, view->writable_status_id);
+				if (view->stop_state_id)
+					g_signal_handler_disconnect (model, view->stop_state_id);
 			}
 		}
 
 		g_object_unref (view->adapter);
 	}
 	view->writable_status_id = 0;
+	view->stop_state_id = 0;
 	view->adapter = NULL;
 
 	if (G_OBJECT_CLASS(parent_class)->dispose)
@@ -548,6 +571,7 @@ e_minicard_view_init (EMinicardView *vie
 	view->adapter = NULL;
 	view->canvas_drag_data_get_id = 0;
 	view->writable_status_id = 0;
+	view->stop_state_id = 0;
 
 	set_empty_message (view);
 }
Index: addressbook/gui/widgets/e-minicard-view.h
===================================================================
--- addressbook/gui/widgets/e-minicard-view.h	(revision 35731)
+++ addressbook/gui/widgets/e-minicard-view.h	(working copy)
@@ -70,6 +70,7 @@ struct _EMinicardView
 
 	guint canvas_drag_data_get_id;
 	guint writable_status_id;
+	guint stop_state_id;
 };
 
 struct _EMinicardViewClass
Index: addressbook/ChangeLog
===================================================================
--- addressbook/ChangeLog	(revision 35731)
+++ addressbook/ChangeLog	(working copy)
@@ -1,3 +1,13 @@
+2008-07-09  Milan Crha  <mcrha@redhat.com>
+
+	** Fix for bug #228725
+
+	* gui/widgets/e-minicard-view.h: (struct _EMinicardView):
+	* gui/widgets/e-minicard-view.c: (set_empty_message),
+	(stop_state_changed), (e_minicard_view_set_property),
+	(e_minicard_view_dispose), (e_minicard_view_init):
+	Show different message in a view when searching.
+
 2008-07-03  Milan Crha  <mcrha@redhat.com>
 
 	** Fix for bug #540152
Index: mail/ChangeLog
===================================================================
--- mail/ChangeLog	(revision 35732)
+++ mail/ChangeLog	(working copy)
@@ -1,3 +1,9 @@
+2008-07-09  Milan Crha  <mcrha@redhat.com>
+
+	** Part of fix for bug #228725
+
+	* message-list.c: (mail_regen_list): Update empty message on regen.
+
 2008-07-09  Milan Crha  <mcrha@redhat.com>
 
 	** Fix for bug #207802 (Patch suggested by Veerapuram Varadhan.)
Index: mail/message-list.c
===================================================================
--- mail/message-list.c	(revision 35732)
+++ mail/message-list.c	(working copy)
@@ -4310,6 +4310,15 @@ mail_regen_list (MessageList *ml, const 
 		camel_folder_thread_messages_ref(m->tree);
 	}
 
+	if (message_list_length (ml) <= 0) {
+		/* there is some info why the message list is empty, let it be something useful */
+		char *txt = g_strconcat (_("Generating message list"), "..." , NULL);
+
+		e_tree_set_info_message (m->ml->tree, txt);
+
+		g_free (txt);
+	}
+
 	/* if we're busy already kick off timeout processing, so normal updates are immediate */
 	if (ml->regen == NULL)
 		ml_regen_timeout(m);
