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