From 03ae2de82b1238c907689250a421cfc147d76cc2 Mon Sep 17 00:00:00 2001 From: Philipp Date: Sun, 23 Sep 2018 15:34:24 +0200 Subject: [PATCH] Bugfix: Click determination after changing sidebar width Signed-off-by: Philipp --- src/js/background.js | 2 +- src/js/helper/sidebarEvents.js | 10 ++++++---- src/js/helper/toggle.js | 16 ++++++++++++---- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/js/background.js b/src/js/background.js index c0c2fcac..90f4412d 100644 --- a/src/js/background.js +++ b/src/js/background.js @@ -139,7 +139,7 @@ checkLicenseKey(opts.licenseKey).then((response) => { if (response.valid === true) { // valid license key -> reinitialize sidebar this.helper.model.setLicenseKey(opts.licenseKey).then(() => { - this.reinitialize({type: "premiumActivated"}); + return this.reinitialize({type: "premiumActivated"}); }).then(() => { resolve({success: true}); }); diff --git a/src/js/helper/sidebarEvents.js b/src/js/helper/sidebarEvents.js index 8e61c75f..6914acc4 100644 --- a/src/js/helper/sidebarEvents.js +++ b/src/js/helper/sidebarEvents.js @@ -334,8 +334,6 @@ ext.helper.contextmenu.close(); ext.helper.tooltip.close(); ext.helper.toggle.addSidebarHoverClass(); - - ext.elm.widthDrag.data("dragInfo", {start: e.clientX, width: ext.elm.sidebar.realWidth()}); ext.elm.widthDrag.addClass($.cl.drag.isDragged); }); @@ -343,7 +341,13 @@ if (ext.elm.widthDrag.hasClass($.cl.drag.isDragged) && e.which === 1) { e.preventDefault(); e.stopPropagation(); + let dragInfo = ext.elm.widthDrag.data("dragInfo"); + if (!dragInfo) { + dragInfo = {start: e.clientX, width: ext.elm.sidebar.realWidth()}; + ext.elm.widthDrag.data("dragInfo", dragInfo); + } + let diff = e.clientX - dragInfo.start; if (sidebarPos === "right") { @@ -393,11 +397,9 @@ if (message.type === "Removed" || (message.type === "Created" && isRestoring === true)) { // removed or created from undo -> prevent reload when it was performed on this browser tab Object.values(ext.elm.bookmarkBox).some((box) => { if (box.hasClass($.cl.active)) { - if (box.find("a." + $.cl.sidebar.restored).length() > 0 || box.find("span." + $.cl.sidebar.removeMask).length() > 0) { // prevent reloading the sidebar on the tab where the entry got removed or restored performReload = false; } - return true; } }); diff --git a/src/js/helper/toggle.js b/src/js/helper/toggle.js index b6f99081..8e8c6c2b 100644 --- a/src/js/helper/toggle.js +++ b/src/js/helper/toggle.js @@ -15,6 +15,7 @@ let preventWindowed = null; let openDelay = 0; let indicatorWidth = null; + let sidebarWidth = null; let inPixelToleranceTime = null; let mouseNotTopLeft = false; let timeout = {}; @@ -58,8 +59,13 @@ ext.elm.iframe.attr($.attr.position, sidebarPos); ext.elm.sidebar.attr($.attr.position, sidebarPos); - if (data.styles && data.styles.indicatorWidth) { - indicatorWidth = parseInt(data.styles.indicatorWidth); + if (data.styles) { + if (data.styles.indicatorWidth) { + indicatorWidth = parseInt(data.styles.indicatorWidth); + } + if (data.styles.sidebarWidth) { + sidebarWidth = parseInt(data.styles.sidebarWidth); + } } if (data.showIndicator && data.openAction !== "icon" && data.openAction !== "mousemove") { // show indicator @@ -250,16 +256,18 @@ ext.elm.iframe.find("body").on("click", (e) => { // click outside the sidebar -> close if (e.clientX) { let clientX = e.clientX; + let curSidebarWidth = ext.elm.sidebar.realWidth(); + if (sidebarPos === "right") { if (sidebarHasMask()) { - clientX = window.innerWidth - clientX + ext.elm.sidebar.realWidth() - 1; + clientX = window.innerWidth - clientX + (sidebarWidth || curSidebarWidth) - 1; } else { clientX = ext.elm.iframe.realWidth() - clientX; } } if ( - clientX > ext.elm.sidebar.realWidth() && + clientX > curSidebarWidth && ext.elm.iframe.hasClass($.cl.page.visible) && ext.elm.widthDrag.hasClass($.cl.drag.isDragged) === false ) {