mirror of
https://github.com/zen-browser/components.git
synced 2025-07-08 16:40:00 +02:00
Merge pull request #33 from BrhmDev/fix/web-panel-back-and-forward-disable
Disable back and forward button inside web panel when they can't be used.
This commit is contained in:
commit
7c43f7943f
1 changed files with 42 additions and 7 deletions
|
@ -8,12 +8,21 @@ var gZenBrowserManagerSidebar = {
|
||||||
_hasRegisteredPinnedClickOutside: false,
|
_hasRegisteredPinnedClickOutside: false,
|
||||||
_isDragging: false,
|
_isDragging: false,
|
||||||
contextTab: null,
|
contextTab: null,
|
||||||
|
sidebar: null,
|
||||||
|
forwardButton: null,
|
||||||
|
backButton: null,
|
||||||
|
progressListener: null,
|
||||||
|
|
||||||
DEFAULT_MOBILE_USER_AGENT: 'Mozilla/5.0 (Android 12; Mobile; rv:129.0) Gecko/20100101 Firefox/130.0',
|
DEFAULT_MOBILE_USER_AGENT: 'Mozilla/5.0 (Android 12; Mobile; rv:129.0) Gecko/20100101 Firefox/130.0',
|
||||||
MAX_SIDEBAR_PANELS: 9, // +1 for the add panel button
|
MAX_SIDEBAR_PANELS: 9, // +1 for the add panel button
|
||||||
MAX_RUNS: 3,
|
MAX_RUNS: 3,
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
|
XPCOMUtils.defineLazyGetter(this, 'sidebar', () => document.getElementById('zen-sidebar-web-panel'));
|
||||||
|
XPCOMUtils.defineLazyGetter(this, 'forwardButton', () => document.getElementById('zen-sidebar-web-panel-forward'));
|
||||||
|
XPCOMUtils.defineLazyGetter(this, 'backButton', () => document.getElementById('zen-sidebar-web-panel-back'));
|
||||||
|
|
||||||
|
this.initProgressListener();
|
||||||
this.update();
|
this.update();
|
||||||
this.close(); // avoid caching
|
this.close(); // avoid caching
|
||||||
this.listenForPrefChanges();
|
this.listenForPrefChanges();
|
||||||
|
@ -21,6 +30,36 @@ var gZenBrowserManagerSidebar = {
|
||||||
this.addPositioningListeners();
|
this.addPositioningListeners();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
initProgressListener() {
|
||||||
|
this.progressListener = {
|
||||||
|
QueryInterface: ChromeUtils.generateQI([
|
||||||
|
"nsIWebProgressListener",
|
||||||
|
"nsISupportsWeakReference",
|
||||||
|
]),
|
||||||
|
onLocationChange: function(aWebProgress, aRequest, aLocation, aFlags) {
|
||||||
|
const browser = this._getCurrentBrowser();
|
||||||
|
if (!browser) return;
|
||||||
|
const forwardDisabled = this.forwardButton.hasAttribute('disabled');
|
||||||
|
const backDisabled = this.backButton.hasAttribute('disabled');
|
||||||
|
|
||||||
|
if (browser.canGoForward === forwardDisabled) {
|
||||||
|
if (browser.canGoForward) {
|
||||||
|
this.forwardButton.removeAttribute('disabled');
|
||||||
|
} else {
|
||||||
|
this.forwardButton.setAttribute('disabled', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (browser.canGoBack === backDisabled) {
|
||||||
|
if (browser.canGoBack) {
|
||||||
|
this.backButton.removeAttribute('disabled');
|
||||||
|
} else {
|
||||||
|
this.backButton.setAttribute('disabled', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.bind(gZenBrowserManagerSidebar),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
get sidebarData() {
|
get sidebarData() {
|
||||||
let services = Services.prefs.getStringPref('zen.sidebar.data');
|
let services = Services.prefs.getStringPref('zen.sidebar.data');
|
||||||
if (services === '') {
|
if (services === '') {
|
||||||
|
@ -398,6 +437,8 @@ var gZenBrowserManagerSidebar = {
|
||||||
this._hideAllWebPanels();
|
this._hideAllWebPanels();
|
||||||
if (!this._currentPanel) {
|
if (!this._currentPanel) {
|
||||||
this.introductionPanel.removeAttribute('hidden');
|
this.introductionPanel.removeAttribute('hidden');
|
||||||
|
this.forwardButton.setAttribute('disabled', true);
|
||||||
|
this.backButton.setAttribute('disabled', true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.introductionPanel.setAttribute('hidden', 'true');
|
this.introductionPanel.setAttribute('hidden', 'true');
|
||||||
|
@ -412,6 +453,7 @@ var gZenBrowserManagerSidebar = {
|
||||||
let browser = this._createWebPanelBrowser(data);
|
let browser = this._createWebPanelBrowser(data);
|
||||||
let browserContainers = document.getElementById('zen-sidebar-web-panel-browser-containers');
|
let browserContainers = document.getElementById('zen-sidebar-web-panel-browser-containers');
|
||||||
browserContainers.appendChild(browser);
|
browserContainers.appendChild(browser);
|
||||||
|
browser.addProgressListener(this.progressListener, Ci.nsIWebProgress.NOTIFY_LOCATION);
|
||||||
if (data.ua) {
|
if (data.ua) {
|
||||||
browser.browsingContext.customUserAgent = this.DEFAULT_MOBILE_USER_AGENT;
|
browser.browsingContext.customUserAgent = this.DEFAULT_MOBILE_USER_AGENT;
|
||||||
browser.reload();
|
browser.reload();
|
||||||
|
@ -557,13 +599,6 @@ var gZenBrowserManagerSidebar = {
|
||||||
return this._sidebarHeader;
|
return this._sidebarHeader;
|
||||||
},
|
},
|
||||||
|
|
||||||
get sidebar() {
|
|
||||||
if (!this._sidebar) {
|
|
||||||
this._sidebar = document.getElementById('zen-sidebar-web-panel');
|
|
||||||
}
|
|
||||||
return this._sidebar;
|
|
||||||
},
|
|
||||||
|
|
||||||
get sidebarWrapper() {
|
get sidebarWrapper() {
|
||||||
if (!this._sideBarWrapper) {
|
if (!this._sideBarWrapper) {
|
||||||
this._sideBarWrapper = document.getElementById('zen-sidebar-web-panel-wrapper');
|
this._sideBarWrapper = document.getElementById('zen-sidebar-web-panel-wrapper');
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue