Bug#552292: icewm: IceWM replaces the icons of some applications by default app icon

2009-10-28 Thread Evgeny M. Zubok
tags 552292 + patch
thanks

I have written the patch to rescale the icons other way.

The old behaviour was to search through NET_WM_ICON set for icons with
sizes that matched SmallIconSize, LargeIconSize, HugeIconSize (either
their defaults - 16, 32, 48 - or user defined values). The missing icons
were being created by scaling already found larger icons. But if no
icons had been found at the first step (inkscape 64x64 icon didn't match
16, 32 or 48) then the taskbar icon wasn't being created.

The patch I suggest has a new approach. First we look up the NET_WM_ICON
set for icons that match the SmallIconSize, LargeIconSize,
HugeIconSize. Also we search the largest icon from provided NET_WM_ICON
set. Then we create the image from largest icon and scale it to fill the
missing icons. Inkscape icon now appears.

What do you think?

--- a/src/wmframe.cc	2009-10-28 17:09:16.0 +0300
+++ b/src/wmframe.cc	2009-10-28 17:11:27.0 +0300
@@ -2397,28 +2397,43 @@
 refYIcon oldFrameIcon = fFrameIcon;
 
 if (client()-getNetWMIcon(count, elem)) {
-refYImage icons[4];
-int sizes[] = { YIcon::smallSize(), YIcon::largeSize(), YIcon::hugeSize() };
-
-// find icons that match Small-/Large-/HugeIconSize, icons[3] is
-// fallback if none matches
-for (long *e = elem; e - count  elem; e += 2 + e[0] * e[1]) {
-int i = 0;
-for (; i  3; i++)
-if (e[0] == sizes[i]  e[0] == e[1])
-break;
-if (icons[i] == null)
-icons[i] = YImage::createFromIconProperty(e + 2, e[0], e[1]);
-}
-
-// use the next larger existing icon to scale those that were missing
-for (int i = 0; i  3; i++)
-if (icons[i] == null)
-for (int j = i + 1; j  4; j++)
-if (icons[j] != null) {
-icons[i] = icons[j]-scale(sizes[i], sizes[i]);
-break;
-}
+refYImage icons[3], largestIcon;
+int sizes[] = { YIcon::smallSize(), YIcon::largeSize(), YIcon::hugeSize()};
+	long *largestIconOffset = elem;
+	int largestIconSize = 0; 
+
+// Find icons that match Small-/Large-/HugeIconSize and search
+// for the largest icon from NET_WM_ICON set.
+for (long *e = elem; e - count  elem  e[0]  0  e[1]  0; 
+	 e += 2 + e[0] * e[1]) {
+
+	if (e[0]  largestIconSize  e[0] == e[1]) {
+		largestIconOffset = e;
+		largestIconSize = e[0];
+	}
+	
+for (int i = 0; i  3; i++) {
+if (e[0] == sizes[i]  e[0] == e[1] 
+		icons[i] == null  e + 2 + e[0] * e[1] = e + count) {
+		icons[i] = YImage::createFromIconProperty(e + 2, e[0], e[1]);
+		break;
+		}
+	}
+	}
+
+	// create the largest icon
+	if (largestIconSize  0)
+	largestIcon = 
+		YImage::createFromIconProperty(largestIconOffset + 2, 
+	   largestIconSize, 
+	   largestIconSize);
+
+	// create the missing icons by rescaling the largest icon
+	if (largestIcon != null)
+	for (int i = 0; i  3; i++)
+		if (icons[i] == null)
+		icons[i] = largestIcon-scale(sizes[i], sizes[i]);
 
 fFrameIcon.init(new YIcon(icons[0], icons[1], icons[2]));
 XFree(elem);


Bug#552292: icewm: IceWM replaces the icons of some applications by default app icon

2009-10-28 Thread Eduard Bloch
#include hallo.h
* Evgeny M. Zubok [Tue, Oct 27 2009, 07:51:03PM]:
 Eduard Bloch e...@gmx.de writes:
 
  inkscape: only one 64x64 icon included. Icewm requires an icon set
  having images of sizes 16x16 and 32x32. Rescaling is not supported
  yet, as far as I can see.
 
 Rescaling is supported. To verify this I have added 64 to the list of
 acceptable icon sizes in wmframe.cc (sizes[] in function updateIcon),
 changed number of iterations in loops from 3 to 4 and got the desirable
 result.
 
 Also I have discovered IceWM option HugeIconSize (which has default
 value 48). Changing it to 64 in ~/.icewm/preferences also resulted in
 visible inkscape icon. Unfortunately, the applications which have 48x48
 icon (for example, gqview in my application set) will not show the icons
 in this case. There are only three options: SmallIconSize, LargeIconSize
 and HugeIconSize. Do we need the new option (say, GiantIconSize) with
 default value 64 or another solution?

Hm, ok. Personally I feel that the time has come to fork icewm since
there is not much activity from upstream author anymore. But it's rude
after all and I would like to avoid it.

Let's ping Marco and ask for his opinion (Cc'ed). Further, I suggest to
set a timeout of few weeks before doing this radical steps.
 
