paragui-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [paragui-users] RICHEDIT


From: John Rainey
Subject: RE: [paragui-users] RICHEDIT
Date: Wed, 4 Sep 2002 12:57:17 -0400

Yes it works! The add text function is still resetting the text however by
calling settext with the new my_text value (my_text +" ") this causes a
complete reparsing and refilling of the richtext maps. It seems inefficient.
Perhaps the richedit needs a Addtext function for appending text that
doesn't require a complete reparsing?
Any thoughts?

-----Original Message-----
From:   address@hidden
[mailto:address@hidden On Behalf Of Eric
Ross
Sent:   Wednesday, September 04, 2002 11:57 AM
To:     address@hidden
Subject:        RE: [paragui-users] RICHEDIT

On Wed, 4 Sep 2002, John Rainey wrote:

> Is this issue being addressed? I'd would like to submit a series of
changes,
> include the fix to Set Text and a added xml property for the richedit tag
> to read in text from a file but would like to know

If you have a patche, just post it here so we can review your changes.
If it look ok, im sure it will be included.

> [snip]
>
> This is do to setting the std:string my_text to the const char* text
> parameter
> when text points to the buffer in the my_text std:string,in the
> PG_Widget::SetText function.
> There is no guarantee when setting a std:string that it will not
deallocate
> it's current
> buffer and make a new one. That is indeed what happens. consequently the
new
> buffer
> is blank which is of course what the const char* text points to.
>
> I fixed the problem by creating a tempory std:string to receive the text
> value, then set my_text to that temporary string.
>
> void PG_Widget::SetText(const char* text) {
>
>       //added by jpr
>       // to fix bug if text points to buffer of my_text
>       std::string temptext=text;
>       my_internaldata->widthText = TXT_HEIGHT_UNDEF;
>       my_internaldata->heightText = TXT_HEIGHT_UNDEF;
>
>       if(text == NULL) {
>               my_text = "";
>               return;
>       }
>       //added by jpr
>       my_text = temptext;
>       Update();
> }

Your're right. This is curious. There's some SetText(GetText()) in the
pgwidget.cpp file. This produces that the my_text= line became
"my_text=my_text.c_str()". I'd like to fix it just changing the
"my_text=text" to "my_text=string(text)". Is this OK for you ? and does it
work ?

> [snip]
>
> object_end:
>               // jpr why is the text being reset?????
>               XMLParser->ParentObject->AddText(" ", true);
>       }

In this line the text is not reset. It's adding a white space (why? i dont
know), but i dont think it's so important. More important is that in
PG_Widget::AddText, there's a "my_text += text". The problem is that in
this function, there's a call to "SetText(GetText())" and it suffers the
problem you discovered.

Can you try the "string(text)" thing and tell us if it works ? This way i
can include it in the cvs.

--



_______________________________________________
paragui-users mailing list
address@hidden
http://mail.freesoftware.fsf.org/mailman/listinfo/paragui-users





reply via email to

[Prev in Thread] Current Thread [Next in Thread]