Am 09.03.2008 um 16:04 schrieb Abdelrazak Younes:

Stefan Schimanski wrote:
Am 09.03.2008 um 15:03 schrieb Abdelrazak Younes:
Stefan Schimanski wrote:
Hi!
Can anybody summarize the situation and issues to switch to InsetMathMbox?

This would be the solution for all text in math purpose. There are a number of bugs related to the fact that text in math are not real Text object.

Last time I tried, InsetMathMbox needed some work in order to be complete; essentially metrics and drawing code.

Having this in 1.6 would be a great step forward.
I am playing around with it. The main problem right now is that Text objects need a buffer object assigned, e.g. for Text::write. Some math macros use mbox insets, but they are buffer independent (= global). I just tried to create a dummy Buffer for those cases, but get some crashes now.

No, you should instead implement Inset::setBuffer() in the proper math inset (the one that contains the InsetMathMbox).

This buffer variable in every inset is a mess. I still don't like the idea at all. It changes the ownership of insets from MathAtom effectively to the buffer. The consequence is that we cannot have insets anymore independently from the Buffer, or at least we cannot use all of the functionality of an inset if it is not assigned to a buffer. And even worse, it is not defined anywhere which functionality might depend on the assigned buffer.

Spreading setBuffer calls around the LyX code is not elegant either. The compiler cannot tell us where we forgot to do it, or where an inset has a buffer variable, but to an old/different buffer. What does it buy us after all other than some "Cursor & cur" arguments?

I am trying to get the InsetMathMBox working and hit several problems with this change. The text inset depends on the Buffer variable unfortunately and the mathed insets do not have it set. The problem appears especially when mbox appears in math macros. Which Buffer do the global math macros belong to? What about cases like asArray/ asString? We need to set the buffer there as well, also in the parser in general.

A bit frustrated :-/
Stefan

Reply via email to