Regards,
Eduard.

-- 
janw ich habe unter Debian die falsche Grafikkarte installiert, wie kann ich
das ändern?
fd0 janw: rechner aufschrauben, karte raus, die richtige karte rein,
zuschrauben, booten, fertig.



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#552292: icewm: IceWM replaces the icons of some applications by default app icon

2009-10-27 Thread Evgeny M. Zubok
Evgeny M. Zubok evgeny.zu...@tochka.ru writes:

 I'm reopening this bug. The last patch mainly solved the problem
 (thank you) but not completely. The applications remain (for example
 `inkscape' and `qtconfig-qt3') that supply icons, but the icons don't
 appear in the taskbar and are replaced by default icon as in the
 previous case.

I think that icewm doesn't properly recognize 64x64 icons and possibly
other sizes. Only the following sizes (from themable.h) is defined in
the source and specially verified within updateIcon (wmframe.cc):

XIV(int, menuIconSize,  16)
XIV(int, smallIconSize, 16)
XIV(int, largeIconSize, 32)
XIV(int, hugeIconSize,  48)



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#552292: icewm: IceWM replaces the icons of some applications by default app icon

2009-10-27 Thread Eduard Bloch
#include hallo.h
* Evgeny M. Zubok [Mon, Oct 26 2009, 11:44:07PM]:

 I think that icewm doesn't properly recognize 64x64 icons and possibly
 other sizes. Only the following sizes (from themable.h) is defined in
 the source and specially verified within updateIcon (wmframe.cc):
 
 XIV(int, menuIconSize,  16)
 XIV(int, smallIconSize, 16)
 XIV(int, largeIconSize, 32)
 XIV(int, hugeIconSize,  48)

Yes?! It would need to downscale at run time, that's why I retitled this
bug report already. See
20091026192812.ga10...@rotes76.wohnheim.uni-kl.de.

Regards,
Eduard.
-- 
Naja, Garbage Collector eben. Holt den Müll sogar vom Himmel.
   (Heise Trollforum über Java in der Flugzeugsteuerung)



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#552292: icewm: IceWM replaces the icons of some applications by default app icon

2009-10-27 Thread Evgeny M. Zubok
Eduard Bloch e...@gmx.de writes:

 inkscape: only one 64x64 icon included. Icewm requires an icon set
 having images of sizes 16x16 and 32x32. Rescaling is not supported
 yet, as far as I can see.

Rescaling is supported. To verify this I have added 64 to the list of
acceptable icon sizes in wmframe.cc (sizes[] in function updateIcon),
changed number of iterations in loops from 3 to 4 and got the desirable
result.

Also I have discovered IceWM option HugeIconSize (which has default
value 48). Changing it to 64 in ~/.icewm/preferences also resulted in
visible inkscape icon. Unfortunately, the applications which have 48x48
icon (for example, gqview in my application set) will not show the icons
in this case. There are only three options: SmallIconSize, LargeIconSize
and HugeIconSize. Do we need the new option (say, GiantIconSize) with
default value 64 or another solution?



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#552292: icewm: IceWM replaces the icons of some applications by default app icon

2009-10-26 Thread Evgeny M. Zubok
reopen 552292
thanks

I'm reopening this bug. The last patch mainly solved the problem (thank
you) but not completely. The applications remain (for example `inkscape'
and `qtconfig-qt3') that supply icons, but the icons don't appear in the
taskbar and are replaced by default icon as in the previous case.
`inkscape' provides the icon (64x64) with NET_WM_ICON property, and
`qtconfig-qt3' uses legacy method. xprop output for these application
below:


qtconfig-qt3


_ICEWM_TRAY(CARDINAL) = 0
_WIN_LAYER(CARDINAL) = 4
_NET_WM_DESKTOP(CARDINAL) = 1
_WIN_WORKSPACE(CARDINAL) = 1
WM_STATE(WM_STATE):
window state: Normal
icon window: 0x0
_NET_WM_STATE(ATOM) = 
_WIN_STATE(CARDINAL) = 0, 63
WM_COMMAND(STRING) = { qtconfig-qt3 }
_NET_WM_NAME(UTF8_STRING) = 0x51, 0x74, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67
, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e
XdndAware(ATOM) = ATOM
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
_QT_SIZEGRIP(WINDOW): window id # 0x10e
WM_CLIENT_LEADER(WINDOW): window id # 0x102
WM_WINDOW_ROLE(STRING) = main window
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 16777219
_NET_WM_PID(CARDINAL) = 13478
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _N
ET_WM_SYNC_REQUEST
WM_NAME(STRING) = Qt Configuration
WM_LOCALE_NAME(STRING) = ru_RU.UTF-8
WM_CLASS(STRING) = qtconfig-qt3, Qtconfig-qt3
WM_HINTS(WM_HINTS):
Client accepts input or input focus: True
Initial state is Normal State.
bitmap id # to use for icon: 0x13c
bitmap id # of mask for icon: 0x13a
window id # of group leader: 0x102
WM_NORMAL_HINTS(WM_SIZE_HINTS):
user specified size: 700 by 600
program specified size: 700 by 600
program specified minimum size: 670 by 515
window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = localhost





inkscape 0.46 (Lenny)
=

_ICEWM_TRAY(CARDINAL) = 0
_WIN_LAYER(CARDINAL) = 4
_NET_WM_DESKTOP(CARDINAL) = 1
_WIN_WORKSPACE(CARDINAL) = 1
WM_STATE(WM_STATE):
window state: Normal
icon window: 0x0
_NET_WM_STATE(ATOM) = 
_WIN_STATE(CARDINAL) = 0, 63
WM_HINTS(WM_HINTS):
Client accepts input or input focus: True
Initial state is Normal State.
bitmap id # to use for icon: 0x12c
bitmap id # of mask for icon: 0x133
window id # of group leader: 0x101
XdndAware(ATOM) = BITMAP
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
_NET_WM_ICON(CARDINAL) = 64, 64, 16777215, 16777215, 16777215, 16777215,
16777215, 16777215, 

=== long sequence of numbers skipped by me (this is icon 64 x 64) ===

16777215, 16777215, 16777216, 33554432, 50331648, 67108864, 67108864, 67108864, 
50331648, 33554432, 16777216, 16777215, 16777215, 16777215, 16777215, 16777215, 
16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 
16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 
16777215, 16777215, 16777215, 16777215, 16777215, 16777215
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 16777231
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x10e
WM_CLIENT_LEADER(WINDOW): window id # 0x101
_NET_WM_PID(CARDINAL) = 13496
WM_LOCALE_NAME(STRING) = ru_RU.UTF-8
WM_CLIENT_MACHINE(STRING) = localhost
WM_NORMAL_HINTS(WM_SIZE_HINTS):
program specified minimum size: 550 by 652
window gravity: NorthWest
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, 
_NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = inkscape, Inkscape
WM_ICON_NAME(COMPOUND_TEXT) = Новый документ 1 — Inkscape
_NET_WM_ICON_NAME(UTF8_STRING) = 0xd0, 0x9d, 0xd0, 0xbe, 0xd0, 0xb2, 0xd1, 
0x8b, 0xd0, 0xb9, 0x20, 0xd0, 0xb4, 0xd0, 0xbe, 0xd0, 0xba, 0xd1, 0x83, 0xd0, 
0xbc, 0xd0, 0xb5, 0xd0, 0xbd, 0xd1, 0x82, 0x20, 0x31, 0x20, 0xe2, 0x80, 0x94, 
0x20, 0x49, 0x6e, 0x6b, 0x73, 0x63, 0x61, 0x70, 0x65
WM_NAME(COMPOUND_TEXT) = Новый документ 1 — Inkscape
_NET_WM_NAME(UTF8_STRING) = 0xd0, 0x9d, 0xd0, 0xbe, 0xd0, 0xb2, 0xd1, 0x8b, 
0xd0, 0xb9, 0x20, 0xd0, 0xb4, 0xd0, 0xbe, 0xd0, 0xba, 0xd1, 0x83, 0xd0, 0xbc, 
0xd0, 0xb5, 0xd0, 0xbd, 0xd1, 0x82, 0x20, 0x31, 0x20, 0xe2, 0x80, 0x94, 0x20, 
0x49, 0x6e, 0x6b, 0x73, 0x63, 0x61, 0x70, 0x65



--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#552292: icewm: IceWM replaces the icons of some applications by default app icon

2009-10-26 Thread Eduard Bloch
severity 552292 wishlist
retitle 552292 Downscaling of netwm icons
thanks

#include hallo.h
* Evgeny M. Zubok [Mon, Oct 26 2009, 06:54:45PM]:
 reopen 552292
 thanks
 
 I'm reopening this bug. The last patch mainly solved the problem (thank
 you) but not completely. The applications remain (for example `inkscape'
 and `qtconfig-qt3') that supply icons, but the icons don't appear in the
 taskbar and are replaced by default icon as in the previous case.
 `inkscape' provides the icon (64x64) with NET_WM_ICON property, and

qtconfig-qt3: no icon data at all (just look at the output that you included)

inkscape: only one 64x64 icon included. Icewm requires an icon set
having images of sizes 16x16 and 32x32. Rescaling is not supported yet,
as far as I can see.

Regards,
Eduard.

-- 
andreasj Wer hat eigentlich diesen dämlichen Spruch erfunden von wegen Es
gibt keine dummen Fragen, nur dumme Antworten?
hank andreasj: willst du ihm ne einladung schicken?
andreasj hank: Ich würde ihn lieber besuchen, mit nem Baseballschläger
hank andreasj: setz ihn lieber 24h in #debian...@qnet. duerfte ihm auch nen
klaren kopf bescheren...



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#552292: icewm: IceWM replaces the icons of some applications by default app icon

2009-10-25 Thread Evgeny M . Zubok
Package: icewm
Version: 1.2.37+1.3.4pre2-6
Severity: normal

Icewm doesn't show the icons of some applications (for example, xpdf,
aumix, scribus, emacs, etc.) and replaces them by default app icon
from /usr/share/icewm/icons (this is red X logo sign).



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#552292: icewm: IceWM replaces the icons of some applications by default app icon

2009-10-25 Thread Eduard Bloch
#include hallo.h
* Evgeny M. Zubok [Sun, Oct 25 2009, 11:31:15AM]:
 Package: icewm
 Version: 1.2.37+1.3.4pre2-6
 Severity: normal
 
 Icewm doesn't show the icons of some applications (for example, xpdf,
 aumix, scribus, emacs, etc.) and replaces them by default app icon
 from /usr/share/icewm/icons (this is red X logo sign).

Where?

In the taskbar and window lists? Sure, that applications don't
provide one via wm propties (just watch xprop output, compared to...
e.g. iceweasel).

In the menu? Not reproducible, there is one.

However, icewm does not use the menu icon as window icon because those
need to have a well defined format (xpm, include size infos in the
filename, etc.). Maybe there should be an extra feature to try to use
the icon known from the menu as fallback icon for the window, but I
think it wouldn't be that easy to implement.

Regards,
Eduard.

-- 
Für einen Politiker ist es gefährlich, die Wahrheit zu sagen. Die
Leute könnten sich daran gewöhnen, die Wahrheit hören zu wollen.
-- George Bernard Shaw



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#552292: icewm: IceWM replaces the icons of some applications by default app icon

2009-10-25 Thread Evgeny M. Zubok
Eduard Bloch e...@gmx.de writes:

 Where?

 In the taskbar and window lists? Sure, that applications don't
 provide one via wm propties (just watch xprop output, compared to...
 e.g. iceweasel).


I mean taskbar and also window's header. For example, icewm 1.2.28 from
Lenny shows xpdf (or emacs) application icon, and icewm 1.2.37
doesn't. The latter was backported to Lenny from Sid. xprop output for
xpdf and emacs window shows that bitmap id for application is provided,
but _NET_WM_ICON is absent. I suppose that icewm ignores information
from WM_HINTS, and only _NET_WM_ICON is taken into account.

xpdf:

$ xprop

_ICEWM_TRAY(CARDINAL) = 0
_WIN_LAYER(CARDINAL) = 4
_NET_WM_DESKTOP(CARDINAL) = 0
_WIN_WORKSPACE(CARDINAL) = 0
WM_STATE(WM_STATE):
window state: Normal
icon window: 0x0
_NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ
_WIN_STATE(CARDINAL) = 12, 63
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x0, 0x, 0x, 0x, 0x0
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW
WM_LOCALE_NAME(STRING) = C
WM_CLASS(STRING) = win, Xpdf
WM_HINTS(WM_HINTS):
Client accepts input or input focus: True
Initial state is Normal State.
bitmap id # to use for icon: 0x16000c7
WM_NORMAL_HINTS(WM_SIZE_HINTS):
program specified location: 0, 0
program specified size: 650 by 551
program specified minimum size: 100 by 100
program specified base size: 0 by 0
window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = localhost
WM_ICON_NAME(STRING) = Xpdf
WM_NAME(STRING) = Xpdf

emacs:

$ xprop

_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
XdndAware(ATOM) = BITMAP
_ICEWM_TRAY(CARDINAL) = 0
_WIN_LAYER(CARDINAL) = 4
_NET_WM_DESKTOP(CARDINAL) = 0
_WIN_WORKSPACE(CARDINAL) = 0
WM_STATE(WM_STATE):
window state: Normal
icon window: 0x0
_NET_WM_STATE(ATOM) = 
_WIN_STATE(CARDINAL) = 0, 63
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, WM_SAVE_YOURSELF
WM_CLIENT_LEADER(WINDOW): window id # 0x17a
WM_LOCALE_NAME(STRING) = ru_RU.UTF-8
WM_CLASS(STRING) = emacs, Emacs
WM_HINTS(WM_HINTS):
Client accepts input or input focus: True
Initial state is Normal State.
bitmap id # to use for icon: 0x184
bitmap id # of mask for icon: 0x186
WM_NORMAL_HINTS(WM_SIZE_HINTS):
user specified location: 0, 0
user specified size: 656 by 544
program specified minimum size: 16 by 0
program specified resize increment: 8 by 16
window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = localhost
WM_ICON_NAME(STRING) = em...@localhost
WM_NAME(STRING) = em...@localhost



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org