diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl.cxx | 3 | ||||
| -rw-r--r-- | src/Fl_Window.cxx | 49 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/Fl.cxx b/src/Fl.cxx index 5f62480ef..89d4ad8e0 100644 --- a/src/Fl.cxx +++ b/src/Fl.cxx @@ -1292,6 +1292,9 @@ void Fl_Window::hide() { Fl_Window::~Fl_Window() { hide(); + if (xclass_) { + free(xclass_); + } } // FL_SHOW and FL_HIDE are called whenever the visibility of this widget diff --git a/src/Fl_Window.cxx b/src/Fl_Window.cxx index adc3fa094..0c641fe32 100644 --- a/src/Fl_Window.cxx +++ b/src/Fl_Window.cxx @@ -40,6 +40,8 @@ #include <FL/fl_draw.H> #endif +char *Fl_Window::default_xclass_ = 0L; + void Fl_Window::_Fl_Window() { type(FL_WINDOW); box(FL_FLAT_BOX); @@ -178,6 +180,53 @@ Fl_Window *Fl_Window::current() { return current_; } +/** Returns the default xclass */ +const char *Fl_Window::default_xclass() +{ + if (default_xclass_) { + return default_xclass_; + } else { + return "FLTK"; + } +} + +/** Sets the defaul xclass */ +void Fl_Window::default_xclass(const char *xc) +{ + if (default_xclass_) { + free(default_xclass_); + default_xclass_ = 0L; + } + if (xc) { + default_xclass_ = strdup(xc); + } +} + +/** Set the xclass for this window */ +void Fl_Window::xclass(const char *xc) +{ + if (xclass_) { + free(xclass_); + xclass_ = 0L; + } + if (xc) { + xclass_ = strdup(xc); + if (!default_xclass_) { + default_xclass(xc); + } + } +} + +/** Return the XClass for this window, or a default. */ +const char *Fl_Window::xclass() const +{ + if (xclass_) { + return xclass_; + } else { + return default_xclass(); + } +} + // // End of "$Id$". |
