Abdelrazak Younes <[EMAIL PROTECTED]> writes:

| Hello,
| 
| For each character key typed, two conversions occurs:
| 
| lyxfunc.C: 324
|       if (func.action == LFUN_SELF_INSERT) {
|               if (encoded_last_key != 0) {
|                       std::vector<char> tmp =
|                               ucs4_to_utf8(encoded_last_key);
|                       string const arg(tmp.begin(), tmp.end());
|                       dispatch(FuncRequest(LFUN_SELF_INSERT, arg,
|                                            FuncRequest::KEYBOARD));
| 
| and text3.C: 1104
|       std::vector<char> in(cmd.argument.begin(), cmd.argument.end());
|       std::vector<boost::uint32_t> const res = utf8_to_ucs4(in);
|       std::vector<boost::uint32_t>::const_iterator cit = res.begin();
|       std::vector<boost::uint32_t>::const_iterator end = res.end();
|       for (; cit != end; ++cit)
|               insertChar(bv->cursor(), *cit);
| 
| This back and forth conversion to utf8 is obviously extraneous and
| should be deleted. We have two solutions:
| 
| 1) use something else that FuncRequest::argument to store the
| characters to be inserted. I am thinking of a new member data_
| accessible through data(). Question is docstring or vector<char_type>?
| (As a side note, I really don't understand why we still have to make
| this choice up until now.)

I'd rather change the FuncRequest::argument type to docstring.

| 2) convert "argument" to docstring (or vector<char_type>, pfiou...).
| This would be the ideal solution but this would affect a _lot_ of code.

No way around it...
 
-- 
        Lgb

Reply via email to