Fluid: Fix variable naming and a memory leak

This commit is contained in:
Matthias Melcher 2022-11-23 15:17:54 +01:00
parent 410e57d2db
commit 817a97bb65
6 changed files with 45 additions and 34 deletions

View File

@ -295,16 +295,24 @@ void CodeViewer::draw()
Fl::set_color(FL_SELECTION_COLOR, c); Fl::set_color(FL_SELECTION_COLOR, c);
} }
// ---- DesignViewer implementation // ---- TextViewer implementation
/** /**
Create a DesignViewer widget. Create a TextViewer widget.
\param[in] X, Y, W, H position and size of the widget \param[in] X, Y, W, H position and size of the widget
\param[in] L optional label \param[in] L optional label
*/ */
DesignViewer::DesignViewer(int X, int Y, int W, int H, const char *L) TextViewer::TextViewer(int X, int Y, int W, int H, const char *L)
: Fl_Text_Display(X, Y, W, H, L) : Fl_Text_Display(X, Y, W, H, L)
{ {
buffer(new Fl_Text_Buffer); buffer(new Fl_Text_Buffer);
} }
/**
Avoid memory leaks.
*/
TextViewer::~TextViewer() {
Fl_Text_Buffer *buf = mBuffer;
buffer(0);
delete buf;
}

View File

@ -68,9 +68,10 @@ protected:
// ---- DesignViewer declaration // ---- DesignViewer declaration
class DesignViewer : public Fl_Text_Display { class TextViewer : public Fl_Text_Display {
public: public:
DesignViewer(int X, int Y, int W, int H, const char *L=0); TextViewer(int X, int Y, int W, int H, const char *L=0);
~TextViewer();
int top_line() { return get_absolute_top_line_number(); } int top_line() { return get_absolute_top_line_number(); }
}; };

View File

