diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2010-11-16 22:17:40 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2010-11-16 22:17:40 +0000 |
| commit | ffbe1b76b1d8ed8e25430f75fc8621858f0432be (patch) | |
| tree | c88593e6fef65df18ba07122b922833bade833e0 | |
| parent | e91fe6e6d5931953f558345e17e269e5432e956f (diff) | |
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
| -rw-r--r-- | CHANGES | 1 | ||||
| -rw-r--r-- | FL/Fl_Window.H | 12 | ||||
| -rw-r--r-- | src/Fl.cxx | 3 | ||||
| -rw-r--r-- | src/Fl_Window.cxx | 49 |
4 files changed, 61 insertions, 4 deletions
@@ -1,5 +1,6 @@ CHANGES IN FLTK 1.3.0 + - Fixed xclass support for Fl_Window (STR #2053) - Fixed Caps Lock handling in X11/XIM (STR #2366) - Fixed handling of missing fonts in Xft (STR #2355) - Added alternative Xft font names (STR #2215) diff --git a/FL/Fl_Window.H b/FL/Fl_Window.H index c9dd1af08..721d10289 100644 --- a/FL/Fl_Window.H +++ b/FL/Fl_Window.H @@ -57,11 +57,13 @@ class Fl_X; */ class FL_EXPORT Fl_Window : public Fl_Group { + static char *default_xclass_; + friend class Fl_X; Fl_X *i; // points at the system-specific stuff const char* iconlabel_; - const char* xclass_; + char* xclass_; const void* icon_; // size_range stuff: int minw, minh, maxw, maxh; @@ -323,8 +325,10 @@ public: /** Sets the icon label. */ void label(const char* label, const char* iconlabel); // platform dependent void copy_label(const char* a); - /** See void Fl_Window::xclass(const char*) */ - const char* xclass() const {return xclass_;} + + static void default_xclass(const char*); + static const char *default_xclass(); + const char* xclass() const; /** A string used to tell the system what type of window this is. Mostly this identifies the picture to draw in the icon. <I>Under X, this is @@ -339,7 +343,7 @@ public: visible effect. The passed pointer is stored unchanged. The string is not copied. */ - void xclass(const char* c) {xclass_ = c;} + void xclass(const char* c); /** Gets the current icon window target dependent data. */ const void* icon() const {return icon_;} /** Sets the current icon window target dependent data. */ 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$". |
