Custom icons per window class/name patch

Earle F. Philhower III earle@ziplabel.com
Mon May 26 17:24:00 GMT 2003


Howdy Ralf,

At 09:39 AM 5/26/2003 +0200, you wrote:
>while testing some KDE3 applications, I recognized that the application window
>class distinction by WM_CLASS isn't enough, because kde applications uses
>different icons for different windows of an application. This applications 
>uses
>the WM_WINDOW_ROLE property to distingh for example message box windows from
>basic windows. Currently the icons of the main window are overwritten, because
>all the windows of an application share the same window class.
>The appended patch fix this. (Additional this patch fixes one segfault in
>GetClassHint, I have recognized causes by a null WindowPtr)

I'm not a KDE user so I can't test this directly, but are you
sure that the window role name is unique between applications?
Would it make sense to use the Windows class name a function of
both the res_role, res_name and res_class?  Or is there only one
KDE "file open box" that all apps would share?

...

>2. KDE uses 16x16x16 sized icons for "modal dialogs" (48x48x16 for regular
>icons), which seems to be not designed for displaying un the task bar or 
>ALT-TAB
>process switching window. Currently this type of icons are displayed wrongly.
>CreateIcon() seems to stretch this icon so this result in displaying black
>horizontal stripes. This problem would be solved, when issue 1. would be
>implemented.

Can you check the raw bits that are being passed to the CreateBitmap
for this icon?  I've run several 16x16 icon apps (ethereal and konqueror)
and they all work fine.  (Of course windows will pixel double the 16x16
icon to 32x32 for the task switcher...).  CreateIcon does work for
16x16 bitmaps, but if there was a 32x32 icon registered for the window
class before, maybe Windoze doesn't like swapping it for a 16x16 with
the GCL_HICON...


-Earle F. Philhower, III
  earle@ziplabel.com
  cdrlabel - ZipLabel - FlpLabel
  http://www.cdrlabel.com



More information about the Cygwin-xfree mailing list