Index: privatemsg.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/privatemsg/privatemsg.module,v
retrieving revision 1.70.2.30.2.91.2.60
diff -u -p -r1.70.2.30.2.91.2.60 privatemsg.module
--- privatemsg.module	17 Jul 2009 00:32:05 -0000	1.70.2.30.2.91.2.60
+++ privatemsg.module	21 Jul 2009 13:45:55 -0000
@@ -135,7 +135,7 @@ function privatemsg_menu() {
     'type'             => MENU_LOCAL_TASK,
     'weight'           => -10,
   );
-  $items['messages/delete/%'] = array(
+  $items['messages/delete/%_privatemsg'] = array(
     'title'            => 'Delete message',
     'page callback'    => 'drupal_get_form',
     'page arguments'   => array('privatemsg_delete', 2),
@@ -437,7 +437,7 @@ function privatemsg_preprocess_privatems
   drupal_alter('privatemsg_message_view', $vars);
 
   $vars['message_actions'] = !empty($vars['message_actions']) ? theme('links', $vars['message_actions'], array('class' => 'message-actions')) : '';
-  
+
   $vars['anchors'] = '';
   foreach ($vars['message_anchors'] as $anchor) {
     $vars['anchors'].= '<a name="' . $anchor . '"></a>';
@@ -1119,16 +1119,17 @@ function _privatemsg_block_menu() {
   return $block;
 }
 
-function privatemsg_delete($form_state, $pmid) {
+function privatemsg_delete($form_state, $message) {
   global $user;
 
-  $form['pmid'] = array(
+  $form['message'] = array(
     '#type' => 'value',
-    '#value' => $pmid,
+    '#value' => $message,
   );
+
   return confirm_form($form,
     t('Are you sure you want to delete'),
-    isset($_GET['destination']) ? $_GET['destination'] : 'messages/view/'. $pmid,
+    isset($_GET['destination']) ? $_GET['destination'] : 'messages/view/'. $message['thread_id'],
     t('This action cannot be undone.'),
     t('Delete'),
     t('Cancel')
@@ -1169,10 +1170,18 @@ function privatemsg_message_change_delet
 
 function privatemsg_delete_submit($form, &$form_state) {
   if ($form_state['values']['confirm']) {
-    privatemsg_message_change_delete($form_state['values']['pmid'], 1);
+    privatemsg_message_change_delete($form_state['values']['message']['mid'], 1);
     drupal_set_message(t('Message has been deleted'));
+
+    // Load thread to check number of remaining messages.
+    $thread = privatemsg_thread_load($form_state['values']['message']['thread_id']);
+    if (empty($thread['messages'])) {
+      // Redirect to /messages if this was the last message of that thread.
+      $form_state['redirect'] = 'messages';
+      return;
+    }
   }
-  $form_state['redirect'] = 'messages';
+  $form_state['redirect'] = 'messages/view/' . $form_state['values']['message']['thread_id'];
 }
 
 /**
