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

2009-10-28 Thread Eduard Bloch
#include 
* Evgeny M. Zubok [Tue, Oct 27 2009, 07:51:03PM]:
> Eduard Bloch  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.

-- 
 ich habe unter Debian die falsche Grafikkarte installiert, wie kann ich
das ändern?
 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-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 @@
 ref oldFrameIcon = fFrameIcon;
 
 if (client()->getNetWMIcon(&count, &elem)) {
-ref 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;
-}
+ref 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-27 Thread Evgeny M. Zubok
Eduard Bloch  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-27 Thread Eduard Bloch
#include 
* 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-26 Thread Evgeny M. Zubok
"Evgeny M. Zubok"  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-26 Thread Eduard Bloch
severity 552292 wishlist
retitle 552292 Downscaling of netwm icons
thanks

#include 
* 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.

-- 
 Wer hat eigentlich diesen dämlichen Spruch erfunden von wegen "Es
gibt keine dummen Fragen, nur dumme Antworten"?
 andreasj: willst du ihm ne einladung schicken?
 hank: Ich würde ihn lieber besuchen, mit nem Baseballschläger
 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-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-25 Thread Evgeny M. Zubok
Eduard Bloch  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



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

2009-10-25 Thread Eduard Bloch
#include 
* 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
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