Hallo
Es geht um das Script MultiRowTabLiteforFx.uc.js, kann man das Script so ändern das sich die Angehefteten Tabs nicht mit Bewegen.
Hallo
Es geht um das Script MultiRowTabLiteforFx.uc.js, kann man das Script so ändern das sich die Angehefteten Tabs nicht mit Bewegen.
Dann solltest du das Script hier mal posten, so kann damit niemand etwas anfangen
Vor allen Dingen, weil es 6 Skripte mit diesem Namen gibt.
Unabhängig davon hattest du die Frage hier auch schon mal gestellt:
(Einmal sollte eigentlich reichen)
// ==UserScript==
// [user='11751']Name[/user] zzzz-MultiRowTab_LiteforFx48.uc.js
// [user='11751']Name[/user]space http://space.geocities.yahoo.co.jp/gl/alice0775
// @description Experimentelle CSS Version für Mehrzeilige Tableiste
// @include main
// @compatibility Firefox 69
// @author Alice0775
// @version 2016/08/05 00:00 Firefox 48
// @version 2016/05/01 00:01 hide favicon if busy
// @version 2016/03/09 00:01 Bug 1222490 - Actually remove panorama for Fx45+
// @version 2016/02/09 00:01 workaround css for lwt
// @version 2016/02/09 00:00
// ==/UserScript==
"user strict";
MultiRowTabLiteforFx();
function MultiRowTabLiteforFx() {
var css =` @-moz-document url-prefix("chrome://browser/content/browser.xhtml") {
/* Mehrzeilige Tableiste */
tabs>arrowscrollbox{display:block;}
tabs arrowscrollbox>scrollbox {
display:flex;display:-webkit-box;flex-wrap:wrap;
max-height: calc(var(--tab-min-height) * 2); /* Anzahl der Tabzeilen */
overflow-x:hidden;overflow-y:auto; }
[tabsintitlebar="true"] tabs scrollbar{-moz-window-dragging:no-drag;}
/* Bei Überschreitung der angegebenen Zeilenanzahl, mit der Maus,
über die dann eingeblendetet Scrolleiste zu Zeile wechseln */
tabs tab[fadein]:not([pinned]){flex-grow:1;}
tabs tab,.tab-background {
height: var(--tab-min-height);
overflow: hidden;
z-index: 1 !important; }
tab>.tab-stack{width:100%;}
[sizemode="fullscreen"] #TabsToolbar>#window-controls,
.titlebar-buttonbox-container>.titlebar-buttonbox{display:block;}
/* Drag-Bereich auf der linken und rechten Seite der
Tab-Leiste auslenden - verstecken
Links und rechts → hbox.titlebar-spacer
links → hbox.titlebar-spacer[type="pre-tabs"]
rechts → hbox.titlebar-spacer[type="post-tabs"] */
hbox.titlebar-spacer
/* Ausblenden - Verstecken */
,#alltabs-button,tabs [class^="scrollbutton"],tabs spacer,[autohide="true"][inactive="true"] .titlebar-buttonbox { display: none; }
} `;
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
var style = ' \
tabs tab:not(stack) { \
border-left: solid 1px hsla(0,0%,50%,.5) !important; \
border-right: solid 1px hsla(0,0%,50%,.5) !important; \
} \
tabs tab:after,tabs tab:before{display:none!important;} \
';
var sspi = document.createProcessingInstruction('xml-stylesheet',
'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"');
document.insertBefore(sspi, document.documentElement);
gBrowser.tabContainer._animateTabMove = function(event){}
gBrowser.tabContainer._finishAnimateTabMove = function(){}
gBrowser.tabContainer.lastVisibleTab = function() {
var tabs = this.allTabs;
for (let i = tabs.length - 1; i >= 0; i--){
if (!tabs[i].hasAttribute("hidden"))
return i;
}
return -1;
}
gBrowser.tabContainer.clearDropIndicator = function() {
var tabs = this.allTabs;
for (let i = 0, len = tabs.length; i < len; i++){
let tab_s= tabs[i].style;
tab_s.removeProperty("border-left-color");
tab_s.removeProperty("border-right-color");
}
}
gBrowser.tabContainer.addEventListener("dragleave",gBrowser.tabContainer.clearDropIndicator, false);
gBrowser.tabContainer._onDragOver = function(event) {
event.preventDefault();
event.stopPropagation();
this.clearDropIndicator();
var newIndex = this._getDropIndex(event);
if (newIndex == null)
return;
let children = this.allTabs;
if (newIndex < children.length) {
children[newIndex].style.setProperty("border-left-color","red","important");
} else {
newIndex = gBrowser.tabContainer.lastVisibleTab();
if (newIndex >= 0)
children[newIndex].style.setProperty("border-right-color","red","important");
}
}
gBrowser.tabContainer.addEventListener("dragover", gBrowser.tabContainer._onDragOver, false);
gBrowser.tabContainer.onDrop = function(event) {
this.clearDropIndicator();
var dt = event.dataTransfer;
var draggedTab;
if (dt.mozTypesAt(0)[0] == TAB_DROP_TYPE) {
draggedTab = dt.mozGetDataAt(TAB_DROP_TYPE, 0);
if (!draggedTab) {
return;
}
}
this._tabDropIndicator.hidden = true
event.stopPropagation();
if (draggedTab && draggedTab.container == this) {
let newIndex = this._getDropIndex(event, false);
if (newIndex > draggedTab._tPos)
newIndex--;
gBrowser.moveTabTo(draggedTab, newIndex);
}
}
gBrowser.tabContainer.addEventListener("drop",gBrowser.tabContainer.onDrop, false);
gBrowser.tabContainer._getDragTargetTab = function(event, isLink) {
let tab = event.target;
while (tab && tab.localName != "tab") {
tab = tab.parentNode;
}
if (tab && isLink) {
let { width } = tab.getBoundingClientRect();
if (
event.screenX < tab.screenX + width * 0.25
event.screenX > tab.screenX + width * 0.75
) {
return null;
}
}
return tab;
}
gBrowser.tabContainer._getDropIndex = function(event, isLink) {
var tabs = this.allTabs;
var tab = this._getDragTargetTab(event, isLink);
if (!RTL_UI) {
for (let i = tab ? tab._tPos : 0; i < tabs.length; i++) {
if (
event.screenY <
tabs[i].screenY + tabs[i].getBoundingClientRect().height
) {
if (
event.screenX <
tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2
) {
return i;
}
if (
event.screenX >
tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2 &&
event.screenX <
tabs[i].screenX + tabs[i].getBoundingClientRect().width
) {
return i + 1;
}
}
}
} else {
for (let i = tab ? tab._tPos : 0; i < tabs.length; i++) {
if (
event.screenY <
tabs[i].screenY + tabs[i].getBoundingClientRect().height
) {
if (
event.screenX <
tabs[i].screenX + tabs[i].getBoundingClientRect().width &&
event.screenX >
tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2
) {
return i;
}
if (
event.screenX <
tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2
) {
return i + 1;
}
}
}
}
return tabs.length;
}
}
Alles anzeigen
Andreas, setzt du bitte mal den Code in einen Code-Kasten?
Fritz80 Entferne das Smiley und ersetze es durch zwei senkrechte Striche: "||"
Edit: Ich sehe gerade, die Software wandelt die zwei Striche in ein Smiley um.
Hallo
Es geht um das Script MultiRowTabLiteforFx.uc.js, kann man das Script so ändern das sich die Angehefteten Tabs nicht mit Bewegen.
Ganz verstehe ich die Frage nicht. Ich benutze auch mehrzeilige Tabreihen und zwar mit einer früheren Version, des von dir geposteten Scripts, aber unter keinem Anwendungsfall schaffe ich es, ein angeheftetes Tab 'zu bewegen'. Weder, wenn ich ein einzelnes angeheftetes Tab auswähle und verschieben will, noch bei mehreren ausgewählten Tabs. Das angeheftete Tab bleibt immer an seiner Position und bewegt sich keinen Pixel.
Oder meintest du, dass das angeheftete Tab auch beim Scrollen über mehrere Tabreihen immer links-oben im sichtbaren Bereich bleibt? Das wäre aber so nicht vorgesehen und wohl auch nicht wünschenswert.
Daher wäre eine genaue Beschreibung ( ideal wäre ein animiertes .gif ) von dem, was du 'bewegen' nennst, sehr hilfreich...
Die Angehefteten Tabs sollen immer sichtbar bleiben auch beim Scrollen der Tabs.
Ok, jetzt weiß ich, was du meinst. Natürlich ist durchaus möglich so ein Verhalten zu implementieren, es ist die Frage, ob der Ersteller des Skripts oder ein anderer "Sachkundiger' sich die Mühe machen will, dies auch zu tun, da es sicherlich nicht so einfach ist, wie bei einer Tabzeile. Ich persönlich brauche diese Funktionalität nicht, da ich z.b über [STRG + 1...8] schnell zu den ersten (angehefteten) Tabs springen kann. Außerdem kann ich über die Scrollleiste alle Tabs auch schnell in den sichtbaren Bereich bringen.
Die Skripte für mehrzeilige Tabs sind sowieso noch nicht so perfekt, wie das Standardverhalten mit einer Tabzeile. Bei mehrfach ausgewählten Tabs wird - zumindest bei meiner Version - nur immer der fokussierte Tab verschoben. Stört mich aber auch nicht weiter.
Schlimm wird es erst in der Version 71, da scheint ein größerer Umbau der Skripte anzustehen, da geht nämlich momentan gar nichts mehr in Bezug auf Mehrzeiligkeit.