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 ---

Reply via email to