Your message dated Fri, 04 Jan 2008 08:58:49 +0200
with message-id <[EMAIL PROTECTED]>
has caused the Debian Bug report #458826,
regarding jwm: Multibytes characters title cannot be displayed
to be marked as having been forwarded to the upstream software
author(s) Joe Wingbermuehle (Jwm author) <[EMAIL PROTECTED]>.
(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere. Please contact me immediately.)
Debian bug tracking system administrator
(administrator, Debian Bugs database)
--- Begin Message ---
tags 458826 upstream
quit
[If you reply, please keep the CC]
Hi Joe,
Could you integrate following patch to next Jwm release.
Thanks,
Jari (Debian package maintainer)
-----------------------------------------------------------------------
[ORIGINAL MESSAGE]
Date: Thu, 03 Jan 2008 15:25:02 +0900 (JST)
Message-Id: <20080103.152502.74757261.h-yamamo AT hogehoge.jpn>
From: Hiroyuki YAMAMORI <h-yamamo AT db3.so-net.ne.jp>
Subject: Bug#458826: jwm: Multibytes characters title cannot be displayed
Package: jwm
Version: 2.0.1-1
Severity: normal
Tags: patch
Japanese characters cannot be displayed at title with some application,
e.g. openoffice.org.
The problem is that COMPOUND_TEXT handling is not good.
Following patch fixes it.
Thanks,
Hiroyuki YAMAMORI
diff -u jwm-2.0.1/src/hint.c new/src/hint.c
--- jwm-2.0.1/src/hint.c 2007-09-16 19:11:09.000000000 +0900
+++ new/src/hint.c 2008-01-03 02:16:03.000000000 +0900
@@ -7,6 +7,7 @@
*
*/
+#include <X11/Xlibint.h>
#include "jwm.h"
#include "hint.h"
#include "client.h"
@@ -581,6 +582,9 @@
Atom realType;
int realFormat;
unsigned char *name;
+ XTextProperty tprop;
+ char **text_list;
+ int tcount;
Assert(np);
@@ -597,20 +601,29 @@
np->name = (char*)name;
}
- if(!np->name) {
- if(JXFetchName(display, np->window, &np->name) == 0) {
- np->name = NULL;
+ if (!np->name) {
+ status = JXGetWindowProperty(display, np->window,
+ XA_WM_NAME, 0, 1024, False, atoms[ATOM_COMPOUND_TEXT],
+ &realType, &realFormat, &count, &extra, &name);
+ if (status == Success && realFormat == 8) {
+ tprop.value = name;
+ tprop.encoding = atoms[ATOM_COMPOUND_TEXT];
+ tprop.format = realFormat;
+ tprop.nitems = strlen((char *)name);
+ if (Xutf8TextPropertyToTextList(display, &tprop, &text_list, &tcount)
+ == Success && tcount > 0) {
+ np->name = Xmalloc(strlen(text_list[0]) + 1);
+ if (np->name)
+ strcpy(np->name, text_list[0]);
+ XFreeStringList(text_list);
+ }
+ JXFree(name);
}
}
if(!np->name) {
- status = JXGetWindowProperty(display, np->window, XA_WM_NAME,
- 0, 1024, False, atoms[ATOM_COMPOUND_TEXT], &realType,
- &realFormat, &count, &extra, &name);
- if(status != Success) {
+ if(JXFetchName(display, np->window, &np->name) == 0) {
np->name = NULL;
- } else {
- np->name = (char*)name;
}
}
--- End Message ---