onemen / tabmixplus Goto Github PK
View Code? Open in Web Editor NEWNew Tab mix plus for modern Firefox
License: Other
New Tab mix plus for modern Firefox
License: Other
I mean the value on dialog is changing but it not been sync to preferences.
Have to switch to instant apply mode fro things to connect.
Error:
Uncaught TypeError: Services.wm.getZOrderDOMWindowEnumerator is not a function
getWindowsList chrome://tabmix-resource/content/MergeWindows.jsm:266
_mergeWindows chrome://tabmix-resource/content/MergeWindows.jsm:44
oncommand chrome://browser/content/browser.xhtml:1
'Services.wm.getZOrderDOMWindowEnumerator' is no more but there is a 'Services.wm.getZOrderAppWindowEnumerator'.
I'll bet they just change the name.
TabMixPlus/addon/modules/MergeWindows.jsm
Line 135 in 316280c
@117649 ,
Old code to Place popups next to their openers does not work.
using browser.ownerGlobal.opener return ChromeWindow and i don't know how to get the opener tab from it
let me know if you can find solution to this issue.
I can also remove this option and just merge popup window at the end
2 out of 3 not working right.
Due to the change of the Firefox we now no longer have a referrerURI
in params
.
referrerInfo
seems replaced it.
TabMixPlus/addon/chrome/content/minit/tablib.js
Lines 136 to 170 in 06b5130
TypeError: can't access property "mixedContentChannel", this.docShell is undefined
contentAreaClick chrome://tabmixplus/content/scripts/content.js:332
handleEvent chrome://tabmixplus/content/scripts/content.js:216
(Async: EventListener.handleEvent)
init chrome://tabmixplus/content/scripts/content.js:210
<anonymous> chrome://tabmixplus/content/scripts/content.js:556
content.js:332:11
Error in the console from Firefox 91 - nightly
08:50:51.242 Tabmix:
TMP_updateMainContextMenu was unable to change gContextMenu.openLinkInTab.
can't find string
/allowMixedContent:|charset:/
Try Tabmix latest development version from tabmixplus.org/tab_mix_plus-dev-build.xpi,
Report about this to Tabmix developer at http://tabmixplus.org/forum/
3 click.js:698:7
For the Firefox versions compatibility it is a little bizarre situation here:
1. For the latest Waterfox G3 which is based on Firefox 78ESR the compatibility should just be straightforward. 2. You need a [helper](https://github.com/117649/firefox-scripts) to load the bootstrap legacy add-on, Waterfox already came with one. 3. The helper came in two types [extension](https://github.com/117649/firefox-scripts/tree/master/extensions/bootstrapLoader) and [script](https://github.com/117649/firefox-scripts/tree/master/chrome/utils). I would consider the one waterfox provided is script type. 4. The two types of the helper CAN co-exist BUT SHOULD NOT since this will cause two helper in the browser and load every bootstrap legacy add-on twice. Which will cause problem.
If i understand it correctly, the user of Tab Mix Plus will have to install the helper loader (script or extension), we are not going to wrap the loader with Tab Mix xpi file
Tittle. May relate to session manager.
NS_ERROR_FILE_NOT_FOUND: content.js:74
receiveMessage chrome://tabmixplus/content/scripts/content.js:74
(Async: MessageListener.receiveMessage)
init chrome://tabmixplus/content/scripts/content.js:58
forEach self-hosted:205
init chrome://tabmixplus/content/scripts/content.js:58
<anonymous> chrome://tabmixplus/content/scripts/content.js:519
https://www.ghacks.net/2021/01/23/first-non-final-tabs-redesign-courtesy-of-proton-lands-in-firefox-nightly/
https://www.ghacks.net/2021/01/02/mozilla-is-working-on-a-firefox-design-refresh/
It's look like the Inner structure of the tab may change. Which may lead to requirement of update our 'tab binding' in future.
After notification from tabmix that it need to restart i get this error message in the console
window.BrowserUtils.restartApplication is not a function bootstrap.js:35
can't save changes
selected entry does not appear in the input line to modify
help button not working
We can add option to toggle compact mode for tab height, with a simple checkbox.
compact: preference browser.uidensity = 1
normal: preference browser.uidensity = 0
Currently in Firefox 91 the value for compact height is 29px.
We can also add slider to allow the user to set custom height, values can be from 21px to 40px
Getting the following error when trying to open any bookmark/history entry from the Library window (Ctrl + Shift + H)
Opening from the bookmarks toolbar, or library pop-up pane works (although history doesn't remember the container but I don't know if that's related to TMP)
Uncaught ReferenceError: BrowserWindowTracker is not defined
getBrowserWindow chrome://tabmix-resource/content/Places.jsm:39
PUIU_openNodeWithEvent chrome://tabmix-resource/content/Places.jsm line 71 > eval:4
CT_openSelectedNode chrome://browser/content/places/places.js:1451
CT_onClick chrome://browser/content/places/places.js:1461
onclick chrome://browser/content/places/places.xhtml:1
Places.jsm:39:1
Firefox Developer Edition 87.0b9
Clean profile no other add-ons
Config only modified to allow for unsigned add-ons
Default TMP preferences
If the tabs is overflowing the new tab button will not show.
At this moment disable and re-enable the option would cause new tab button show on right of the tab bar and it will stay on there even if tabs stop overflow.
Stop overflowing disable and re-enable the option can make new tab button show after last tab.
Found out that when disable then re-enable the option the attribute would be set to "right-side" regardless what the menu selection is while tab bar is overflowing.
@117649 , i'v noticed that you don't have updates.json in your repositories Tab-Groups and Saved Password Editor Redux is there any other why to enable auto update for bootstrap extensions?
We need to update the link in install.rdf and the content of updates.json to Github urls
I'm trying to fix it. And got some positive result. Have you already worked on that?
Just want to be sure I'm not reinventing wheel.
I'll make a PR for the fix as soon as finish if it is needed.
when window start i see this error in the console
23:11:16.682 [Exception... "Component returned failure code: 0x80520001 (NS_ERROR_FILE_UNRECOGNIZED_PATH) [nsIXPCComponents_Utils.readUTF8URI]" nsresult: "0x80520001 (NS_ERROR_FILE_UNRECOGNIZED_PATH)" location: "JS frame :: resource://gre/modules/L10nRegistry.jsm :: L10nRegistry.loadSync :: line 692" data: no] 2 L10nRegistry.jsm:692:19
The error when loading the preference window, Uncaught (in promise) undefined
also related to l10n.
when i removed all data-l10n attribute from the xhtml files (menu.xhtml, mouse.xhtml) the error is gone.
However Firefox stile crashing when loading from Add-ons page so it probably not related.
Two are broken options are broken
browser.newtab.url
) not working. modules/NewTabURL.jsm
updateNewTabURL() {
let value = Services.prefs.getStringPref(FIREFOX_PREF);
if (value == ABOUT_NEW_TAB) {
aboutNewTabService.resetNewTabURL();
} else {
aboutNewTabService.newTabURL = value;
}
}
userInterface.js:48:7
Uncaught ReferenceError: gHomeButton is not defined
TMP_BrowserOpenTab chrome://tabmixplus/content/links/userInterface.js:48
oncommand chrome://browser/content/browser.xhtml:1
Anyway it should be able to import old sessions file.
I have Tab-Group installed which cause 'all tabs' button show at first.
I think that progress meter on tabs is obsolete.
with the new design of burst animation it have no real value to the user.
according to my testing, for most of the tab the progress value get at most 2 hits, the value change from 0 to 50% to 80% and 100%. it also happens to fast to be visible.
Maybe we can improve the code to get move visible update, but it stile think that we don't really need it.
Some spinner are missing min value.
For Tab Width (id="minWidth" id="maxWidth"
) the min value should be the size of pinned tab
Changing the value for Dispkay > Tab Bar > Scroll Delay id="scrollDelay"
throw an error TypeError: setting getter-only property "_scrollDelay"
, I will address this issue but the pref need a min
there are others without a min.
@117649 can you take this one ?
Error when auto reload try to reload tab
18:30:01.899 TypeError: docShell.QueryInterface(...).sessionHistory.QueryInterface is not a functioncontent.js:129:14
receiveMessage chrome://tabmixplus/content/scripts/content.js:129
(Async: MessageListener.receiveMessage)
init chrome://tabmixplus/content/scripts/content.js:65
forEach self-hosted:206
init chrome://tabmixplus/content/scripts/content.js:65
<anonymous> chrome://tabmixplus/content/scripts/content.js:555
auto reload code is in AutoReload.jsm
I have just removed this feature (commit a0c1fca)
Reason for removing it:
[Exception... "Component returned failure code: 0x80004001
(NS_ERROR_NOT_IMPLEMENTED) [nsIRequest.loadFlags]" nsresult:
"0x80004001 (NS_ERROR_NOT_IMPLEMENTED)" location: "JS frame ::
chrome://tabmixplus/content/tab/tab.js :: TMP_onStateChange ::
line 2660" data: no]
@117649, i don't find important but if you know about a simple fix let me know.
TabMixPlus/addon/chrome/skin/general.css
Lines 66 to 67 in f601e73
#tabbrowser-tabs[tabBarSpace] > .tabbrowser-arrowscrollbox
to
#tabbrowser-tabs[tabBarSpace] > #tabbrowser-arrowscrollbox
Will make the "Extra spaces on both sides" option function but it does look awkward when the browser window is not maximized.
May be adding more rules to take built-in spacer into consideration or directly manipulate them.
So, this:
let warnAboutClosingTabs = function(whatToClose, aTab, aDomain) {
// see Tabmix.tablib.closeWindow comment
if (Tabmix.callerTrace("BG__onQuitRequest")) {
return true;
}
var closing = this.closingTabsEnum;
// try to catch call from other extensions to warnAboutClosingTabs (before Firefox 24)
if (typeof (whatToClose) == "boolean")
whatToClose = whatToClose ? closing.ALL_ONEXIT : closing.OTHER;
var onExit = whatToClose == closing.ALL_ONEXIT;
var tabs = !onExit ? this.visibleTabs : this.tabs;
var numTabs = tabs.length;
// calc the number of tab to close when there is protected tabs.
let protectedTabs = [];
function addProtected(aTabs) {
for (let i = 0; i < aTabs.length; i++) {
let tab = aTabs[i];
if (protectedTabs.indexOf(tab) == -1 &&
(onExit || !tab.hidden)) {
protectedTabs.push(aTabs[i]);
}
}
}
// we always restore pinned tabs no need to warn about closing
if (this._numPinnedTabs && !onExit) {
addProtected(this.tabContainer.getElementsByAttribute("pinned", true));
}
if ("permaTabs" in window) {
addProtected(this.tabContainer.getElementsByAttribute("isPermaTab", true));
}
addProtected(this.tabContainer.getElementsByAttribute("protected", true));
var numProtected = protectedTabs.length;
var shouldPrompt = 0;
var prefs = ["extensions.tabmix.tabs.warnOnClose",
"extensions.tabmix.protectedtabs.warnOnClose",
"browser.tabs.warnOnClose"];
if (onExit) {
let openTabs = numTabs - this._removingTabs.length;
if (openTabs > 1 && Services.prefs.getBoolPref(prefs[2]))
shouldPrompt = 3;
else if (numProtected > 0 && Services.prefs.getBoolPref(prefs[1]))
shouldPrompt = 2;
} else if (numTabs > 1) {
if (Services.prefs.getBoolPref(prefs[0]))
shouldPrompt = 1;
// when we close window with last tab and we don't have protected tabs
// we need to warn the user with the proper warning
if (Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab") &&
!Tabmix.prefs.getBoolPref("keepLastTab") &&
Services.prefs.getBoolPref(prefs[2])) {
if (whatToClose == closing.GROUP)
shouldPrompt = -1;
else if (whatToClose == closing.ALL && numProtected === 0 &&
numTabs == this.tabs.length) {
whatToClose = closing.ALL_ONEXIT;
shouldPrompt = 3;
}
}
}
if (shouldPrompt === 0)
return true;
var tabPos, tabsToClose = 0;
switch (whatToClose) {
case closing.ALL:
tabsToClose = numTabs - numProtected;
break;
case closing.ALL_ONEXIT:
tabsToClose = numTabs - this._removingTabs.length;
break;
case closing.OTHER:
if (!aTab)
aTab = this.mCurrentTab;
if (aTab._isProtected)
--numProtected;
tabsToClose = numTabs - 1 - numProtected;
break;
case closing.GROUP:
for (let i = numTabs - 1; i > -1; --i) {
let tab = tabs[i];
if (this.getBrowserForTab(tab).currentURI.spec.indexOf(aDomain) != -1 &&
!tab._isProtected)
tabsToClose++;
}
if (shouldPrompt == -1) {
if (tabsToClose == this.tabs.length)
shouldPrompt = 3;
else if (Services.prefs.getBoolPref(prefs[0]))
shouldPrompt = 1;
else
return true;
}
break;
case closing.TO_END:
if (!aTab)
throw new Error("Required argument missing: aTab");
tabPos = tabs.indexOf(aTab);
for (let i = 0; i < protectedTabs.length; i++) {
let index = tabs.indexOf(protectedTabs[i]);
if (index <= tabPos)
--numProtected;
}
tabsToClose = numTabs - tabPos - 1 - numProtected;
break;
case closing.TO_START:
if (!aTab)
throw new Error("Required argument missing: aTab");
tabPos = tabs.indexOf(aTab);
for (let i = 0; i < protectedTabs.length; i++) {
let index = tabs.indexOf(protectedTabs[i]);
if (index >= tabPos)
--numProtected;
}
tabsToClose = tabPos - numProtected;
break;
default:
throw new Error("Invalid argument: " + whatToClose);
}
if (whatToClose != closing.ALL_ONEXIT && tabsToClose == numTabs &&
Tabmix.prefs.getBoolPref("keepLastTab"))
tabsToClose--;
if (tabsToClose <= 1 && shouldPrompt < 2)
return true;
// default to true: if it were false, we wouldn't get this far
var warnOnClose = {value: true};
var message, chkBoxLabel;
if (shouldPrompt == 1 || numProtected === 0) {
if (Tabmix.isVersion(290)) {
message = PluralForm.get(tabsToClose, Tabmix.getString("tabs.closeWarningMultiple"))
.replace("#1", tabsToClose);
} else {
message = Tabmix.getFormattedString("tabs.closeWarningMultipleTabs", [tabsToClose]);
}
chkBoxLabel = shouldPrompt == 1 ? Tabmix.getString("tabs.closeWarningPromptMe") :
TabmixSvc.getString("window.closeWarning.2");
} else {
let messageKey = "protectedtabs.closeWarning.";
messageKey += (numProtected < tabsToClose) ? "3" : (numProtected == 1) ? "1" : "2";
message = TabmixSvc.getFormattedString(messageKey, [tabsToClose, numProtected]);
var chkBoxKey = shouldPrompt == 3 ? "window.closeWarning.2" : "protectedtabs.closeWarning.5";
chkBoxLabel = TabmixSvc.getString(chkBoxKey);
}
var buttonLabel = shouldPrompt == 1 ? Tabmix.getString("tabs.closeButtonMultiple") :
TabmixSvc.getString("closeWindow.label");
window.focus();
var promptService = Services.prompt;
var buttonPressed = promptService.confirmEx(window,
Tabmix.getString("tabs.closeWarningTitle"),
message,
(promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_0) +
(promptService.BUTTON_TITLE_CANCEL * promptService.BUTTON_POS_1),
buttonLabel,
null, null,
chkBoxLabel,
warnOnClose);
var reallyClose = (buttonPressed === 0);
// don't set the pref unless they press OK and it's false
if (reallyClose && !warnOnClose.value) {
Services.prefs.setBoolPref(prefs[shouldPrompt - 1], false);
}
return reallyClose;
};
has to be merge into this:
warnAboutClosingTabs(tabsToClose, aCloseTabs) {
if (tabsToClose <= 1) {
return true;
}
const pref =
aCloseTabs == this.closingTabsEnum.ALL
? "browser.tabs.warnOnClose"
: "browser.tabs.warnOnCloseOtherTabs";
var shouldPrompt = Services.prefs.getBoolPref(pref);
if (!shouldPrompt) {
return true;
}
const maxTabsUndo = Services.prefs.getIntPref(
"browser.sessionstore.max_tabs_undo"
);
if (
aCloseTabs != this.closingTabsEnum.ALL &&
tabsToClose <= maxTabsUndo
) {
return true;
}
var ps = Services.prompt;
// default to true: if it were false, we wouldn't get this far
var warnOnClose = { value: true };
// focus the window before prompting.
// this will raise any minimized window, which will
// make it obvious which window the prompt is for and will
// solve the problem of windows "obscuring" the prompt.
// see bug #350299 for more details
window.focus();
let warningMessage = gTabBrowserBundle.GetStringFromName(
"tabs.closeWarningMultiple"
);
warningMessage = PluralForm.get(tabsToClose, warningMessage).replace(
"#1",
tabsToClose
);
let flags =
ps.BUTTON_TITLE_IS_STRING * ps.BUTTON_POS_0 +
ps.BUTTON_TITLE_CANCEL * ps.BUTTON_POS_1;
let checkboxLabel =
aCloseTabs == this.closingTabsEnum.ALL
? gTabBrowserBundle.GetStringFromName("tabs.closeWarningPromptMe")
: null;
var buttonPressed = ps.confirmEx(
window,
gTabBrowserBundle.GetStringFromName("tabs.closeTitleTabs"),
warningMessage,
flags,
gTabBrowserBundle.GetStringFromName("tabs.closeButtonMultiple"),
null,
null,
checkboxLabel,
warnOnClose
);
var reallyClose = buttonPressed == 0;
// don't set the pref unless they press OK and it's false
if (
aCloseTabs == this.closingTabsEnum.ALL &&
reallyClose &&
!warnOnClose.value
) {
Services.prefs.setBoolPref(pref, false);
}
return reallyClose;
},
Any ideals?
19:02:09.146 XML Parsing Error: undefined entity
Location: moz-nullprincipal:{2902ddbc-8191-47f0-b59b-099122e6dc7d}
Line Number 9, Column 9: {2902ddbc-8191-47f0-b59b-099122e6dc7d}:9:9
19:02:09.146
Uncaught Error: not well-formed XML
parseXULToFragment chrome://global/content/customElements.js:566
connectedCallback chrome://tabmixplus/content/preferences/prefs-ce.js:1091
setDialog chrome://tabmixplus/content/preferences/preferences.js:722
onload chrome://tabmixplus/content/preferences/preferences.xhtml:1
customElements.js:566:17
parseXULToFragment chrome://global/content/customElements.js:566
connectedCallback chrome://tabmixplus/content/preferences/prefs-ce.js:1091
setDialog chrome://tabmixplus/content/preferences/preferences.js:722
onload chrome://tabmixplus/content/preferences/preferences.xhtml:1
No error emitting the thing just not in function.
Error log for Close Tab
and Open anew tab
not seeing any others so far.
TypeError: can't access property "audioMuted", browser is undefined
TabState.jsm:108:9
_collectBaseTabData resource:///modules/sessionstore/TabState.jsm:108
collect resource:///modules/sessionstore/TabState.jsm:67
collect resource:///modules/sessionstore/TabState.jsm:34
ssi_onTabClose resource:///modules/sessionstore/SessionStore.jsm:2667
ssi_handleEvent resource:///modules/sessionstore/SessionStore.jsm:1616
_beginRemoveTab chrome://tabmixplus/content/changecode.js line 218 > eval:155
removeTab chrome://browser/content/tabbrowser.js:3386
removeTab chrome://tabmixplus/content/minit/tablib.js:255
TMP_doCommand chrome://tabmixplus/content/click/click.js:156
TMP_clickAction chrome://tabmixplus/content/click/click.js:137
TMP_onTabBarDblClick chrome://tabmixplus/content/click/click.js:129
handleEvent chrome://tabmixplus/content/tab/tab.js:748
TypeError: can't access property "isRemoteBrowser", e.target.linkedBrowser is undefined
Browsers.jsm:170:8
handleEvent chrome://tabgroups-resource/content/modules/utils/Browsers.jsm:170
_beginRemoveTab chrome://tabmixplus/content/changecode.js line 218 > eval:155
removeTab chrome://browser/content/tabbrowser.js:3386
removeTab chrome://tabmixplus/content/minit/tablib.js:255
TMP_doCommand chrome://tabmixplus/content/click/click.js:156
TMP_clickAction chrome://tabmixplus/content/click/click.js:137
TMP_onTabBarDblClick chrome://tabmixplus/content/click/click.js:129
handleEvent chrome://tabmixplus/content/tab/tab.js:748
TypeError: can't access property "ownerGlobal", aBrowser is undefined
PrivateBrowsingUtils.jsm:40:21
isBrowserPrivate resource://gre/modules/PrivateBrowsingUtils.jsm:40
isPrivateTab chrome://browser/content/parent/ext-browser.js:44
emitRemoved chrome://browser/content/parent/ext-browser.js:746
handleEvent chrome://browser/content/parent/ext-browser.js:578
_beginRemoveTab chrome://tabmixplus/content/changecode.js line 218 > eval:155
removeTab chrome://browser/content/tabbrowser.js:3386
removeTab chrome://tabmixplus/content/minit/tablib.js:255
TMP_doCommand chrome://tabmixplus/content/click/click.js:156
TMP_clickAction chrome://tabmixplus/content/click/click.js:137
TMP_onTabBarDblClick chrome://tabmixplus/content/click/click.js:129
handleEvent chrome://tabmixplus/content/tab/tab.js:748
Uncaught TypeError: can't access property "registeredOpenURI", browser is undefined
_beginRemoveTab chrome://tabmixplus/content/changecode.js line 218 > eval:188
removeTab chrome://browser/content/tabbrowser.js:3386
removeTab chrome://tabmixplus/content/minit/tablib.js:255
TMP_doCommand chrome://tabmixplus/content/click/click.js:156
TMP_clickAction chrome://tabmixplus/content/click/click.js:137
TMP_onTabBarDblClick chrome://tabmixplus/content/click/click.js:129
handleEvent chrome://tabmixplus/content/tab/tab.js:748
I just got Fx86.0b4 dropped.
Then:
ReferenceError: Windows is not defined Overlays.jsm:755:5
Shows up and it look like everything else is not load correctly due to it.
In the good old days before Webextensions I could place a file in profile/extensions folder with a link to my working directory.
that configuration eliminate the need to create XPI file and install it after each change
for extension with id [email protected] the file name was the same as the id ([email protected])
and its content was
path\to\working\direcory
Is it possible to do the same with Firefox nightly when using helper loader ?
fb6614b
These changes will put DnD in to work but nothing seems right.
We use tab.boxObject in many places
I'm working on it now
Report here about any issue with localization or If you are willing to work on translation
Firefox crashing when loading Tab Mix options from Add-ons:
it crash when trying to open options from this view (all extensions):
but it work OK from extension view (only Tab mix):
Originally posted by @onemen in #17 (comment)
I think i have a fix for this issue.
The problem is in aboutaddons.js, we add click event for the option button after load event and from MutationObserver.
when you open Add-ons tabs for the first time both load event and mutation add click listener to the button.
when we click it both listeners runs and Firefox try to open the same window twice
It work for me with this patch, if it look right to you i will commit it
diff --git a/addon/chrome/content/preferences/overlay/aboutaddons.js b/addon/chrome/content/preferences/overlay/aboutaddons.js
index 14d8f245..f296fbe2 100644
--- a/addon/chrome/content/preferences/overlay/aboutaddons.js
+++ b/addon/chrome/content/preferences/overlay/aboutaddons.js
@@ -38,13 +38,16 @@ function updateShowItemPreferences() {
// }
const tabmixItem = getHtmlBrowser().contentDocument.querySelector(`addon-card[addon-id="${ID}"]`);
if (tabmixItem) {
- tabmixItem.querySelector(`panel-item[action="preferences"]`)
- .button.addEventListener("click", event => {
- event.stopPropagation();
- try {
- windowRoot.ownerGlobal.Tabmix.openOptionsDialog(-1);
- } catch (ex) { }
- });
+ const optionsButton = tabmixItem.querySelector(`panel-item[action="preferences"]`).button;
+ optionsButton._tabmix_command_installed = true;
+ if (!optionsButton._tabmix_command_installed) {
+ optionsButton.addEventListener("click", event => {
+ event.stopPropagation();
+ try {
+ windowRoot.ownerGlobal.Tabmix.openOptionsDialog(-1);
+ } catch (ex) { }
+ });
+ }
}
// const addonOptionsItem = getHtmlBrowser().contentDocument.querySelector(`template[name="addon-options"]`).content.querySelector(`[action="preferences"]`);
// addonOptionsItem.setAttribute("onclick",
legacy code:
<xul:toolbarbutton anonid="tmp-close-button"
xbl:inherits="fadein,pinned,selected,visuallyselected"
class="tab-close-button close-icon"/>
changed to:
<image class="tab-close-button close-icon" role="presentation"/>
these places need update
7 results - 4 files
addon\chrome\content\click\click.js:
32 this._blockDblClick = target.classList.contains("tabs-newtab-button") ||
33: !Tabmix.isVersion(270) && leftClick && anonid == "tmp-close-button";
34
36 if (leftClick &&
37: (anonid == "tmp-close-button" || aEvent.target._overPlayingIcon ||
38 target.localName == "toolbarbutton")) {
44 if (aEvent.button == 1 && target.localName == "toolbarbutton" &&
45: anonid != "tmp-close-button") {
46 return;
113 // don't do anything if user left click on tab or tabbar button
114: if (anonid == "tmp-close-button" || aEvent.target._overPlayingIcon ||
115 target.localName == "toolbarbutton") {
addon\chrome\content\extensions\extensions.js:
296 'node = doc.getAnonymousElementByAttribute(tab, "class", "tab-close-button");',
297: 'node = doc.getAnonymousElementByAttribute(tab, "anonid", "tmp-close-button");', {silent: true}
298 )._replace(
addon\chrome\content\minit\minit.js:
170 if (event.originalTarget && typeof event.originalTarget.getAttribute == "function" &&
171: event.originalTarget.getAttribute("anonid") == "tmp-close-button") {
172 event.stopPropagation();
addon\chrome\content\tab\tabBindings.js:
256 aEvent.originalTarget.getAttribute("anonid");
257: if (anonid == "tmp-close-button") {
258 this.mOverCloseButton = aOver;
https://www.ghacks.net/2021/01/23/first-non-final-tabs-redesign-courtesy-of-proton-lands-in-firefox-nightly/
https://www.ghacks.net/2021/01/02/mozilla-is-working-on-a-firefox-design-refresh/
It's look like the Inner structure of the tab may change. Which may lead to needs of update our 'tab binding' in future.
I've just tried packing a new .xpi from rewrite/main after some css change. And the add-on option dialog window broken thus I have to revert most changes done on the 'prefs-ce.js'
Since the old add-on dialog is planed to be replaced may be just leave the file as it is.
chrome\content\dialogs\about.xul
chrome\content\extensions\sage.xul
chrome\content\extensions\wizzrss.xul
chrome\content\links\links.xul
chrome\content\overlay\newtab.xul
chrome\content\overlay\removeblanktab.xul
chrome\content\preferences\overlay\incontentpreferences.xul
chrome\content\preferences\overlay\main.xul
chrome\content\preferences\overlay\overlaysanitizeui.xul
chrome\content\preferences\overlay\tabs.xul
These files are leftover for our legacy extension
some of the files already converted to xhtml.
File that are not yet converted to xhtml should either be converted or deleted with its related js file/code
I'm trying use multiple bootstrap addons and found that browser startup have a big chance been interrupt and hangs especially when having more than one addons enabled and restore a session. (most of the UI are loaded but not the tabs of restored session, tool bar button's menu, booksmark bar items)
I'm using script loader for addons.
And Tab Groups just not been loaded while browser start.
Are you seeing any of this?
Addons:
roomybookmarksredux
TMP
Tab-Groups
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.