@ -1794,11 +1794,11 @@ void update_sourceview_cb(Fl_Button*, void*)
strlcat(sv_design_filename, "source_view_tmp.fl", FL_PATH_MAX); strlcat(sv_design_filename, "source_view_tmp.fl", FL_PATH_MAX);
} }
if (sv_design->visible_r()) { if (sv_project->visible_r()) {
write_file(sv_design_filename); write_file(sv_design_filename);
int top = sv_design->top_line(); int top = sv_project->top_line();
sv_design->buffer()->loadfile(sv_design_filename); sv_project->buffer()->loadfile(sv_design_filename);
sv_design->scroll(top, 0); sv_project->scroll(top, 0);
} else if (sv_strings->visible_r()) { } else if (sv_strings->visible_r()) {
static const char *exts[] = { ".txt", ".po", ".msg" }; static const char *exts[] = { ".txt", ".po", ".msg" };
char fn[FL_PATH_MAX]; char fn[FL_PATH_MAX];
@ -2021,6 +2021,8 @@ int main(int argc,char **argv) {
#endif // _WIN32 #endif // _WIN32
undo_clear(); undo_clear();
if (g_shell_command)
::free(g_shell_command);
return (0); return (0);
} }

View File

@ -1484,9 +1484,9 @@ CodeViewer *sv_source=(CodeViewer *)0;
CodeViewer *sv_header=(CodeViewer *)0; CodeViewer *sv_header=(CodeViewer *)0;
DesignViewer *sv_strings=(DesignViewer *)0; TextViewer *sv_strings=(TextViewer *)0;
DesignViewer *sv_design=(DesignViewer *)0; TextViewer *sv_project=(TextViewer *)0;
Fl_Light_Button *sv_autorefresh=(Fl_Light_Button *)0; Fl_Light_Button *sv_autorefresh=(Fl_Light_Button *)0;
@ -1545,7 +1545,7 @@ Fl_Double_Window* make_sourceview() {
{ Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Strings"); { Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Strings");
o->labelsize(13); o->labelsize(13);
o->hide(); o->hide();
{ DesignViewer* o = sv_strings = new DesignViewer(20, 50, 480, 390); { TextViewer* o = sv_strings = new TextViewer(20, 50, 480, 390);
sv_strings->box(FL_DOWN_FRAME); sv_strings->box(FL_DOWN_FRAME);
sv_strings->color(FL_BACKGROUND2_COLOR); sv_strings->color(FL_BACKGROUND2_COLOR);
sv_strings->selection_color(FL_SELECTION_COLOR); sv_strings->selection_color(FL_SELECTION_COLOR);
@ -1560,28 +1560,28 @@ Fl_Double_Window* make_sourceview() {
Fl_Group::current()->resizable(sv_strings); Fl_Group::current()->resizable(sv_strings);
o->linenumber_width(60); o->linenumber_width(60);
o->linenumber_size(o->Fl_Text_Display::textsize()); o->linenumber_size(o->Fl_Text_Display::textsize());
} // DesignViewer* sv_strings } // TextViewer* sv_strings
o->end(); o->end();
} // Fl_Group* o } // Fl_Group* o
{ Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Design"); { Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Project");
o->labelsize(13); o->labelsize(13);
o->hide(); o->hide();
{ DesignViewer* o = sv_design = new DesignViewer(20, 50, 480, 390); { TextViewer* o = sv_project = new TextViewer(20, 50, 480, 390);
sv_design->box(FL_DOWN_FRAME); sv_project->box(FL_DOWN_FRAME);
sv_design->color(FL_BACKGROUND2_COLOR); sv_project->color(FL_BACKGROUND2_COLOR);
sv_design->selection_color(FL_SELECTION_COLOR); sv_project->selection_color(FL_SELECTION_COLOR);
sv_design->labeltype(FL_NORMAL_LABEL); sv_project->labeltype(FL_NORMAL_LABEL);
sv_design->labelfont(0); sv_project->labelfont(0);
sv_design->labelsize(14); sv_project->labelsize(14);
sv_design->labelcolor(FL_FOREGROUND_COLOR); sv_project->labelcolor(FL_FOREGROUND_COLOR);
sv_design->textfont(4); sv_project->textfont(4);
sv_design->textsize(11); sv_project->textsize(11);
sv_design->align(Fl_Align(FL_ALIGN_TOP)); sv_project->align(Fl_Align(FL_ALIGN_TOP));
sv_design->when(FL_WHEN_RELEASE); sv_project->when(FL_WHEN_RELEASE);
Fl_Group::current()->resizable(sv_design); Fl_Group::current()->resizable(sv_project);
o->linenumber_width(60); o->linenumber_width(60);
o->linenumber_size(o->Fl_Text_Display::textsize()); o->linenumber_size(o->Fl_Text_Display::textsize());
} // DesignViewer* sv_design } // TextViewer* sv_project
o->end(); o->end();
} // Fl_Group* o } // Fl_Group* o
sv_tab->end(); sv_tab->end();

View File

@ -1017,18 +1017,18 @@ Function {make_sourceview()} {open
xywh {20 50 480 390} textfont 4 textsize 11 resizable xywh {20 50 480 390} textfont 4 textsize 11 resizable
code1 {o->linenumber_width(60);} code1 {o->linenumber_width(60);}
code2 {o->linenumber_size(o->Fl_Text_Display::textsize());} code2 {o->linenumber_size(o->Fl_Text_Display::textsize());}
class DesignViewer class TextViewer
} }
} }
Fl_Group {} { Fl_Group {} {
label Design open label Project open
xywh {10 35 500 415} labelsize 13 hide xywh {10 35 500 415} labelsize 13 hide
} { } {
Fl_Text_Display sv_design { Fl_Text_Display sv_project {
xywh {20 50 480 390} textfont 4 textsize 11 resizable xywh {20 50 480 390} textfont 4 textsize 11 resizable
code1 {o->linenumber_width(60);} code1 {o->linenumber_width(60);}
code2 {o->linenumber_size(o->Fl_Text_Display::textsize());} code2 {o->linenumber_size(o->Fl_Text_Display::textsize());}
class DesignViewer class TextViewer
} }
} }
} }

View File

@ -114,8 +114,8 @@ extern void update_sourceview_position_cb(Fl_Tabs*, void*);
extern Fl_Tabs *sv_tab; extern Fl_Tabs *sv_tab;
extern CodeViewer *sv_source; extern CodeViewer *sv_source;
extern CodeViewer *sv_header; extern CodeViewer *sv_header;
extern DesignViewer *sv_strings; extern TextViewer *sv_strings;
extern DesignViewer *sv_design; extern TextViewer *sv_project;
extern void update_sourceview_cb(Fl_Button*, void*); extern void update_sourceview_cb(Fl_Button*, void*);
extern Fl_Light_Button *sv_autorefresh; extern Fl_Light_Button *sv_autorefresh;
extern Fl_Light_Button *sv_autoposition; extern Fl_Light_Button *sv_autoposition;