Fossil SCM

An experiment in improving the /dir column flow. (Not ready to merge.)

stephan 2020-09-20 07:28 trunk
Commit e5121a4934b4f938a47a2e9207bf602349a38ab1365a986dd9d97871b2e4a244
2 files changed +7 -6 +12 -11
+7 -6
--- src/browse.c
+++ src/browse.c
@@ -306,35 +306,36 @@
306306
}
307307
308308
/* Generate a multi-column table listing the contents of zD[]
309309
** directory.
310310
*/
311
- mxLen = db_int(12, "SELECT max(length(x)) FROM localfiles /*scan*/");
311
+ mxLen = db_int(12, "SELECT max(length(x)) * 0.85 "
312
+ "FROM localfiles /*scan*/");
312313
if( mxLen<12 ) mxLen = 12;
313314
mxLen += (mxLen+9)/10;
314315
db_prepare(&q, "SELECT x, u FROM localfiles ORDER BY x /*scan*/");
315
- @ <div class="columns files" style="columns: %d(mxLen)ex auto">
316
- @ <ul class="browser">
316
+ @ <div class="columns files">
317
+ @ <div class="browser" style="columns: %d(mxLen)ex auto">
317318
while( db_step(&q)==SQLITE_ROW ){
318319
const char *zFN;
319320
zFN = db_column_text(&q, 0);
320321
if( zFN[0]=='/' ){
321322
zFN++;
322
- @ <li class="dir">%z(href("%s%T",zSubdirLink,zFN))%h(zFN)</a></li>
323
+ @ <span class="dir">%z(href("%s%T",zSubdirLink,zFN))%h(zFN)</a></span>
323324
}else{
324325
const char *zLink;
325326
if( zCI ){
326327
zLink = href("%R/file?name=%T%T&ci=%T",zPrefix,zFN,zCI);
327328
}else{
328329
zLink = href("%R/finfo?name=%T%T",zPrefix,zFN);
329330
}
330
- @ <li class="%z(fileext_class(zFN))">%z(zLink)%h(zFN)</a></li>
331
+ @ <span class="%z(fileext_class(zFN))">%z(zLink)%h(zFN)</a></span>
331332
}
332333
}
333334
db_finalize(&q);
334335
manifest_destroy(pM);
335
- @ </ul></div>
336
+ @ </div></div>
336337
337338
/* If the "noreadme" query parameter is present, do not try to
338339
** show the content of the README file.
339340
*/
340341
if( P("noreadme")!=0 ){
341342
--- src/browse.c
+++ src/browse.c
@@ -306,35 +306,36 @@
306 }
307
308 /* Generate a multi-column table listing the contents of zD[]
309 ** directory.
310 */
311 mxLen = db_int(12, "SELECT max(length(x)) FROM localfiles /*scan*/");
 
