123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645 |
- diff -ur fltk-1.3.2.org/FL/Fl_Window.H fltk-1.3.2/FL/Fl_Window.H
- --- fltk-1.3.2.org/FL/Fl_Window.H 2013-01-16 10:49:40.904228200 +0100
- +++ fltk-1.3.2/FL/Fl_Window.H 2013-01-16 10:49:55.554353925 +0100
- @@ -22,6 +22,10 @@
- #ifndef Fl_Window_H
- #define Fl_Window_H
-
- +#ifdef WIN32
- +#include <windows.h>
- +#endif
- +
- #include "Fl_Group.H"
-
- #define FL_WINDOW 0xF0 ///< window type id all subclasses have type() >= this
- @@ -73,9 +77,19 @@
- friend class Fl_X;
- Fl_X *i; // points at the system-specific stuff
-
- + struct icon_data {
- + const void *legacy_icon;
- + Fl_RGB_Image **icons;
- + int count;
- +#ifdef WIN32
- + HICON big_icon;
- + HICON small_icon;
- +#endif
- + };
- +
- const char* iconlabel_;
- char* xclass_;
- - const void* icon_;
- + struct icon_data *icon_;
- // size_range stuff:
- int minw, minh, maxw, maxh;
- int dw, dh, aspect;
- @@ -121,6 +135,8 @@
- */
- int force_position() const { return ((flags() & FORCE_POSITION)?1:0); }
-
- + void free_icons();
- +
- public:
-
- /**
- @@ -350,6 +366,18 @@
- static const char *default_xclass();
- const char* xclass() const;
- void xclass(const char* c);
- +
- + static void default_icon(const Fl_RGB_Image*);
- + static void default_icons(const Fl_RGB_Image*[], int);
- + void icon(const Fl_RGB_Image*);
- + void icons(const Fl_RGB_Image*[], int);
- +
- +#ifdef WIN32
- + static void default_icons(HICON big_icon, HICON small_icon);
- + void icons(HICON big_icon, HICON small_icon);
- +#endif
- +
- + /* for legacy compatibility */
- const void* icon() const;
- void icon(const void * ic);
-
- diff -ur fltk-1.3.2.org/FL/mac.H fltk-1.3.2/FL/mac.H
- --- fltk-1.3.2.org/FL/mac.H 2013-01-16 10:49:40.904228200 +0100
- +++ fltk-1.3.2/FL/mac.H 2013-01-16 10:49:55.554353925 +0100
- @@ -120,6 +120,9 @@
- void collapse(void);
- WindowRef window_ref(void);
- void set_key_window(void);
- + // OS X doesn't have per window icons
- + static void set_default_icons(const Fl_RGB_Image*[], int) {};
- + void set_icons() {};
- int set_cursor(Fl_Cursor);
- int set_cursor(const Fl_RGB_Image*, int, int);
- static CGImageRef CGImage_from_window_rect(Fl_Window *win, int x, int y, int w, int h);
- diff -ur fltk-1.3.2.org/FL/win32.H fltk-1.3.2/FL/win32.H
- --- fltk-1.3.2.org/FL/win32.H 2013-01-16 10:49:40.904228200 +0100
- +++ fltk-1.3.2/FL/win32.H 2013-01-16 10:49:55.555355617 +0100
- @@ -84,6 +84,9 @@
- void flush() {w->flush();}
- void set_minmax(LPMINMAXINFO minmax);
- void mapraise();
- + static void set_default_icons(const Fl_RGB_Image*[], int);
- + static void set_default_icons(HICON, HICON);
- + void set_icons();
- int set_cursor(Fl_Cursor);
- int set_cursor(const Fl_RGB_Image*, int, int);
- static Fl_X* make(Fl_Window*);
- diff -ur fltk-1.3.2.org/FL/x.H fltk-1.3.2/FL/x.H
- --- fltk-1.3.2.org/FL/x.H 2013-01-16 10:49:40.904228200 +0100
- +++ fltk-1.3.2/FL/x.H 2013-01-16 10:49:55.555355617 +0100
- @@ -154,6 +154,8 @@
- static Fl_X* i(const Fl_Window* wi) {return wi->i;}
- void setwindow(Fl_Window* wi) {w=wi; wi->i=this;}
- void sendxjunk();
- + static void set_default_icons(const Fl_RGB_Image*[], int);
- + void set_icons();
- int set_cursor(Fl_Cursor);
- int set_cursor(const Fl_RGB_Image*, int, int);
- static void make_xid(Fl_Window*,XVisualInfo* =fl_visual, Colormap=fl_colormap);
- diff -ur fltk-1.3.2.org/src/Fl.cxx fltk-1.3.2/src/Fl.cxx
- --- fltk-1.3.2.org/src/Fl.cxx 2013-01-16 10:49:40.895228113 +0100
- +++ fltk-1.3.2/src/Fl.cxx 2013-01-16 10:49:55.556137979 +0100
- @@ -1530,6 +1530,8 @@
- if (xclass_) {
- free(xclass_);
- }
- + free_icons();
- + delete icon_;
- }
-
- // FL_SHOW and FL_HIDE are called whenever the visibility of this widget
- diff -ur fltk-1.3.2.org/src/Fl_win32.cxx fltk-1.3.2/src/Fl_win32.cxx
- --- fltk-1.3.2.org/src/Fl_win32.cxx 2013-01-16 10:49:40.911227539 +0100
- +++ fltk-1.3.2/src/Fl_win32.cxx 2013-01-16 10:49:55.556137979 +0100
- @@ -1804,6 +1804,8 @@
- );
- if (lab) free(lab);
-
- + x->set_icons();
- +
- if (w->fullscreen_active()) {
- /* We need to make sure that the fullscreen is created on the
- default monitor, ie the desktop where the shortcut is located
- @@ -2034,71 +2036,19 @@
-
- ////////////////////////////////////////////////////////////////
-
- -#ifndef IDC_HAND
- -# define IDC_HAND MAKEINTRESOURCE(32649)
- -#endif // !IDC_HAND
- -
- -int Fl_X::set_cursor(Fl_Cursor c) {
- - LPSTR n;
- - HCURSOR new_cursor;
- -
- - if (c == FL_CURSOR_NONE)
- - new_cursor = NULL;
- - else {
- - switch (c) {
- - case FL_CURSOR_ARROW: n = IDC_ARROW; break;
- - case FL_CURSOR_CROSS: n = IDC_CROSS; break;
- - case FL_CURSOR_WAIT: n = IDC_WAIT; break;
- - case FL_CURSOR_INSERT: n = IDC_IBEAM; break;
- - case FL_CURSOR_HAND: n = IDC_HAND; break;
- - case FL_CURSOR_HELP: n = IDC_HELP; break;
- - case FL_CURSOR_MOVE: n = IDC_SIZEALL; break;
- - case FL_CURSOR_N:
- - case FL_CURSOR_S:
- - // FIXME: Should probably have fallbacks for these instead
- - case FL_CURSOR_NS: n = IDC_SIZENS; break;
- - case FL_CURSOR_NE:
- - case FL_CURSOR_SW:
- - // FIXME: Dito.
- - case FL_CURSOR_NESW: n = IDC_SIZENESW; break;
- - case FL_CURSOR_E:
- - case FL_CURSOR_W:
- - // FIXME: Dito.
- - case FL_CURSOR_WE: n = IDC_SIZEWE; break;
- - case FL_CURSOR_SE:
- - case FL_CURSOR_NW:
- - // FIXME: Dito.
- - case FL_CURSOR_NWSE: n = IDC_SIZENWSE; break;
- - default:
- - return 0;
- - }
- -
- - new_cursor = LoadCursor(NULL, n);
- - if (new_cursor == NULL)
- - return 0;
- - }
- -
- - if ((cursor != NULL) && custom_cursor)
- - DestroyIcon(cursor);
- -
- - cursor = new_cursor;
- - custom_cursor = 0;
- -
- - SetCursor(cursor);
- -
- - return 1;
- -}
- -
- -int Fl_X::set_cursor(const Fl_RGB_Image *image, int hotx, int hoty) {
- +static HICON image_to_icon(const Fl_RGB_Image *image, bool is_icon=true,
- + int hotx = 0, int hoty = 0) {
- BITMAPV5HEADER bi;
- HBITMAP bitmap, mask;
- DWORD *bits;
- - HCURSOR new_cursor;
- + HICON icon;
-
- + if (!is_icon) {
- if ((hotx < 0) || (hotx >= image->w()))
- - return 0;
- + return NULL;
- if ((hoty < 0) || (hoty >= image->h()))
- - return 0;
- + return NULL;
- + }
-
- memset(&bi, 0, sizeof(BITMAPV5HEADER));
-
- @@ -2120,7 +2070,7 @@
- ReleaseDC(NULL, hdc);
-
- if (bits == NULL)
- - return 0;
- + return NULL;
-
- const uchar *i = (const uchar*)*image->data();
- for (int y = 0;y < image->h();y++) {
- @@ -2149,22 +2099,206 @@
- mask = CreateBitmap(image->w(),image->h(),1,1,NULL);
- if (mask == NULL) {
- DeleteObject(bitmap);
- - return 0;
- + return NULL;
- }
-
- ICONINFO ii;
-
- - ii.fIcon = FALSE;
- + ii.fIcon = is_icon;
- ii.xHotspot = hotx;
- ii.yHotspot = hoty;
- ii.hbmMask = mask;
- ii.hbmColor = bitmap;
-
- - new_cursor = CreateIconIndirect(&ii);
- + icon = CreateIconIndirect(&ii);
-
- DeleteObject(bitmap);
- DeleteObject(mask);
-
- + if (icon == NULL)
- + return NULL;
- +
- + return icon;
- +}
- +
- +////////////////////////////////////////////////////////////////
- +
- +static HICON default_big_icon = NULL;
- +static HICON default_small_icon = NULL;
- +
- +const Fl_RGB_Image *find_best_icon(int ideal_width,
- + const Fl_RGB_Image *icons[], int count) {
- + const Fl_RGB_Image *best;
- +
- + best = NULL;
- +
- + for (int i = 0;i < count;i++) {
- + if (best == NULL)
- + best = icons[i];
- + else {
- + if (best->w() < ideal_width) {
- + if (icons[i]->w() > best->w())
- + best = icons[i];
- + } else {
- + if ((icons[i]->w() >= ideal_width) &&
- + (icons[i]->w() < best->w()))
- + best = icons[i];
- + }
- + }
- + }
- +
- + return best;
- +}
- +
- +void Fl_X::set_default_icons(const Fl_RGB_Image *icons[], int count) {
- + const Fl_RGB_Image *best_big, *best_small;
- +
- + if (default_big_icon != NULL)
- + DestroyIcon(default_big_icon);
- + if (default_small_icon != NULL)
- + DestroyIcon(default_small_icon);
- +
- + best_big = find_best_icon(GetSystemMetrics(SM_CXICON), icons, count);
- + best_small = find_best_icon(GetSystemMetrics(SM_CXSMICON), icons, count);
- +
- + if (best_big != NULL)
- + default_big_icon = image_to_icon(best_big);
- + else
- + default_big_icon = NULL;
- +
- + if (best_small != NULL)
- + default_small_icon = image_to_icon(best_small);
- + else
- + default_small_icon = NULL;
- +}
- +
- +void Fl_X::set_default_icons(HICON big_icon, HICON small_icon) {
- + if (default_big_icon != NULL)
- + DestroyIcon(default_big_icon);
- + if (default_small_icon != NULL)
- + DestroyIcon(default_small_icon);
- +
- + if (big_icon != NULL)
- + default_big_icon = CopyIcon(big_icon);
- + if (small_icon != NULL)
- + default_small_icon = CopyIcon(small_icon);
- +}
- +
- +void Fl_X::set_icons() {
- + HICON big_icon, small_icon;
- +
- + big_icon = NULL;
- + small_icon = NULL;
- +
- + if (w->icon_->count) {
- + const Fl_RGB_Image *best_big, *best_small;
- +
- + best_big = find_best_icon(GetSystemMetrics(SM_CXICON),
- + (const Fl_RGB_Image **)w->icon_->icons,
- + w->icon_->count);
- + best_small = find_best_icon(GetSystemMetrics(SM_CXSMICON),
- + (const Fl_RGB_Image **)w->icon_->icons,
- + w->icon_->count);
- +
- + if (best_big != NULL)
- + big_icon = image_to_icon(best_big);
- + if (best_small != NULL)
- + small_icon = image_to_icon(best_small);
- + } else {
- + big_icon = default_big_icon;
- + small_icon = default_small_icon;
- + }
- +
- + if (big_icon != NULL)
- + SendMessage(xid, WM_SETICON, ICON_BIG, (LPARAM)big_icon);
- + if (small_icon != NULL)
- + SendMessage(xid, WM_SETICON, ICON_SMALL, (LPARAM)small_icon);
- +
- + if (w->icon_->count) {
- + if (big_icon != NULL)
- + DestroyIcon(big_icon);
- + if (small_icon != NULL)
- + DestroyIcon(small_icon);
- + }
- +}
- +
- +void Fl_Window::default_icons(HICON big_icon, HICON small_icon) {
- + Fl_X::set_default_icons(big_icon, small_icon);
- +}
- +
- +void Fl_Window::icons(HICON big_icon, HICON small_icon) {
- + free_icons();
- +
- + if (big_icon != NULL)
- + icon_->big_icon = CopyIcon(big_icon);
- + if (small_icon != NULL)
- + icon_->small_icon = CopyIcon(small_icon);
- +
- + if (i)
- + i->set_icons();
- +}
- +
- +////////////////////////////////////////////////////////////////
- +
- +#ifndef IDC_HAND
- +# define IDC_HAND MAKEINTRESOURCE(32649)
- +#endif // !IDC_HAND
- +
- +int Fl_X::set_cursor(Fl_Cursor c) {
- + LPSTR n;
- + HCURSOR new_cursor;
- +
- + if (c == FL_CURSOR_NONE)
- + new_cursor = NULL;
- + else {
- + switch (c) {
- + case FL_CURSOR_ARROW: n = IDC_ARROW; break;
- + case FL_CURSOR_CROSS: n = IDC_CROSS; break;
- + case FL_CURSOR_WAIT: n = IDC_WAIT; break;
- + case FL_CURSOR_INSERT: n = IDC_IBEAM; break;
- + case FL_CURSOR_HAND: n = IDC_HAND; break;
- + case FL_CURSOR_HELP: n = IDC_HELP; break;
- + case FL_CURSOR_MOVE: n = IDC_SIZEALL; break;
- + case FL_CURSOR_N:
- + case FL_CURSOR_S:
- + // FIXME: Should probably have fallbacks for these instead
- + case FL_CURSOR_NS: n = IDC_SIZENS; break;
- + case FL_CURSOR_NE:
- + case FL_CURSOR_SW:
- + // FIXME: Dito.
- + case FL_CURSOR_NESW: n = IDC_SIZENESW; break;
- + case FL_CURSOR_E:
- + case FL_CURSOR_W:
- + // FIXME: Dito.
- + case FL_CURSOR_WE: n = IDC_SIZEWE; break;
- + case FL_CURSOR_SE:
- + case FL_CURSOR_NW:
- + // FIXME: Dito.
- + case FL_CURSOR_NWSE: n = IDC_SIZENWSE; break;
- + default:
- + return 0;
- + }
- +
- + new_cursor = LoadCursor(NULL, n);
- + if (new_cursor == NULL)
- + return 0;
- + }
- +
- + if ((cursor != NULL) && custom_cursor)
- + DestroyIcon(cursor);
- +
- + cursor = new_cursor;
- + custom_cursor = 0;
- +
- + SetCursor(cursor);
- +
- + return 1;
- +}
- +
- +int Fl_X::set_cursor(const Fl_RGB_Image *image, int hotx, int hoty) {
- + HCURSOR new_cursor;
- +
- + new_cursor = image_to_icon(image, false, hotx, hoty);
- if (new_cursor == NULL)
- return 0;
-
- diff -ur fltk-1.3.2.org/src/Fl_Window.cxx fltk-1.3.2/src/Fl_Window.cxx
- --- fltk-1.3.2.org/src/Fl_Window.cxx 2013-01-16 10:49:40.908130903 +0100
- +++ fltk-1.3.2/src/Fl_Window.cxx 2013-01-16 10:49:55.557353865 +0100
- @@ -23,6 +23,7 @@
- #include <config.h>
- #include <FL/Fl.H>
- #include <FL/x.H>
- +#include <FL/Fl_RGB_Image.H>
- #include <FL/Fl_Window.H>
- #include <stdlib.h>
- #include "flstring.h"
- @@ -45,7 +46,8 @@
- }
- i = 0;
- xclass_ = 0;
- - icon_ = 0;
- + icon_ = new icon_data;
- + memset(icon_, 0, sizeof(*icon_));
- iconlabel_ = 0;
- resizable(0);
- size_range_set = 0;
- @@ -264,16 +266,68 @@
- }
- }
-
- +void Fl_Window::default_icon(const Fl_RGB_Image *icon) {
- + default_icons(&icon, 1);
- +}
- +
- +void Fl_Window::default_icons(const Fl_RGB_Image **icons, int count) {
- + Fl_X::set_default_icons(icons, count);
- +}
- +
- +void Fl_Window::icon(const Fl_RGB_Image *icon) {
- + icons(&icon, 1);
- +}
- +
- +void Fl_Window::icons(const Fl_RGB_Image **icons, int count) {
- + free_icons();
- +
- + if (count > 0) {
- + icon_->icons = new Fl_RGB_Image*[count];
- + icon_->count = count;
- + // FIXME: Fl_RGB_Image lacks const modifiers on methods
- + for (int i = 0;i < count;i++)
- + icon_->icons[i] = (Fl_RGB_Image*)((Fl_RGB_Image*)icons[i])->copy();
- + }
- +
- + if (i)
- + i->set_icons();
- +}
- +
- /** Gets the current icon window target dependent data. */
- const void *Fl_Window::icon() const {
- - return icon_;
- + return icon_->legacy_icon;
- }
-
- /** Sets the current icon window target dependent data. */
- void Fl_Window::icon(const void * ic) {
- - icon_ = ic;
- + free_icons();
- + icon_->legacy_icon = ic;
- }
-
- +void Fl_Window::free_icons() {
- + int i;
- +
- + icon_->legacy_icon = 0L;
- +
- + if (icon_->icons) {
- + for (i = 0;i < icon_->count;i++)
- + delete icon_->icons[i];
- + delete [] icon_->icons;
- + icon_->icons = 0L;
- + }
- +
- + icon_->count = 0;
- +
- +#ifdef WIN32
- + if (icon_->big_icon)
- + DestroyIcon(icon_->big_icon);
- + if (icon_->small_icon)
- + DestroyIcon(icon_->small_icon);
- +
- + icon_->big_icon = NULL;
- + icon_->small_icon = NULL;
- +#endif
- +}
-
- //
- // End of "$Id: Fl_Window.cxx 9706 2012-11-06 20:46:14Z matt $".
- diff -ur fltk-1.3.2.org/src/Fl_x.cxx fltk-1.3.2/src/Fl_x.cxx
- --- fltk-1.3.2.org/src/Fl_x.cxx 2013-01-16 10:49:40.912227213 +0100
- +++ fltk-1.3.2/src/Fl_x.cxx 2013-01-16 10:49:55.558137113 +0100
- @@ -345,6 +345,7 @@
- Atom fl_NET_WM_STATE;
- Atom fl_NET_WM_STATE_FULLSCREEN;
- Atom fl_NET_WORKAREA;
- +Atom fl_NET_WM_ICON;
-
- /*
- X defines 32-bit-entities to have a format value of max. 32,
- @@ -709,6 +710,7 @@
- fl_NET_WM_STATE = XInternAtom(d, "_NET_WM_STATE", 0);
- fl_NET_WM_STATE_FULLSCREEN = XInternAtom(d, "_NET_WM_STATE_FULLSCREEN", 0);
- fl_NET_WORKAREA = XInternAtom(d, "_NET_WORKAREA", 0);
- + fl_NET_WM_ICON = XInternAtom(d, "_NET_WM_ICON", 0);
-
- if (sizeof(Atom) < 4)
- atom_bits = sizeof(Atom) * 8;
- @@ -2138,12 +2140,14 @@
- fl_show_iconic = 0;
- showit = 0;
- }
- - if (win->icon()) {
- - hints->icon_pixmap = (Pixmap)win->icon();
- + if (win->icon_->legacy_icon) {
- + hints->icon_pixmap = (Pixmap)win->icon_->legacy_icon;
- hints->flags |= IconPixmapHint;
- }
- XSetWMHints(fl_display, xp->xid, hints);
- XFree(hints);
- +
- + xp->set_icons();
- }
-
- // set the window type for menu and tooltip windows to avoid animations (compiz)
- @@ -2263,6 +2267,93 @@
-
- ////////////////////////////////////////////////////////////////
-
- +static unsigned long *default_net_wm_icons = 0L;
- +static size_t default_net_wm_icons_size = 0;
- +
- +void icons_to_property(const Fl_RGB_Image *icons[], int count,
- + unsigned long **property, size_t *len) {
- + size_t sz;
- + unsigned long *data;
- +
- + sz = 0;
- + for (int i = 0;i < count;i++)
- + sz += 2 + icons[i]->w() * icons[i]->h();
- +
- + // FIXME: Might want to sort the icons
- +
- + *property = data = new unsigned long[sz];
- + *len = sz;
- +
- + for (int i = 0;i < count;i++) {
- + const Fl_RGB_Image *image;
- +
- + image = icons[i];
- +
- + data[0] = image->w();
- + data[1] = image->h();
- + data += 2;
- +
- + const uchar *in = (const uchar*)*image->data();
- + for (int y = 0;y < image->h();y++) {
- + for (int x = 0;x < image->w();x++) {
- + switch (image->d()) {
- + case 1:
- + *data = ( 0xff<<24) | (in[0]<<16) | (in[0]<<8) | in[0];
- + break;
- + case 2:
- + *data = (in[1]<<24) | (in[0]<<16) | (in[0]<<8) | in[0];
- + break;
- + case 3:
- + *data = ( 0xff<<24) | (in[0]<<16) | (in[1]<<8) | in[2];
- + break;
- + case 4:
- + *data = (in[3]<<24) | (in[0]<<16) | (in[1]<<8) | in[2];
- + break;
- + }
- + in += image->d();
- + data++;
- + }
- + in += image->ld();
- + }
- + }
- +}
- +
- +void Fl_X::set_default_icons(const Fl_RGB_Image *icons[], int count) {
- + if (default_net_wm_icons) {
- + delete [] default_net_wm_icons;
- + default_net_wm_icons = 0L;
- + default_net_wm_icons_size = 0;
- + }
- +
- + if (count > 0)
- + icons_to_property(icons, count,
- + &default_net_wm_icons, &default_net_wm_icons_size);
- +}
- +
- +void Fl_X::set_icons() {
- + unsigned long *net_wm_icons;
- + size_t net_wm_icons_size;
- +
- + if (w->icon_->count) {
- + icons_to_property((const Fl_RGB_Image **)w->icon_->icons, w->icon_->count,
- + &net_wm_icons, &net_wm_icons_size);
- + } else {
- + net_wm_icons = default_net_wm_icons;
- + net_wm_icons_size = default_net_wm_icons_size;
- + }
- +
- + XChangeProperty (fl_display, xid, fl_NET_WM_ICON, XA_CARDINAL, 32,
- + PropModeReplace, (unsigned char*) net_wm_icons, net_wm_icons_size);
- +
- + if (w->icon_->count) {
- + delete [] net_wm_icons;
- + net_wm_icons = 0L;
- + net_wm_icons_size = 0;
- + }
- +}
- +
- +////////////////////////////////////////////////////////////////
- +
- int Fl_X::set_cursor(Fl_Cursor c) {
- unsigned int shape;
- Cursor xc;
|