X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Futil%2Fwindow.c;h=98e3075978f65ad2e322f3a1add96807e06f27f6;hb=a72ae04bf96477f11d8bf24baea54596f6d3356b;hp=c6bceb3b46001fbfbb3422b1b375287408d98325;hpb=49211be48303abbea1ca65360d5b3bb6b95e2c25;p=chaz%2Ftint2 diff --git a/src/util/window.c b/src/util/window.c index c6bceb3..98e3075 100644 --- a/src/util/window.c +++ b/src/util/window.c @@ -87,9 +87,12 @@ int window_is_hidden (Window win) return 1; } // do not add transient_for windows if the transient window is already in the taskbar - if ( XGetTransientForHint(server.dsp, win, &window) && task_get_tasks(window) ) { - XFree(at); - return 1; + window=win; + while ( XGetTransientForHint(server.dsp, window, &window) ) { + if ( task_get_tasks(window) ) { + XFree(at); + return 1; + } } } XFree(at); @@ -218,17 +221,17 @@ int window_is_active (Window win) } -int get_icon_count (int32_t *data, int num) +int get_icon_count (gulong *data, int num) { int count, pos, w, h; count = 0; pos = 0; - while (pos < num) { + while (pos+2 < num) { w = data[pos++]; h = data[pos++]; pos += w * h; - if (pos > num || w * h == 0) break; + if (pos > num || w <= 0 || h <= 0) break; count++; } @@ -236,10 +239,10 @@ int get_icon_count (int32_t *data, int num) } -int32_t *get_best_icon (int32_t *data, int icon_count, int num, int *iw, int *ih, int best_icon_size) +gulong *get_best_icon (gulong *data, int icon_count, int num, int *iw, int *ih, int best_icon_size) { int width[icon_count], height[icon_count], pos, i, w, h; - int32_t *icon_data[icon_count]; + gulong *icon_data[icon_count]; /* List up icons */ pos = 0;