From ffbe1b76b1d8ed8e25430f75fc8621858f0432be Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Tue, 16 Nov 2010 22:17:40 +0000 Subject: Fixed xclass support for Fl_Window (STR #2053) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7863 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl.cxx | 3 +++ src/Fl_Window.cxx | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) (limited to 'src') 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 #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$". -- cgit v1.2.3