312 if( mxLen<12 ) mxLen = 12;
313 mxLen += (mxLen+9)/10;
314 db_prepare(&q, "SELECT x, u FROM localfiles ORDER BY x /*scan*/");
315 @ <div class="columns files" style="columns: %d(mxLen)ex auto">
316 @ <ul class="browser">
317 while( db_step(&q)==SQLITE_ROW ){
318 const char *zFN;
319 zFN = db_column_text(&q, 0);
320 if( zFN[0]=='/' ){
321 zFN++;
322 @ <li class="dir">%z(href("%s%T",zSubdirLink,zFN))%h(zFN)</a></li>
323 }else{
324 const char *zLink;
325 if( zCI ){
326 zLink = href("%R/file?name=%T%T&ci=%T",zPrefix,zFN,zCI);
327 }else{
328 zLink = href("%R/finfo?name=%T%T",zPrefix,zFN);
329 }
330 @ <li class="%z(fileext_class(zFN))">%z(zLink)%h(zFN)</a></li>
331 }
332 }
333 db_finalize(&q);
334 manifest_destroy(pM);
335 @ </ul></div>
336
337 /* If the "noreadme" query parameter is present, do not try to
338 ** show the content of the README file.
339 */
340 if( P("noreadme")!=0 ){
341
--- src/browse.c
+++ src/browse.c
@@ -306,35 +306,36 @@
306 }
307
308 /* Generate a multi-column table listing the contents of zD[]
309 ** directory.
310 */
311 mxLen = db_int(12, "SELECT max(length(x)) * 0.85 "
312 "FROM localfiles /*scan*/");
313 if( mxLen<12 ) mxLen = 12;
314 mxLen += (mxLen+9)/10;
315 db_prepare(&q, "SELECT x, u FROM localfiles ORDER BY x /*scan*/");
316 @ <div class="columns files">
317 @ <div class="browser" style="columns: %d(mxLen)ex auto">
318 while( db_step(&q)==SQLITE_ROW ){
319 const char *zFN;
320 zFN = db_column_text(&q, 0);
321 if( zFN[0]=='/' ){
322 zFN++;
323 @ <span class="dir">%z(href("%s%T",zSubdirLink,zFN))%h(zFN)</a></span>
324 }else{
325 const char *zLink;
326 if( zCI ){
327 zLink = href("%R/file?name=%T%T&ci=%T",zPrefix,zFN,zCI);
328 }else{
329 zLink = href("%R/finfo?name=%T%T",zPrefix,zFN);
330 }
331 @ <span class="%z(fileext_class(zFN))">%z(zLink)%h(zFN)</a></span>
332 }
333 }
334 db_finalize(&q);
335 manifest_destroy(pM);
336 @ </div></div>
337
338 /* If the "noreadme" query parameter is present, do not try to
339 ** show the content of the README file.
340 */
341 if( P("noreadme")!=0 ){
342
+12 -11
--- src/default.css
+++ src/default.css
@@ -225,10 +225,13 @@
225225
}
226226
div.columns {
227227
padding: 0 2em 0 2em;
228228
max-width: 1000px;
229229
}
230
+div.columns.files {
231
+ max-width: unset;
232
+}
230233
div.columns > ul {
231234
margin: 0;
232235
padding: 0 0 0 1em;
233236
}
234237
div.columns > ul li:first-child {
@@ -293,33 +296,31 @@
293296
EhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14GqFX\
294297
ImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==");
295298
background-position: center left;
296299
background-repeat: no-repeat;
297300
}
298
-ul.browser {
299
- list-style-type: none;
301
+div.browser {
300302
padding: 10px;
301303
margin: 0px;
302304
white-space: nowrap;
303305
}
304
-ul.browser li.file {
305
- background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP\/\/\/\
306
-yEhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14Gq\
307
-FXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==");
306
+div.browser > span {
307
+ display: block;
308308
background-repeat: no-repeat;
309309
background-position: 0px center;
310310
padding-left: 20px;
311311
padding-top: 2px;
312312
}
313
-ul.browser li.dir {
313
+div.browser > span.file {
314
+ background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP\/\/\/\
315
+yEhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14Gq\
316
+FXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==");
317
+}
318
+div.browser span.dir {
314319
background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP/WVCIiI\
315320
v\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAInlI9pwa3XYniCgQtkrAFfLXkiFo1jaXpo+\
316321
jUs6b5Z/K4siDu5RPUFADs=");
317
- background-repeat: no-repeat;
318
- background-position: 0px center;
319
- padding-left: 20px;
320
- padding-top: 2px;
321322
}
322323
div.filetreeline {
323324
display: table;
324325
width: 100%;
325326
white-space: nowrap;
326327
--- src/default.css
+++ src/default.css
@@ -225,10 +225,13 @@
225 }
226 div.columns {
227 padding: 0 2em 0 2em;
228 max-width: 1000px;
229 }
 
 
 
230 div.columns > ul {
231 margin: 0;
232 padding: 0 0 0 1em;
233 }
234 div.columns > ul li:first-child {
@@ -293,33 +296,31 @@
293 EhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14GqFX\
294 ImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==");
295 background-position: center left;
296 background-repeat: no-repeat;
297 }
298 ul.browser {
299 list-style-type: none;
300 padding: 10px;
301 margin: 0px;
302 white-space: nowrap;
303 }
304 ul.browser li.file {
305 background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP\/\/\/\
306 yEhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14Gq\
307 FXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==");
308 background-repeat: no-repeat;
309 background-position: 0px center;
310 padding-left: 20px;
311 padding-top: 2px;
312 }
313 ul.browser li.dir {
 
 
 
 
 
314 background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP/WVCIiI\
315 v\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAInlI9pwa3XYniCgQtkrAFfLXkiFo1jaXpo+\
316 jUs6b5Z/K4siDu5RPUFADs=");
317 background-repeat: no-repeat;
318 background-position: 0px center;
319 padding-left: 20px;
320 padding-top: 2px;
321 }
322 div.filetreeline {
323 display: table;
324 width: 100%;
325 white-space: nowrap;
326
--- src/default.css
+++ src/default.css
@@ -225,10 +225,13 @@
225 }
226 div.columns {
227 padding: 0 2em 0 2em;
228 max-width: 1000px;
229 }
230 div.columns.files {
231 max-width: unset;
232 }
233 div.columns > ul {
234 margin: 0;
235 padding: 0 0 0 1em;
236 }
237 div.columns > ul li:first-child {
@@ -293,33 +296,31 @@
296 EhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14GqFX\
297 ImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==");
298 background-position: center left;
299 background-repeat: no-repeat;
300 }
301 div.browser {
 
302 padding: 10px;
303 margin: 0px;
304 white-space: nowrap;
305 }
306 div.browser > span {
307 display: block;
 
 
308 background-repeat: no-repeat;
309 background-position: 0px center;
310 padding-left: 20px;
311 padding-top: 2px;
312 }
313 div.browser > span.file {
314 background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP\/\/\/\
315 yEhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14Gq\
316 FXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==");
317 }
318 div.browser span.dir {
319 background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP/WVCIiI\
320 v\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAInlI9pwa3XYniCgQtkrAFfLXkiFo1jaXpo+\
321 jUs6b5Z/K4siDu5RPUFADs=");
 
 
 
 
322 }
323 div.filetreeline {
324 display: table;
325 width: 100%;
326 white-space: nowrap;
327

Keyboard Shortcuts

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