Hello community,

here is the log from the commit of package xpdf-poppler for openSUSE:Factory
checked in at Tue Oct 18 14:35:00 CEST 2011.



--------
--- openSUSE:Factory/xpdf-poppler/xpdf-poppler.changes  2011-09-23 
12:52:41.000000000 +0200
+++ /mounts/work_src_done/STABLE/xpdf-poppler/xpdf-poppler.changes      
2011-10-14 12:10:16.000000000 +0200
@@ -1,0 +2,26 @@
+Fri Oct 14 09:32:10 UTC 2011 - [email protected]
+
+- display outline when present in document [bnc#681511]
+  * outline-when-needed.patch
+- more compatibility links
+- name of system wide configuration changed from xpdfrc -> 
+  xpdf-poppler-rc in man pages
+  * man-xpdfrc.patch
+
+-------------------------------------------------------------------
+Tue Oct 11 09:47:32 UTC 2011 - [email protected]
+
+- remove obsoleted include from xpdf-poppler-rc
+  * rc.patch
+- use more generic fonts in about dialog, file dialog and
+  text fields
+  * generic-fonts.patch
+- created xpdf.1 pointing to xpdf-poppler.1
+- re-add patch fixing window and icon title 
+  * settitle.patch
+- re-add patch modifying c&p default encoding
+  * cut-and-paste-default-output-encoding.patch
+- re-add patch fixing searching non-ascii characters
+  * search-non-ascii.patch
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


New:
----
  xpdf-poppler-cut-and-paste-default-output-encoding.patch
  xpdf-poppler-generic-fonts.patch
  xpdf-poppler-man-rc.patch
  xpdf-poppler-outline-when-needed.patch
  xpdf-poppler-rc.patch
  xpdf-poppler-search-non-ascii.patch
  xpdf-poppler-settitle.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xpdf-poppler.spec ++++++
--- /var/tmp/diff_new_pack.yaft5I/_old  2011-10-18 14:34:50.000000000 +0200
+++ /var/tmp/diff_new_pack.yaft5I/_new  2011-10-18 14:34:50.000000000 +0200
@@ -28,6 +28,13 @@
 Source0:        xpdf-poppler.tar.bz2
 Source1:        xpdf.png
 Patch0:         %{name}-poppler-0.18.0.patch
+Patch1:         %{name}-rc.patch
+Patch2:         %{name}-generic-fonts.patch
+Patch4:         %{name}-settitle.patch
+Patch5:         %{name}-cut-and-paste-default-output-encoding.patch
+Patch6:         %{name}-search-non-ascii.patch
+Patch7:         %{name}-outline-when-needed.patch
+Patch8:         %{name}-man-rc.patch
 Url:            http://www.foolabs.com/xpdf/
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Obsoletes:      xpdf <= 3.02
@@ -42,10 +49,17 @@
 %if 0%{?suse_version} > 1140
 %patch0 -p1
 %endif
+%patch1 -p1
+%patch2 -p1
+%patch4 -p1
+%patch5
+%patch6
+%patch7
+%patch8 -p1
 
 %build
-export CXXFLAGS="$RPM_OPT_FLAGS"
-export CFLAGS="$RPM_OPT_FLAGS"
+export CXXFLAGS="$RPM_OPT_FLAGS -O0"
+export CFLAGS="$RPM_OPT_FLAGS -O0"
 ./autogen.sh
 %configure --docdir=%{_docdir}/%{name}
 make
@@ -54,7 +68,12 @@
 %makeinstall
 mkdir -p %{buildroot}%{_docdir}/%{name}
 mv LICENSE README.md %{buildroot}%{_docdir}/%{name}
+# compat stuff
 ln -s %{_bindir}/xpdf-poppler %{buildroot}%{_bindir}/xpdf
+ln -s %{_bindir}/zxpdf-poppler %{buildroot}%{_bindir}/zxpdf
+echo ".so man1/xpdf-poppler.1" > %{buildroot}%{_mandir}/man1/xpdf.1
+echo ".so man1/zxpdf-poppler.1" > %{buildroot}%{_mandir}/man1/zxpdf.1
+echo ".so man5/xpdf-poppler-rc" > %{buildroot}%{_mandir}/man5/xpdfrc.5
 %suse_update_desktop_file -i %{name} Office Viewer
 
 %files

++++++ xpdf-poppler-cut-and-paste-default-output-encoding.patch ++++++
Index: XPDFCore.cc
===================================================================
--- XPDFCore.cc.orig
+++ XPDFCore.cc
@@ -419,13 +419,17 @@ Boolean XPDFCore::convertSelectionCbk(Wi
                                      XtPointer *value, unsigned long *length,
                                      int *format) {
   Atom *array;
+  static Atom utf8str = XInternAtom(currentSelectionOwner->display, 
"UTF8_STRING", False);
 
   // send back a list of supported conversion targets
   if (*target == targetsAtom) {
     if (!(array = (Atom *)XtMalloc(sizeof(Atom)))) {
       return False;
     }
-    array[0] = XA_STRING;
+    if (strcmp("UTF-8",globalParams->getTextEncodingName()->getCString()))
+           array[0] = XA_STRING;
+    else
+           array[0] = utf8str;
     *value = (XtPointer)array;
     *type = XA_ATOM;
     *format = 32;
@@ -433,11 +437,11 @@ Boolean XPDFCore::convertSelectionCbk(Wi
     return True;
 
   // send the selected text
-  } else if (*target == XA_STRING) {
+  } else if (*target == XA_STRING || *target == utf8str) {
     //~ for multithreading: need a mutex here
     *value = XtNewString(currentSelection->getCString());
     *length = currentSelection->getLength();
-    *type = XA_STRING;
+    *type = *target;
     *format = 8; // 8-bit elements
     return True;
   }
Index: XPDFViewer.cc
===================================================================
--- XPDFViewer.cc.orig
+++ XPDFViewer.cc
@@ -2735,7 +2735,10 @@ void XPDFViewer::setupOutline() {
     // create the new labels
     items = core->getDoc()->getOutline()->getItems();
     if (items && items->getLength() > 0) {
-      enc = new GooString("Latin1");
+      if (strcmp("UTF-8",globalParams->getTextEncodingName()->getCString()))
+             enc = new GooString("Latin1");
+      else
+             enc = new GooString("UTF-8");
       uMap = globalParamsGUI->getUnicodeMap(enc);
       delete enc;
       setupOutlineItems(items, NULL, uMap);
Index: doc/xpdf-poppler.1
===================================================================
--- doc/xpdf-poppler.1.orig
+++ doc/xpdf-poppler.1
@@ -162,7 +162,8 @@ Sets the encoding to use for text output
 .I encoding\-name
 must be defined with the unicodeMap command (see
 .BR xpdfrc (5)).
-This defaults to "Latin1" (which is a built-in encoding).
+This defaults to "UTF-8" in UTF-8 locales, to "Latin1" in all other
+locales ("UTF-8" and "Latin1" are built-in encodings).
 .RB "[config file: " textEncoding ]
 .TP
 .BI \-eol " unix | dos | mac"
++++++ xpdf-poppler-generic-fonts.patch ++++++
Index: xpdf-poppler/XPDFViewer.cc
===================================================================
--- xpdf-poppler.orig/XPDFViewer.cc
+++ xpdf-poppler/XPDFViewer.cc
@@ -2768,11 +2768,11 @@ void XPDFViewer::initAboutDialog() {
 
   //----- fonts
   aboutBigFont =
-    createFontList("-*-times-bold-i-normal--20-*-*-*-*-*-iso8859-1");
+    createFontList("-*-*serif*-bold-i-*-*-24-*-*-*-*-*-iso10646-*");
   aboutVersionFont =
-    createFontList("-*-times-medium-r-normal--16-*-*-*-*-*-iso8859-1");
+    createFontList("-*-*fixed*-bold-r-*-*-16-*-*-*-*-*-iso10646-*");
   aboutFixedFont =
-    createFontList("-*-courier-medium-r-normal--12-*-*-*-*-*-iso8859-1");
+    createFontList("-*-*fixed*-medium-r-*-*-14-*-*-*-*-*-iso10646-*");
 
   //----- heading
   n = 0;
Index: xpdf-poppler/XPDFApp.cc
===================================================================
--- xpdf-poppler.orig/XPDFApp.cc
+++ xpdf-poppler/XPDFApp.cc
@@ -35,9 +35,9 @@
 //------------------------------------------------------------------------
 
 static String fallbackResources[] = {
-  "*.zoomComboBox*fontList: 
-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1",
-  "*XmTextField.fontList: -*-courier-medium-r-normal--12-*-*-*-*-*-iso8859-1",
-  "*.fontList: -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1",
+  "*.zoomComboBox*fontList: 
-*-*sans*-medium-r-normal--12-*-*-*-*-*-iso10646-*",
+  "*XmTextField.fontList: -*-*sans*-medium-r-normal--12-*-*-*-*-*-iso10646-*",
+  "*.fontList: -*-*sans*-medium-r-normal--12-*-*-*-*-*-iso10646-*",
   "*XmTextField.translations: #override\\n"
   "  Ctrl<Key>a:beginning-of-line()\\n"
   "  Ctrl<Key>b:backward-character()\\n"
++++++ xpdf-poppler-man-rc.patch ++++++
Index: xpdf-poppler/doc/xpdf-poppler-rc.5
===================================================================
--- xpdf-poppler.orig/doc/xpdf-poppler-rc.5
+++ xpdf-poppler/doc/xpdf-poppler-rc.5
@@ -1,19 +1,19 @@
 .\" Copyright 2002-2007 Glyph & Cog, LLC
 .TH xpdfrc 5 "27 February 2007"
 .SH NAME
-xpdfrc \- configuration file for Xpdf tools (version 3.02)
+xpdf-poppler-rc \- configuration file for Xpdf tools (version 3.02)
 .SH DESCRIPTION
 All of the Xpdf tools read a single configuration file.  If you have a
 .I .xpdfrc
 file in your home directory, it will be read.  Otherwise, a
 system-wide configuration file will be read from
-.IR /etc/xpdf/xpdfrc ,
+.IR /etc/xpdf/xpdf-poppler-rc ,
 if it exists.  (This is its default location; depending on build
 options, it may be placed elsewhere.)  On Win32 systems, the
-.I xpdfrc
+.I xpdf-poppler-rc
 file should be placed in the same directory as the executables.
 .PP
-The xpdfrc file consists of a series of configuration options, one
+The xpdf-poppler-rc file consists of a series of configuration options, one
 per line.  Blank lines and lines starting with a \'#' (comments) are
 ignored.
 .PP
@@ -543,7 +543,7 @@ If set to "yes", drawing commands are pr
 If set to "yes", this suppresses all error and warning messages from
 all of the Xpdf tools.  This defaults to "no".
 .SH EXAMPLES
-The following is a sample xpdfrc file.
+The following is a sample xpdf-poppler-rc file.
 .nf
 
 # from the Thai support package
@@ -599,7 +599,7 @@ urlCommand      "netscape \-remote 'open
 .fi
 .SH FILES
 .TP
-.B /etc/xpdf/xpdfrc
+.B /etc/xpdf/xpdf-poppler-rc
 This is the default location for the system-wide configuration file.
 Depending on build options, it may be placed elsewhere.
 .TP
Index: xpdf-poppler/doc/xpdf-poppler.1
===================================================================
--- xpdf-poppler.orig/doc/xpdf-poppler.1
+++ xpdf-poppler/doc/xpdf-poppler.1
@@ -53,8 +53,8 @@ zxpdf file.pdf.gz
 .SH CONFIGURATION FILE
 Xpdf reads a configuration file at startup.  It first tries to find
 the user's private config file, ~/.xpdfrc.  If that doesn't exist, it
-looks for a system-wide config file, /etc/xpdf/xpdfrc.  See the
-.BR xpdfrc (5)
+looks for a system-wide config file, /etc/xpdf-poppler/xpdf-poppler-rc.  See 
the
+.BR xpdf-poppler-rc (5)
 man page for details.
 .SH OPTIONS
 Many of the following options can be set with configuration file
@@ -161,7 +161,7 @@ significantly larger (if they contain im
 Sets the encoding to use for text output.  The
 .I encoding\-name
 must be defined with the unicodeMap command (see
-.BR xpdfrc (5)).
+.BR xpdf-poppler-rc (5)).
 This defaults to "UTF-8" in UTF-8 locales, to "Latin1" in all other
 locales ("UTF-8" and "Latin1" are built-in encodings).
 .RB "[config file: " textEncoding ]
@@ -479,7 +479,7 @@ urlCommand "netscape \-remote 'openURL(%
 .SH COMMANDS
 Xpdf's key and mouse bindings are user-configurable, using the bind and
 unbind options in the config file (see
-.BR xpdfrc (5)).
+.BR xpdf-poppler-rc (5)).
 The bind command allows you to bind a key or mouse button to a
 sequence of one or more commands.
 .SS Available Commands
@@ -870,6 +870,6 @@ Cog, LLC.
 .BR pdffonts (1),
 .BR pdftoppm (1),
 .BR pdfimages (1),
-.BR xpdfrc (5)
+.BR xpdf-poppler-rc (5)
 .br
 .B http://www.foolabs.com/xpdf/
++++++ xpdf-poppler-outline-when-needed.patch ++++++
Index: XPDFViewer.cc
===================================================================
--- XPDFViewer.cc.orig
+++ XPDFViewer.cc
@@ -256,6 +256,7 @@ XPDFViewer::XPDFViewer(XPDFApp *appA, Go
   LinkDest *dest = NULL;
   int pg = pageA;
   double z;
+  Dimension width;
 
 #ifndef DISABLE_OUTLINE
   outlineLabels = NULL;
@@ -272,6 +273,14 @@ XPDFViewer::XPDFViewer(XPDFApp *appA, Go
   initFindDialog();
   initPrintDialog();
 
+#ifndef DISABLE_OUTLINE
+  if (outlineScroll != None)
+  {
+    width = 1;
+    XtVaSetValues(outlineScroll, XmNwidth, 1, NULL);
+  }
+#endif
+
   if (fileName) {
     if (loadFile(fileName, ownerPassword, userPassword)) {
       getPageAndDest(pageA, destName, &pg, &dest);
@@ -280,18 +289,23 @@ XPDFViewer::XPDFViewer(XPDFApp *appA, Go
          core->getDoc()->getOutline()->getItems() &&
          core->getDoc()->getOutline()->getItems()->getLength() > 0) {
        XtVaSetValues(outlineScroll, XmNwidth, outlinePaneWidth, NULL);
+        width = outlinePaneWidth;
       }
 #endif
     } else {
+      setOutlinePaneWidth(1); /* if show outline here is matter of taste */
       return;
     }
   }
   core->resizeToPage(pg);
-
+ 
   // map the window -- we do this after calling resizeToPage to avoid
   // an annoying on-screen resize
   mapWindow();
 
+  // close or leave open outline pane; it needs to be after mapWindow() for 
some reason
+  setOutlinePaneWidth(width); 
+
   // display the first page
   z = core->getZoom();
   if (dest) {
@@ -312,6 +326,7 @@ XPDFViewer::XPDFViewer(XPDFApp *appA, PD
   LinkDest *dest = NULL;
   int pg = pageA;
   double z;
+  Dimension width;
 
 #ifndef DISABLE_OUTLINE
   outlineLabels = NULL;
@@ -328,6 +343,14 @@ XPDFViewer::XPDFViewer(XPDFApp *appA, PD
   initFindDialog();
   initPrintDialog();
 
+#ifndef DISABLE_OUTLINE
+   if (outlineScroll != None)
+   {
+     width = 1;
+     XtVaSetValues(outlineScroll, XmNwidth, 1, NULL);
+   }
+#endif
+
   if (doc) {
     core->loadDoc(doc);
     getPageAndDest(pageA, destName, &pg, &dest);
@@ -336,6 +359,7 @@ XPDFViewer::XPDFViewer(XPDFApp *appA, PD
        core->getDoc()->getOutline()->getItems() &&
        core->getDoc()->getOutline()->getItems()->getLength() > 0) {
       XtVaSetValues(outlineScroll, XmNwidth, outlinePaneWidth, NULL);
+      width = outlinePaneWidth;
     }
 #endif
   }
@@ -344,6 +368,9 @@ XPDFViewer::XPDFViewer(XPDFApp *appA, PD
   // map the window -- we do this after calling resizeToPage to avoid
   // an annoying on-screen resize
   mapWindow();
+  
+  // close or leave open outline pane; it needs to be after mapWindow() for 
some reason
+  setOutlinePaneWidth(width);
 
   // display the first page
   z = core->getZoom();
@@ -772,24 +799,33 @@ void XPDFViewer::cmdAbout(GooString *arg
   XtManageChild(aboutDialog);
 }
 
+void XPDFViewer::setOutlinePaneWidth(Dimension width) {
+ #ifndef DISABLE_OUTLINE
+   Dimension w;
+
+   if (outlineScroll == None) {
+     return;
+   }
+
+   XtVaGetValues(outlineScroll, XmNwidth, &w, NULL);
+   if (w != width) {
+     outlinePaneWidth = width;
+     // this ugly kludge is apparently the only way to resize the panes
+     // within an XmPanedWindow
+     XtVaSetValues(outlineScroll, XmNpaneMinimum, width,
+                 XmNpaneMaximum, width, NULL);
+   }
+ #endif
+}
+
 void XPDFViewer::cmdCloseOutline(GooString *args[], int nArgs,
                                 XEvent *event) {
 #ifndef DISABLE_OUTLINE
-  Dimension w;
-
   if (outlineScroll == None) {
     return;
   }
-  XtVaGetValues(outlineScroll, XmNwidth, &w, NULL);
-  if (w > 1) {
-    outlinePaneWidth = w;
-    // this ugly kludge is apparently the only way to resize the panes
-    // within an XmPanedWindow
-    XtVaSetValues(outlineScroll, XmNpaneMinimum, 1,
-                 XmNpaneMaximum, 1, NULL);
-    XtVaSetValues(outlineScroll, XmNpaneMinimum, 1,
-                 XmNpaneMaximum, 10000, NULL);
-  }
+
+  setOutlinePaneWidth(1);
 #endif
 }
 
@@ -997,20 +1033,11 @@ void XPDFViewer::cmdOpenInNewWin(GooStri
 void XPDFViewer::cmdOpenOutline(GooString *args[], int nArgs,
                                XEvent *event) {
 #ifndef DISABLE_OUTLINE
-  Dimension w;
-
   if (outlineScroll == None) {
     return;
   }
-  XtVaGetValues(outlineScroll, XmNwidth, &w, NULL);
-  if (w == 1) {
-    // this ugly kludge is apparently the only way to resize the panes
-    // within an XmPanedWindow
-    XtVaSetValues(outlineScroll, XmNpaneMinimum, outlinePaneWidth,
-                 XmNpaneMaximum, outlinePaneWidth, NULL);
-    XtVaSetValues(outlineScroll, XmNpaneMinimum, 1,
-                 XmNpaneMaximum, 10000, NULL);
-  }
+
+  setOutlinePaneWidth(outlinePaneWidth);
 #endif
 }
 
Index: XPDFViewer.h
===================================================================
--- XPDFViewer.h.orig
+++ XPDFViewer.h
@@ -242,6 +242,7 @@ private:
   void setupOutlineItems(GooList *items, Widget parent, UnicodeMap *uMap);
   static void outlineSelectCbk(Widget widget, XtPointer ptr,
                               XtPointer callData);
+  void setOutlinePaneWidth(Dimension width);
 #endif
 
   //----- GUI code: "about" dialog
++++++ xpdf-poppler-rc.patch ++++++
Index: xpdf-poppler/xpdf-poppler-rc
===================================================================
--- xpdf-poppler.orig/xpdf-poppler-rc
+++ xpdf-poppler/xpdf-poppler-rc
@@ -91,6 +91,3 @@ psFile                        "|lpr"
 
 urlCommand     "sensible-browser '%s'"
 
-# Include the language configuration file list generated by 
update-xpdf-poppler-rc
-include /etc/xpdf-poppler/includes
-
++++++ xpdf-poppler-search-non-ascii.patch ++++++
Index: PDFCore.cc
===================================================================
--- PDFCore.cc.orig
+++ PDFCore.cc
@@ -15,6 +15,10 @@
 #endif
 
 #include <math.h>
+#include <locale.h>
+#include <langinfo.h>
+#include <iconv.h>
+#include <endian.h>
 #include "poppler/goo/GooString.h"
 #include "poppler/goo/GooList.h"
 #include "GlobalParamsGUI.h"
@@ -1566,15 +1570,32 @@ bool PDFCore::find(char *s, bool caseSen
   Unicode *u;
   int len, i;
   bool ret;
+  iconv_t cd; 
+  char *inptr, *outptr; 
+  size_t insize, outsize; 
+  size_t nchars; 
 
   // convert to Unicode
   len = strlen(s);
   u = new Unicode[len];
-  for (i = 0; i < len; ++i) {
-    u[i] = (Unicode)(s[i] & 0xff);
+  nchars = len;
+  if (len > 0) {
+#if __BYTE_ORDER == __LITTLE_ENDIAN 
+    cd = iconv_open ("UCS-4LE",nl_langinfo (CODESET)); 
+#else 
+    cd = iconv_open ("UCS-4BE",nl_langinfo (CODESET)); 
+#endif 
+    inptr = s; 
+    outptr = (char *) u; 
+    insize = len; 
+    outsize = (len * sizeof(Unicode)); 
+    memset (u, 0, (len * sizeof(Unicode))); 
+    iconv (cd, &inptr, &insize, &outptr, &outsize); 
+    nchars = len-outsize/4; 
+    iconv_close (cd); 
   }
 
-  ret = findU(u, len, caseSensitive, next, backward, onePageOnly);
+  ret = findU(u, nchars, caseSensitive, next, backward, onePageOnly);
 
   delete []u;
   return ret;
++++++ xpdf-poppler-settitle.patch ++++++
Index: xpdf-poppler/XPDFViewer.h
===================================================================
--- xpdf-poppler.orig/XPDFViewer.h
+++ xpdf-poppler/XPDFViewer.h
@@ -293,6 +293,11 @@ private:
 
   static XPDFViewerCmd cmdTab[];
 
+  //----- setting Window and Icon titles
+  void setTitle(char *title, int icon);
+  XTextProperty* char_to_xtp ( Display* dpy, char* s );
+  GooString* viewerTitle;
+         
   XPDFApp *app;
   bool ok;
 
Index: xpdf-poppler/XPDFViewer.cc
===================================================================
--- xpdf-poppler.orig/XPDFViewer.cc
+++ xpdf-poppler/XPDFViewer.cc
@@ -17,11 +17,15 @@
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+#include <locale.h>
+#include <langinfo.h>
+#include <iconv.h>
 #include <X11/keysym.h>
 #include <X11/cursorfont.h>
 #ifdef HAVE_X11_XPM_H
 #include <X11/xpm.h>
 #endif
+#include <X11/Xatom.h>
 #include "poppler/goo/gmem.h"
 #include "poppler/goo/gfile.h"
 #include "poppler/goo/GooString.h"
@@ -259,6 +263,8 @@ XPDFViewer::XPDFViewer(XPDFApp *appA, Go
   outlinePaneWidth = 175;
 #endif
 
+  viewerTitle = NULL;
+
   // do Motif-specific initialization and create the window;
   // this also creates the core object
   initWindow(fullScreen);
@@ -313,6 +319,8 @@ XPDFViewer::XPDFViewer(XPDFApp *appA, PD
   outlinePaneWidth = 175;
 #endif
 
+  viewerTitle = NULL;
+
   // do Motif-specific initialization and create the window;
   // this also creates the core object
   initWindow(fullScreen);
@@ -395,6 +403,8 @@ void XPDFViewer::clear() {
   title = app->getTitle() ? app->getTitle()->getCString()
                           : (char *)xpdfAppName;
   XtVaSetValues(win, XmNtitle, title, XmNiconName, title, NULL);
+  setTitle(title, 0);
+  setTitle(title, 1);
 
   if (toolBar != None) {
       s = XmStringCreateLocalized("");
@@ -2207,7 +2217,90 @@ void XPDFViewer::mapWindow() {
                                              about_height,
                                              fg, arm, depth),
                  NULL);
-  }
+    if (viewerTitle) {
+       setTitle(viewerTitle->getCString(),0);
+       setTitle(viewerTitle->getCString(),1);
+    }
+  }
+}
+
+void XPDFViewer::setTitle(char *title, int icon) {
+       char* from;
+       iconv_t cd;
+       char* inptr;
+       size_t insize;
+       char utf8title [4096];
+       char* outptr;
+       size_t outsize;
+       Atom net_wm_name;
+       Atom net_wm_icon_name;
+        Atom utf8_string;
+       
+       net_wm_name = XInternAtom (display, "_NET_WM_NAME", False);
+       net_wm_icon_name = XInternAtom (display, "_NET_WM_ICON_NAME", False);
+       utf8_string = XInternAtom (display, "UTF8_STRING" ,False);
+
+       from  = nl_langinfo (CODESET);
+       cd  = iconv_open ("UTF-8",from);
+       inptr = title;
+       outptr = utf8title;
+       insize = strlen(title);
+       outsize = sizeof (utf8title);
+       memset (&utf8title, 0, sizeof(utf8title));
+       iconv (cd, &inptr, &insize, &outptr, &outsize);
+       iconv_close (cd);
+        Window w;
+
+       if (!win) return;
+        w = XtWindow(win);
+       if (!w) return;
+       
+       if (icon) {
+               XSetWMIconName (
+                       display, w, char_to_xtp (display,utf8title)
+                       );
+               XChangeProperty (
+                       display, w, net_wm_icon_name, utf8_string, 8,
+                       PropModeReplace, (unsigned char *)utf8title,
+                       strlen (utf8title)
+                       );
+       } else {
+               XSetWMName (
+                       display, w, char_to_xtp (display,utf8title)
+                       );
+               XChangeProperty (
+                       display, w, net_wm_name, utf8_string, 8,
+                       PropModeReplace, (unsigned char *)utf8title,
+                       strlen (utf8title)
+                       );
+       }       
+}
+
+XTextProperty* XPDFViewer::char_to_xtp ( Display* dpy, char* s ) {
+       static XTextProperty tp = { 0, 0, 0, 0 };
+       static int free_prop = True;
+       int errCode = 0;
+       char* tl[2];
+       if ( tp.value ) {
+               if ( free_prop ) {
+                       XFree( tp.value );
+               }
+               tp.value = 0;
+               free_prop = True;
+       }
+       tl[0] = s;
+       tl[1] = 0;
+       errCode = XmbTextListToTextProperty (
+               dpy,tl, 1, XStdICCTextStyle, &tp
+       );
+       if ( errCode < 0 ) {
+               tp.value = (unsigned char*)s;
+               tp.encoding = XA_STRING;
+               tp.format = 8;
+               tp.nitems = strlen (s);
+               free_prop = False;
+       }
+    return &tp;
 }
 
 void XPDFViewer::closeWindow() {
@@ -2556,9 +2649,14 @@ void XPDFViewer::updateCbk(void *data, G
   if (fileName) {
     if (!(title = viewer->app->getTitle())) {
       title = (new GooString(xpdfAppName))->append(": ")->append(fileName);
+      if (viewer->viewerTitle)
+             delete viewer->viewerTitle;
+      viewer->viewerTitle = title->copy();
     }
     XtVaSetValues(viewer->win, XmNtitle, title->getCString(),
                  XmNiconName, title->getCString(), NULL);
+    viewer->setTitle(title->getCString(),0);
+    viewer->setTitle(title->getCString(),1);
     if (!viewer->app->getTitle()) {
       delete title;
     }

continue with "q"...



Remember to have fun...

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to