diff -Naur --exclude='*.svn*' roundcube_svn/config/main.inc.php.dist roundcube_pub/config/main.inc.php.dist
--- roundcube_svn/config/main.inc.php.dist	2008-09-30 18:51:15.000000000 +0100
+++ roundcube_pub/config/main.inc.php.dist	2008-09-30 19:30:21.000000000 +0100
@@ -368,6 +368,9 @@
 // default setting if preview pane is enabled
 $rcmail_config['preview_pane'] = FALSE;
 
+// Preview pane mark as read
+$rcmail_config['preview_pane_mark_read'] = TRUE;
+
 // Clear Trash on logout
 $rcmail_config['logout_purge'] = FALSE;
 
diff -Naur --exclude='*.svn*' roundcube_svn/program/include/rcmail.php roundcube_pub/program/include/rcmail.php
--- roundcube_svn/program/include/rcmail.php	2008-09-30 18:51:15.000000000 +0100
+++ roundcube_pub/program/include/rcmail.php	2008-09-30 19:30:21.000000000 +0100
@@ -286,7 +286,7 @@
     if (!($this->output instanceof rcube_template))
       $this->output = new rcube_template($this->task, $framed);
 
-    foreach (array('flag_for_deletion','read_when_deleted') as $js_config_var) {
+    foreach (array('flag_for_deletion','read_when_deleted','preview_pane_mark_read') as $js_config_var) {
       $this->output->set_env($js_config_var, $this->config->get($js_config_var));
     }
 
diff -Naur --exclude='*.svn*' roundcube_svn/program/js/app.js roundcube_pub/program/js/app.js
--- roundcube_svn/program/js/app.js	2008-09-30 18:51:15.000000000 +0100
+++ roundcube_pub/program/js/app.js	2008-09-30 19:30:21.000000000 +0100
@@ -1351,7 +1351,7 @@
       this.set_busy(true, 'loading');
       target.location.href = this.env.comm_path+url;
       // mark as read and change mbox unread counter
-      if (action == 'preview' && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread)
+      if (action == 'preview' && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread && this.env.preview_pane_mark_read)
         {
         this.set_message(id, 'unread', false);
 	if (this.env.unread_counts[this.env.mailbox])
@@ -3593,6 +3593,13 @@
       addrbook_show_images.disabled = !checkbox.checked;
     }
 
+  this.toggle_preview_pane = function(checkbox)
+    {
+    var preview_pane_mark_read;
+    if (preview_pane_mark_read = document.getElementById('rcmfd_preview_pane_mark_read'))
+      preview_pane_mark_read.disabled = !checkbox.checked;
+    }
+
   // display fetched raw headers
   this.set_headers = function(content)
     {
diff -Naur --exclude='*.svn*' roundcube_svn/program/localization/en_US/labels.inc roundcube_pub/program/localization/en_US/labels.inc
--- roundcube_svn/program/localization/en_US/labels.inc	2008-09-30 18:51:15.000000000 +0100
+++ roundcube_pub/program/localization/en_US/labels.inc	2008-09-30 19:30:21.000000000 +0100
@@ -307,4 +307,6 @@
 $labels['sortasc']  = 'Sort ascending';
 $labels['sortdesc'] = 'Sort descending';
 
+$labels['previewpanemarkread']  = 'Mark previewed messages as read';
+
 ?>
diff -Naur --exclude='*.svn*' roundcube_svn/program/steps/mail/show.inc roundcube_pub/program/steps/mail/show.inc
--- roundcube_svn/program/steps/mail/show.inc	2008-09-30 18:51:15.000000000 +0100
+++ roundcube_pub/program/steps/mail/show.inc	2008-09-30 19:30:21.000000000 +0100
@@ -66,7 +66,7 @@
   $OUTPUT->set_pagetitle($MESSAGE->subject);
   
   // mark message as read
-  if (!$MESSAGE->headers->seen)
+  if (!$MESSAGE->headers->seen && !($RCMAIL->action == 'preview' && !$CONFIG['preview_pane_mark_read']))
     $IMAP->set_flag($MESSAGE->uid, 'SEEN');
 
   // give message uid to the client
diff -Naur --exclude='*.svn*' roundcube_svn/program/steps/settings/func.inc roundcube_pub/program/steps/settings/func.inc
--- roundcube_svn/program/steps/settings/func.inc	2008-09-30 18:51:15.000000000 +0100
+++ roundcube_pub/program/steps/settings/func.inc	2008-09-30 19:30:21.000000000 +0100
@@ -151,12 +151,23 @@
   // show config parameter for preview pane
   if (!isset($no_override['preview_pane'])) {
     $field_id = 'rcmfd_preview';
-    $input_preview = new html_checkbox(array('name' => '_preview_pane', 'id' => $field_id, 'value' => 1));
+    $input_preview = new html_checkbox(array('name' => '_preview_pane', 'id' => $field_id, 'value' => 1,
+       'onchange' => JS_OBJECT_NAME.'.toggle_preview_pane(this)'));
     
     $table->add('title', html::label($field_id, Q(rcube_label('previewpane'))));
     $table->add(null, $input_preview->show($config['preview_pane']?1:0));
   }
 
+  // show config parameter for preview pane auto mark as read
+  if (!isset($no_override['preview_pane_mark_read'])) {
+    $field_id = 'rcmfd_preview_pane_mark_read';
+    $input_preview = new html_checkbox(array('name' => '_preview_pane_mark_read', 'id' => $field_id,
+       'value' => 1,  'disabled' => $config['preview_pane']?0:1));
+
+    $table->add('title', html::label($field_id, Q(rcube_label('previewpanemarkread'))));
+    $table->add(null, $input_preview->show($config['preview_pane_mark_read']?1:0));
+  }
+
   if (!isset($no_override['mdn_requests'])) {
     $field_id = 'rcmfd_mdn_requests';
     $select_mdn_requests = new html_select(array('name' => '_mdn_requests', 'id' => $field_id));
diff -Naur --exclude='*.svn*' roundcube_svn/program/steps/settings/save_prefs.inc roundcube_pub/program/steps/settings/save_prefs.inc
--- roundcube_svn/program/steps/settings/save_prefs.inc	2008-09-30 18:51:15.000000000 +0100
+++ roundcube_pub/program/steps/settings/save_prefs.inc	2008-09-30 19:30:21.000000000 +0100
@@ -30,6 +30,7 @@
   'htmleditor'   => isset($_POST['_htmleditor']) ? TRUE : FALSE,
   'inline_images'   => isset($_POST['_inline_images']) ? TRUE : FALSE,
   'preview_pane' => isset($_POST['_preview_pane']) ? TRUE : FALSE,
+  'preview_pane_mark_read' => isset($_POST['_preview_pane_mark_read']) ? TRUE : FALSE,
   'read_when_deleted' => isset($_POST['_read_when_deleted']) ? TRUE : FALSE,
   'flag_for_deletion' => isset($_POST['_flag_for_deletion']) ? TRUE : FALSE,
   'logout_purge' => isset($_POST['_logout_purge']) ? TRUE : FALSE,
