summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/js/js.js34
1 files changed, 25 insertions, 9 deletions
diff --git a/core/js/js.js b/core/js/js.js
index 4e8d3a01416..ea621123fb0 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -1501,17 +1501,21 @@ function initCore() {
$navigation.hide();
// show loading feedback
- $navigation.delegate('a', 'click', function(event) {
+ $navigation.delegate('a', 'mousedown', function(event) {
var $app = $(event.target);
if(!$app.is('a')) {
$app = $app.closest('a');
}
- if(!event.ctrlKey) {
+ if(event.which === 1 && !event.ctrlKey && !event.metaKey) {
$app.addClass('app-loading');
} else {
- // Close navigation when opening app in
- // a new tab
- OC.hideMenus();
+ // On middle click or on first button click with ctrl key or meta key hold
+ if(event.which === 2 || (event.which === 1 && (event.ctrlKey || event.metaKey))) {
+ // Close navigation when opening app in
+ // a new tab
+ OC.hideMenus();
+ window.open($app, '_blank');
+ }
}
});
}
@@ -1519,14 +1523,26 @@ function initCore() {
function setupUserMenu() {
var $menu = $('#header #settings');
- $menu.delegate('a', 'click', function(event) {
+ // show loading feedback
+ $menu.delegate('a', 'mousedown', function(event) {
var $page = $(event.target);
if (!$page.is('a')) {
$page = $page.closest('a');
}
- $page.find('img').remove();
- $page.find('div').remove(); // prevent odd double-clicks
- $page.prepend($('<div/>').addClass('icon-loading-small-dark'));
+ if(event.which === 1 && !event.ctrlKey && !event.metaKey) {
+ $page.find('img').remove();
+ $page.find('div').remove(); // prevent odd double-clicks
+ $page.prepend($('<div/>').addClass('icon-loading-small-dark'));
+ } else {
+ // On middle click or on first button click with ctrl key or meta key hold
+ if(event.which === 2 || (event.which === 1 && (event.ctrlKey || event.metaKey))) {
+ // Close navigation when opening menu entry in
+ // a new tab
+ OC.hideMenus();
+ window.open($page, '_blank');
+ }
+ }
+ $($page).click();
});
}