[Aptitude-svn-commit] r3436 - in branches/aptitude-0.3/aptitude: . src/vscreen
Daniel Burrows
dburrows@costa.debian.org
Sat, 25 Jun 2005 21:12:32 +0000
Author: dburrows
Date: Sat Jun 25 21:12:30 2005
New Revision: 3436
Modified:
branches/aptitude-0.3/aptitude/ChangeLog
branches/aptitude-0.3/aptitude/src/vscreen/fragment.cc
Log:
Rewrite clipboxes for wide characters.
Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog (original)
+++ branches/aptitude-0.3/aptitude/ChangeLog Sat Jun 25 21:12:30 2005
@@ -2,6 +2,10 @@
* src/vscreen/fragment.cc:
+ Rewrite the clipbox for wide characters.
+
+ * src/vscreen/fragment.cc:
+
Fix the fill algorithm to compile, and rewrite the hard-wrapping
algorithm to handle wide characters.
Modified: branches/aptitude-0.3/aptitude/src/vscreen/fragment.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/vscreen/fragment.cc (original)
+++ branches/aptitude-0.3/aptitude/src/vscreen/fragment.cc Sat Jun 25 21:12:30 2005
@@ -824,11 +824,19 @@
for(fragment_contents::const_iterator i=lines.begin(); i!=lines.end(); ++i)
{
- if(i->size()<=firstw)
- rval.push_back(*i);
- else
- rval.push_back(fragment_line(*i, 0, firstw));
+ size_t chars=0;
+ int width;
+ while(width<(signed) firstw)
+ {
+ width+=wcwidth((*i)[chars].ch);
+ ++chars;
+ }
+
+ if(width>(signed) firstw && chars>1)
+ --chars;
+
+ rval.push_back(fragment_line(*i, 0, chars));
firstw=restw;
}