Changeset 5496 in subversion
- Timestamp:
- Nov 27, 2011 10:11:20 AM (18 months ago)
- Location:
- trunk/roundcubemail
- Files:
-
- 2 edited
-
CHANGELOG (modified) (1 diff)
-
skins/default/functions.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/roundcubemail/CHANGELOG
r5495 r5496 2 2 =========================== 3 3 4 - Fix fit_string_to_size() renders browser and ui unresponsive (#1488207) 4 5 - Fix handling of invalid characters in request (#1488124) 5 6 - Fix merging some configuration options in update.sh script (#1485864) -
trunk/roundcubemail/skins/default/functions.js
r5493 r5496 571 571 rcmail.addEventListener('responseaftercheck-recent', rcube_render_mailboxlist); 572 572 rcmail.addEventListener('aftercollapse-folder', rcube_render_mailboxlist); 573 rcube_render_mailboxlist();574 573 } 575 574 … … 593 592 function rcube_render_mailboxlist() 594 593 { 595 if (bw.ie6) // doesn't work well on IE6 594 var list = $('#mailboxlist > li a, #mailboxlist ul:visible > li a'); 595 596 // it's too slow with really big number of folders, especially on IE 597 if (list.length > 500 * (bw.ie ? 0.2 : 1)) 596 598 return; 597 599 598 $('#mailboxlist > li a, #mailboxlist ul:visible > li a').each(function(){ 599 var elem = $(this); 600 var text = elem.data('text'); 600 list.each(function(){ 601 var elem = $(this), 602 text = elem.data('text'); 603 601 604 if (!text) { 602 605 text = elem.text().replace(/\s+\(.+$/, ''); … … 616 619 function fit_string_to_size(str, elem, len) 617 620 { 618 var result = str; 619 var ellip = '...'; 620 var span = $('<b>').css({ visibility:'hidden', padding:'0px' }).appendTo(elem).get(0); 621 622 // on first run, check if string fits into the length already. 623 span.innerHTML = result; 624 if (span.offsetWidth > len) { 625 var cut = Math.max(1, Math.floor(str.length * ((span.offsetWidth - len) / span.offsetWidth) / 2)), 626 mid = Math.floor(str.length / 2); 627 var offLeft = mid, offRight = mid; 628 while (true) { 629 offLeft = mid - cut; 630 offRight = mid + cut; 631 span.innerHTML = str.substring(0,offLeft) + ellip + str.substring(offRight); 632 633 // break loop if string fits size 634 if (span.offsetWidth <= len || offLeft < 3) 635 break; 636 637 cut++; 638 } 639 640 // build resulting string 641 result = str.substring(0,offLeft) + ellip + str.substring(offRight); 642 } 643 644 span.parentNode.removeChild(span); 645 return result; 621 var w, span, result = str, ellip = '...'; 622 623 if (!rcmail.env.tmp_span) { 624 // it should be appended to elem to use the same css style 625 // but for performance reasons we'll append it to body (once) 626 span = $('<b>').css({visibility: 'hidden', padding: '0px'}) 627 .appendTo($('body', document)).get(0); 628 rcmail.env.tmp_span = span; 629 } 630 else { 631 span = rcmail.env.tmp_span; 632 } 633 span.innerHTML = result; 634 635 // on first run, check if string fits into the length already. 636 w = span.offsetWidth; 637 if (w > len) { 638 var cut = Math.max(1, Math.floor(str.length * ((w - len) / w) / 2)), 639 mid = Math.floor(str.length / 2), 640 offLeft = mid, 641 offRight = mid; 642 643 while (true) { 644 offLeft = mid - cut; 645 offRight = mid + cut; 646 span.innerHTML = str.substring(0,offLeft) + ellip + str.substring(offRight); 647 648 // break loop if string fits size 649 if (offLeft < 3 || span.offsetWidth) 650 break; 651 652 cut++; 653 } 654 655 // build resulting string 656 result = str.substring(0,offLeft) + ellip + str.substring(offRight); 657 } 658 659 return result; 646 660 } 647 661
Note: See TracChangeset
for help on using the changeset viewer.
