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


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


to (untested)


    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


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


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