Fossil SCM

Fix scrolling bug in FF and Chrome.

drh 2020-08-16 13:33 trunk merge
Commit 22f2d083d6f374ce2a0bdbbca1eeae2845ac3b4312ffc586ce39aecda1e76938
2 files changed +1 -11 +6 -23
+1 -11
--- src/default.css
+++ src/default.css
@@ -994,21 +994,11 @@
994994
flex-direction: column;
995995
border-width: 1px;
996996
border-style: outset;
997997
border-color: inherit;
998998
}
999
-.tab-container > .tabs > .tab-panel,
1000
-.tab-container > .tabs > fieldset.tab-wrapper {
1001
- align-self: stretch;
1002
- flex: 10 1 auto;
1003
- display: flex;
1004
- flex-direction: row;
1005
- border: 0;
1006
- padding: 0;
1007
- margin: 0;
1008
-}
1009
-.tab-container > .tabs > fieldset.tab-wrapper > .tab-panel{
999
+.tab-container > .tabs > .tab-panel {
10101000
align-self: stretch;
10111001
flex: 10 1 auto;
10121002
display: block;
10131003
border: 0;
10141004
padding: 0;
10151005
--- src/default.css
+++ src/default.css
@@ -994,21 +994,11 @@
994 flex-direction: column;
995 border-width: 1px;
996 border-style: outset;
997 border-color: inherit;
998 }
999 .tab-container > .tabs > .tab-panel,
1000 .tab-container > .tabs > fieldset.tab-wrapper {
1001 align-self: stretch;
1002 flex: 10 1 auto;
1003 display: flex;
1004 flex-direction: row;
1005 border: 0;
1006 padding: 0;
1007 margin: 0;
1008 }
1009 .tab-container > .tabs > fieldset.tab-wrapper > .tab-panel{
1010 align-self: stretch;
1011 flex: 10 1 auto;
1012 display: block;
1013 border: 0;
1014 padding: 0;
1015
--- src/default.css
+++ src/default.css
@@ -994,21 +994,11 @@
994 flex-direction: column;
995 border-width: 1px;
996 border-style: outset;
997 border-color: inherit;
998 }
999 .tab-container > .tabs > .tab-panel {
 
 
 
 
 
 
 
 
 
 
1000 align-self: stretch;
1001 flex: 10 1 auto;
1002 display: block;
1003 border: 0;
1004 padding: 0;
1005
--- src/fossil.tabs.js
+++ src/fossil.tabs.js
@@ -30,42 +30,28 @@
3030
tabAccessKeys: true
3131
};
3232
3333
/**
3434
Internal helper to normalize a method argument to a tab
35
- element. arg may be a tab DOM element or an index into
36
- tabMgr.e.tabs.childNodes. Returns the corresponding tab element.
35
+ element. arg may be a tab DOM element, a selector string, or an
36
+ index into tabMgr.e.tabs.childNodes. Returns the corresponding
37
+ tab element.
3738
*/
3839
const tabArg = function(arg,tabMgr){
3940
if('string'===typeof arg) arg = E(arg);
4041
else if(tabMgr && 'number'===typeof arg && arg>=0){
4142
arg = tabMgr.e.tabs.childNodes[arg];
4243
}
43
- if(arg){
44
- if('FIELDSET'===arg.tagName && arg.classList.contains('tab-wrapper')){
45
- arg = arg.firstElementChild;
46
- }
47
- }
4844
return arg;
4945
};
5046
5147
/**
5248
Sets sets the visibility of tab element e to on or off. e MUST be
53
- a TabManager tab element which has been wrapped in a
54
- FIELDSET.tab-wrapper parent element. We disable the hidden
55
- FIELDSET.tab-wrapper elements so that any access keys assigned
56
- to their children cannot be inadvertently triggered
49
+ a TabManager tab element.
5750
*/
5851
const setVisible = function(e,yes){
59
- const fsWrapper = e.parentElement/*FIELDSET wrapper*/;
60
- if(yes){
61
- D.removeClass(e, 'hidden');
62
- D.enable(fsWrapper);
63
- }else{
64
- D.addClass(e, 'hidden');
65
- D.disable(fsWrapper);
66
- }
52
+ D[yes ? 'removeClass' : 'addClass'](e, 'hidden');
6753
};
6854
6955
TabManager.prototype = {
7056
/**
7157
Initializes the tabs associated with the given tab container
@@ -164,13 +150,11 @@
164150
e.target.$manager.switchToTab(e.target.$tab);
165151
};
166152
}
167153
tab = tabArg(tab);
168154
tab.remove();
169
- const eFs = D.addClass(D.fieldset(), 'tab-wrapper');
170
- D.append(eFs, D.addClass(tab,'tab-panel'));
171
- D.append(this.e.tabs, eFs);
155
+ D.append(this.e.tabs, D.addClass(tab,'tab-panel'));
172156
const tabCount = this.e.tabBar.childNodes.length+1;
173157
const lbl = tab.dataset.tabLabel || 'Tab #'+tabCount;
174158
const btn = D.addClass(D.append(D.span(), lbl), 'tab-button');
175159
D.append(this.e.tabBar,btn);
176160
btn.$manager = this;
@@ -238,11 +222,10 @@
238222
this._dispatchEvent('before-switch-from', this._currentTab);
239223
}
240224
delete this._currentTab;
241225
this.e.tabs.childNodes.forEach((e,ndx)=>{
242226
const btn = this.e.tabBar.childNodes[ndx];
243
- e = e.firstElementChild /* b/c arguments[0] is a FIELDSET wrapper */;
244227
if(e===tab){
245228
if(D.hasClass(e,'selected')){
246229
return;
247230
}
248231
self._dispatchEvent('before-switch-to',tab);
249232
--- src/fossil.tabs.js
+++ src/fossil.tabs.js
@@ -30,42 +30,28 @@
30 tabAccessKeys: true
31 };
32
33 /**
34 Internal helper to normalize a method argument to a tab
35 element. arg may be a tab DOM element or an index into
36 tabMgr.e.tabs.childNodes. Returns the corresponding tab element.
 
37 */
38 const tabArg = function(arg,tabMgr){
39 if('string'===typeof arg) arg = E(arg);
40 else if(tabMgr && 'number'===typeof arg && arg>=0){
41 arg = tabMgr.e.tabs.childNodes[arg];
42 }
43 if(arg){
44 if('FIELDSET'===arg.tagName && arg.classList.contains('tab-wrapper')){
45 arg = arg.firstElementChild;
46 }
47 }
48 return arg;
49 };
50
51 /**
52 Sets sets the visibility of tab element e to on or off. e MUST be
53 a TabManager tab element which has been wrapped in a
54 FIELDSET.tab-wrapper parent element. We disable the hidden
55 FIELDSET.tab-wrapper elements so that any access keys assigned
56 to their children cannot be inadvertently triggered
57 */
58 const setVisible = function(e,yes){
59 const fsWrapper = e.parentElement/*FIELDSET wrapper*/;
60 if(yes){
61 D.removeClass(e, 'hidden');
62 D.enable(fsWrapper);
63 }else{
64 D.addClass(e, 'hidden');
65 D.disable(fsWrapper);
66 }
67 };
68
69 TabManager.prototype = {
70 /**
71 Initializes the tabs associated with the given tab container
@@ -164,13 +150,11 @@
164 e.target.$manager.switchToTab(e.target.$tab);
165 };
166 }
167 tab = tabArg(tab);
168 tab.remove();
169 const eFs = D.addClass(D.fieldset(), 'tab-wrapper');
170 D.append(eFs, D.addClass(tab,'tab-panel'));
171 D.append(this.e.tabs, eFs);
172 const tabCount = this.e.tabBar.childNodes.length+1;
173 const lbl = tab.dataset.tabLabel || 'Tab #'+tabCount;
174 const btn = D.addClass(D.append(D.span(), lbl), 'tab-button');
175 D.append(this.e.tabBar,btn);
176 btn.$manager = this;
@@ -238,11 +222,10 @@
238 this._dispatchEvent('before-switch-from', this._currentTab);
239 }
240 delete this._currentTab;
241 this.e.tabs.childNodes.forEach((e,ndx)=>{
242 const btn = this.e.tabBar.childNodes[ndx];
243 e = e.firstElementChild /* b/c arguments[0] is a FIELDSET wrapper */;
244 if(e===tab){
245 if(D.hasClass(e,'selected')){
246 return;
247 }
248 self._dispatchEvent('before-switch-to',tab);
249
--- src/fossil.tabs.js
+++ src/fossil.tabs.js
@@ -30,42 +30,28 @@
30 tabAccessKeys: true
31 };
32
33 /**
34 Internal helper to normalize a method argument to a tab
35 element. arg may be a tab DOM element, a selector string, or an
36 index into tabMgr.e.tabs.childNodes. Returns the corresponding
37 tab element.
38 */
39 const tabArg = function(arg,tabMgr){
40 if('string'===typeof arg) arg = E(arg);
41 else if(tabMgr && 'number'===typeof arg && arg>=0){
42 arg = tabMgr.e.tabs.childNodes[arg];
43 }
 
 
 
 
 
44 return arg;
45 };
46
47 /**
48 Sets sets the visibility of tab element e to on or off. e MUST be
49 a TabManager tab element.
 
 
 
50 */
51 const setVisible = function(e,yes){
52 D[yes ? 'removeClass' : 'addClass'](e, 'hidden');
 
 
 
 
 
 
 
53 };
54
55 TabManager.prototype = {
56 /**
57 Initializes the tabs associated with the given tab container
@@ -164,13 +150,11 @@
150 e.target.$manager.switchToTab(e.target.$tab);
151 };
152 }
153 tab = tabArg(tab);
154 tab.remove();
155 D.append(this.e.tabs, D.addClass(tab,'tab-panel'));
 
 
156 const tabCount = this.e.tabBar.childNodes.length+1;
157 const lbl = tab.dataset.tabLabel || 'Tab #'+tabCount;
158 const btn = D.addClass(D.append(D.span(), lbl), 'tab-button');
159 D.append(this.e.tabBar,btn);
160 btn.$manager = this;
@@ -238,11 +222,10 @@
222 this._dispatchEvent('before-switch-from', this._currentTab);
223 }
224 delete this._currentTab;
225 this.e.tabs.childNodes.forEach((e,ndx)=>{
226 const btn = this.e.tabBar.childNodes[ndx];
 
227 if(e===tab){
228 if(D.hasClass(e,'selected')){
229 return;
230 }
231 self._dispatchEvent('before-switch-to',tab);
232

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button