From e30500643fbe0c9f9237570b73e59992f776cf0c Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Wed, 14 Nov 2012 04:28:34 -0500
Subject: [PATCH] Enable default behavior of the browser when shift/ctrl-click task links (e.g. open in new window/tab)

---
 program/include/rcube_output_html.php |    2 +-
 program/js/app.js                     |    7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/program/include/rcube_output_html.php b/program/include/rcube_output_html.php
index db947bd..ac07d58 100644
--- a/program/include/rcube_output_html.php
+++ b/program/include/rcube_output_html.php
@@ -1087,7 +1087,7 @@
             // make valid href to specific buttons
             if (in_array($attrib['command'], rcmail::$main_tasks)) {
                 $attrib['href']    = $this->app->url(array('task' => $attrib['command']));
-                $attrib['onclick'] = sprintf("%s.command('switch-task','%s',null,event); return false", rcmail::JS_OBJECT_NAME, $attrib['command']);
+                $attrib['onclick'] = sprintf("return %s.command('switch-task','%s',this,event)", rcmail::JS_OBJECT_NAME, $attrib['command']);
             }
             else if ($attrib['task'] && in_array($attrib['task'], rcmail::$main_tasks)) {
                 $attrib['href'] = $this->app->url(array('action' => $attrib['command'], 'task' => $attrib['task']));
diff --git a/program/js/app.js b/program/js/app.js
index 0f5a60c..2a170b2 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -507,6 +507,11 @@
     if (this.busy)
       return false;
 
+    // let the browser handle this click (shift/ctrl usually opens the link in a new window/tab)
+    if ((obj && (obj.href.indexOf(location.href) < 0)) && rcube_event.get_modifier(event)) {
+      return true;
+    }
+
     // command not supported or allowed
     if (!this.commands[command]) {
       // pass command to parent window
@@ -562,7 +567,7 @@
         break;
 
       case 'about':
-        location.href = '?_task=settings&_action=about';
+        this.redirect('?_task=settings&_action=about', false);
         break;
 
       case 'permaurl':

--
Gitblit v1.9.1