Shouldn't this snippet of LyX's output be changed:

-\begin_inset Greyedout
+\begin_inset Note Greyedout
 collapsed false

 \begin_layout Standard

 some important comment
 \end_layout

 \end_inset 

With the corresponding change in factory.C's readInset
-               } else if (tmptok == "Note"     || tmptok == "Comment"
-                               || tmptok == "Greyedout") {
+               } else if (tmptok == "Note") {

As it stands, InsetNote has no idea what its type is because 
InsetNoteParams::type is not set on read.

Furthermore, I've been triggering a crash with
        "dialog-show-new-inset note"
here:

void QNote::update_contents()
{
        QRadioButton * rb = 0;
        string type(controller().params().type);

        if (type == "Note")
                rb = dialog_->noteRB;
        else if (type == "Comment")
                rb = dialog_->commentRB;
        else if (type == "Greyedout")
                rb = dialog_->greyedoutRB;

        rb->setChecked(true);
}

because controller().params().type is empty and so rb is not set. I 
propose changing:
struct InsetNoteParams {
        std::string type;
};

to
struct InsetNoteParams {
        enum Type {
                Note,
                Comment,
                Greyedout
        };
        Type type;
};

as this seems much safer to me.


-- 
Angus

Reply via email to