diff --git a/program/include/rcube_output_html.php b/program/include/rcube_output_html.php index db947bd2b..ac07d58e9 100644 --- a/program/include/rcube_output_html.php +++ b/program/include/rcube_output_html.php @@ -1087,7 +1087,7 @@ class rcube_output_html extends rcube_output // 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 0f5a60c6f..2a170b258 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -507,6 +507,11 @@ function rcube_webmail() 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 @@ function rcube_webmail() break; case 'about': - location.href = '?_task=settings&_action=about'; + this.redirect('?_task=settings&_action=about', false); break; case 'permaurl':