diff options
Diffstat (limited to 'src/querystring_gui.h')
-rw-r--r-- | src/querystring_gui.h | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/querystring_gui.h b/src/querystring_gui.h index 004501b31..40b0c8685 100644 --- a/src/querystring_gui.h +++ b/src/querystring_gui.h @@ -8,6 +8,9 @@ #include "textbuf_gui.h" #include "window_gui.h" +/** + * Data stored about a string that can be modified in the GUI + */ struct QueryString { StringID caption; Textbuf text; @@ -15,17 +18,39 @@ struct QueryString { CharSetFilter afilter; bool handled; + /** + * Make sure everything gets initialized properly. + */ + QueryString() : orig(NULL) + { + } + + /** + * Make sure everything gets freed. + */ + ~QueryString() + { + free((void*)this->orig); + } + void DrawEditBox(Window *w, int wid); void HandleEditBox(Window *w, int wid); int HandleEditBoxKey(Window *w, int wid, uint16 key, uint16 keycode, Window::EventState &state); }; struct QueryStringBaseWindow : public Window, public QueryString { - char edit_str_buf[64]; - char orig_str_buf[64]; + const size_t edit_str_size; + char *edit_str_buf; + char *orig_str_buf; + + QueryStringBaseWindow(size_t size, const WindowDesc *desc, WindowNumber window_number = 0) : Window(desc, window_number), edit_str_size(size) + { + this->edit_str_buf = CallocT<char>(size); + } - QueryStringBaseWindow(const WindowDesc *desc, WindowNumber window_number = 0) : Window(desc, window_number) + ~QueryStringBaseWindow() { + free(this->edit_str_buf); } void DrawEditBox(int wid); |