Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Contributions to C::B => Topic started by: gd_on on January 28, 2019, 04:33:21 pm

Title: Small error in projectmanagerui
Post by: gd_on on January 28, 2019, 04:33:21 pm
When an opened project is modified outside C::B a warning message is displayed. But the text displayed is only "Project", no name, ...
This is done at line 2700 in projectmanagerui.cpp. If I replace prj->GetFilename().c_str() by prj->GetTitle().wx_str(), the message is better, giving now the correct name. Nevertheless, it's not enough because the message has 2 lines (the second one add information for the action to be done), and only one is displayed. I don't know where to modify this !

gd_on
Title: Re: Small error in projectmanagerui
Post by: Miguel Gimenez on January 28, 2019, 05:27:37 pm
The dialog uses a wxStaticLabel, but this control does not recognize LF as a line breaker. It can be forced to wrap when a given width is exceded; to get this you must call the Wrap method of the control.

You can test modifying the code in confirmreplacedlg.cpp:38 from

Code
    XRCCTRL(*this, "lblMessage", wxStaticText)->SetLabel(label);
    this->SetEscapeId(XRCID("btnCancel"));

to (untested)

Code
    XRCCTRL(*this, "lblMessage", wxStaticText)->SetLabel(label);
    XRCCTRL(*this, "lblMessage", wxStaticText)->Wrap((GetWidth()*9)/10);
    this->SetEscapeId(XRCID("btnCancel"));
Title: Re: Small error in projectmanagerui
Post by: gd_on on January 28, 2019, 07:09:28 pm
Tested but it does not work.
First, the GetWidth is not seen (declared out of the scope). Compiler suggests to use GetMinWidth.
I tried like that, but even with a full rebuild (because I think it affects sdk), I see only the first line.
I have also tried to delete the \n in the string, but the line is now truncated and the end of the string is missing. :(

gd_on
Title: Re: Small error in projectmanagerui
Post by: Miguel Gimenez on January 28, 2019, 07:16:49 pm
Sorry. The width value should be get using

Code
int Width, Height;
GetClientSize(&Width, &Height);

May be the sizer doesn't let the label grow vertically.