<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.lisp.guile.gtk">
    <title>gmane.lisp.guile.gtk</title>
    <link>http://blog.gmane.org/gmane.lisp.guile.gtk</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/818"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/801"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/794"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/793"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/788"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/781"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/780"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/775"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/773"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/772"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/769"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/768"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/765"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/763"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/758"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/755"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/754"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/751"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/746"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.lisp.guile.gtk/743"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/818">
    <title>guile-gnome . problems getting started</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/818</link>
    <description>hi everybody,

im currently trying to use guile-gnome.
guile-gnome 2.16.1
guile 1.8.5

after a day work to get all the dependencies installed,
i now fail getting through this gobject tutorial:
http://www.gnu.org/software/guile-gnome/docs/gobject/html/gnome-gobject.html

btw, whoever is responsible, please dont let needed modules be mentioned 
in the explanation text;
show it like other code snippets.
i have a hard time with this inconsistency. if it even is one.

heres what i get. after loading "(gnome gobject)" and "(gnome gtk)",
mentioned in the explanations, it breaks with:

---
WARNING: (gnome gtk): imported module (gnome gobject generics) overrides 
core binding `connect'
WARNING: (gnome gtk): `re-export-modules' imported from both (gnome 
gobject utils) and (gnome gw support modules)
Backtrace:
In unknown file:
   ?: 47* (if (or # #) (try-load-module name))
   ?: 48  [try-load-module (gnome gw gdk)]
   ?: 49  (or (begin (try-module-linked name)) (try-module-autoload 
name) ...)
   ?: 50* [try-module-autoload (gnome gw gdk)]
   ?: 51  (let* (# # # #) (resolve-module dir-hint-module-name #f) (and 
# #))
    ...
   ?: 52  (letrec ((load-file #)) (dynamic-wind (lambda () #) (lambda () 
#) ...) ...)
   ?: 53* [dynamic-wind #&lt;procedure #f ()&gt; #&lt;procedure #f ()&gt; 
#&lt;procedure #f ()&gt;]
   ?: 54* [#&lt;procedure #f ()&gt;]
   ?: 55* (let* ((file #)) (cond (# =&gt; #) (# =&gt; #)))
   ?: 56  [#&lt;procedure #f (full)&gt; 
"/usr/share/guile-gnome-2/gnome/gw/gdk.scm"]
   ?: 57  [with-fluid* #&lt;fluid 7&gt; #f #&lt;procedure #f ()&gt;]
   ?: 58* [#&lt;procedure #f ()&gt;]
   ?: 59* [load-file #&lt;primitive-procedure primitive-load&gt; ...]
   ?: 60* [save-module-excursion #&lt;procedure #f ()&gt;]
   ?: 61  (let (# #) (dynamic-wind # thunk #))
   ?: 62  [dynamic-wind #&lt;procedure #f ()&gt; #&lt;procedure #f ()&gt; 
#&lt;procedure #f ()&gt;]
   ?: 63* [#&lt;procedure #f ()&gt;]
   ?: 64* [primitive-load "/usr/share/guile-gnome-2/gnome/gw/gdk.scm"]
In /usr/share/guile-gnome-2/gnome/gw/gdk.scm:
  11: 65* [dynamic-call "gw_init_wrapset_gnome_gdk" ...
  13: 66* [dynamic-link "libgw-guile-gnome-gdk"]

/usr/share/guile-gnome-2/gnome/gw/gdk.scm:13:3: In procedure 
dynamic-link in expression (dynamic-link "libgw-guile-gnome-gdk"):
/usr/share/guile-gnome-2/gnome/gw/gdk.scm:13:3: file: 
"libgw-guile-gnome-gdk", message: "file not found"
---
---
bash-3.2$ find /usr/lib/ -name libgw-guile-gnome-gdk*
/usr/lib/guile-gnome-2/libgw-guile-gnome-gdk.so.0.0.0
/usr/lib/guile-gnome-2/libgw-guile-gnome-gdk.la
/usr/lib/guile-gnome-2/libgw-guile-gnome-gdk.so
/usr/lib/guile-gnome-2/libgw-guile-gnome-gdk.so.0
---

previously exporting 'GUILE_LOAD_PATH' with '/usr/lib/guile-gnome-2/' 
doesnt help


ideas to solve this?
any help greatly appreciated
</description>
    <dc:creator>53</dc:creator>
    <dc:date>2008-09-18T21:20:52</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/801">
    <title>the hue of death: setting color property crashes application</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/801</link>
    <description>In the latest guile-gnome, setting a "color" property can cause a crash:

G_SLICE=debug-blocks guile-gnome-2
GSlice: MemChecker: attempt to release non-allocated block: 0x81a50a8 size=12
Aborted

Without 'debug-blocks', the crash is delayed, but will happen
eventually because the heap is corrupted.

The cause is a GdkColor* being allocated with g_new0(), but freed with
g_slice_free1() rather than g_free():

- scm_scm_to_gdk_color() allocates a GdkColor* using g_new0().
- The new GdkColor* is packaged into a GValue*
- g_object_set_property() is called
- scm_set_gobject_property calls g_value_unset() on the GValue*
- g_value_unset() calls gdk_color_free() which calls g_slice_free1()

gdk_color_free() switched from using g_free() to g_slice_free1() with gtk+-2.10.

Changing scm_scm_to_gdk_color() to use g_slice_new0() makes the bug go
away, but I don't like that solution because it sets things up for
another bug if future versions of GDK switch to use g_frobnitz_free()
or whatever.

It would be better to use a gdk_color_new() function, but
unfortunately there is none in GDK.  One can easily be made, though,
from gdk_color_copy().  The attached patch does that (and fixes the
crash).

A similar issue may affect scm_scm_to_gdk_rectangle().

</description>
    <dc:creator>gregory benison</dc:creator>
    <dc:date>2008-07-28T15:43:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/794">
    <title>guile-gnome-glib build error</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/794</link>
    <description>Hi,

Trying to build guile-gnome-platform from bzr i got the following error:

...
Making all in glib
make[4]: Entering directory `/home/ak/my/dev/extern/guile/guile-gnome-platform/glib/doc/glib'
...
guile-gnome-glib.texi:7: &lt; at &gt;include `version.texi': No such file or directory.
guile-gnome-glib.texi:48: warning: undefined flag: VERSION.
guile-gnome-glib.texi:49: warning: undefined flag: UPDATED.
guile-gnome-glib.texi:71: warning: undefined flag: VERSION.
guile-gnome-glib.texi:72: warning: undefined flag: UPDATED.
...

Best wishes
Andre
</description>
    <dc:creator>Andre Kuehne</dc:creator>
    <dc:date>2008-07-19T10:23:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/793">
    <title>completion on guile-gnome symbols</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/793</link>
    <description>Hi,

is there a way to get completion on all guile-gnome-* symbols?

 &gt; guile
guile&gt; (use-modules (oop goops) (gnome gobject) (gnome gtk))
WARNING: (gnome gtk): imported module (gnome gobject generics) overrides core binding `connect'
WARNING: (gnome gtk): `re-export-modules' imported from both (gnome gobject utils) and (gnome gw 
support modules)
WARNING: (gnome gw generics): imported module (gnome gobject generics) overrides core binding `connect'
guile&gt; &lt;gtk-
&lt;gtk-binding-set*&gt;  &lt;gtk-object&gt;        &lt;gtk-text-buffer&gt;   &lt;gtk-tree-store&gt;
&lt;gtk-list-store&gt;    &lt;gtk-radio-group*&gt;  &lt;gtk-tree-iter&gt;
guile&gt; &lt;gtk-

As you can see there is only a limited number of gtk-types found by completion.

I believe this has something to do with export-all-lazy! and tried to trick it
into (module-export! mod symbols), but didn't succeed.

Best wishes
Andre
</description>
    <dc:creator>Andre Kuehne</dc:creator>
    <dc:date>2008-07-18T19:21:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/788">
    <title>[ANN] Stable Guile-Gnome-Platform 2.16.1 released</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/788</link>
    <description>Greetings to hackers of the good hack,

After seven years of development by a varied and motley crew, we are
pleased and relieved to finally announce the first^Wsecond API- and
ABI-stable release of guile-gnome-platform, version 2.16.0^W2.16.1.

Guile-gnome-platform 2.16.1 may be downloaded from:

  http://ftp.gnu.org/pub/gnu/guile-gnome/guile-gnome-platform/guile-gnome-platform-2.16.1.tar.gz

Version 2.16.0 was released without publicity. 2.16.1 is a bugfix
release, but those interested in history can grab older tarballs in that
same directory:

  http://ftp.gnu.org/pub/gnu/guile-gnome/guile-gnome-platform/


About guile-gnome-platform
==========================

Guile-gnome-platform is a binding between Guile Scheme and the Gnome
stack of libraries. It is API- and ABI- stable.

There are several things that are the awesome about this code:

  * It's fully integrated!
    Instances of GObject are objects in Scheme; you can query their
    properties, class hierarchies, etc at runtime. You can derive new
    types yourself, with signals, properties, and the like. Good stuff!

  * It's fully documented!
    Start with the tutorial-like docs for the core GObject wrapper:
      http://www.gnu.org/software/guile-gnome/docs/gobject/html/gnome-gobject.html
    Then branch out into individual modules:    
      http://www.gnu.org/software/guile-gnome/docs/

  * Fully extensible!
    Guile-Gnome-Platform also provides a good base off of which to bind
    other libraries based on GLib. For example, Guile-Clutter binds
    almost all of the new Clutter library, with documentation, and most
    of that work was done in a day.

  * Stable!
    Write once, run anywhen! Guile-Gnome's API and ABI will never be
    changed incompatibly.

  * Scheme!
    You will be assimilated, or alternately, gnawed to death by
    fingernail clippings.


Changes
=======

packaging changes
-----------------
* Removed the "docs" module; its content, the tutorial, is now folded
  into the documentation for all of the relevant modules (e.g. GLib,
  GTK+, CORBA, etc.)

* Changelogs have all been archived to ChangeLog.pre-2.16, because now
  we will just use revision control logs.

* Suppress some automake warnings.

* Add guile-clutter to the set of configurable packages.

atk
---
* Improved documentation.

cairo
-----
* New platform release, no change.

corba
-----
* Improved documentation, folding the tutorial text in to the (gnome
  corba) module commentary.

* Removed a printf.

defs
----
* New platform release, no change.

gconf
-----
* Imroved documentation, with example.

* Fixed a bug regarding GConfClient notification.

glib
----
* Improved documentation.

* Build process is slightly less noisy.

* Recognize GInitiallyUnowned as a sinkable object.

This doesn't affect e.g. GTK+, for which we already recognize GtkObject
as sinkable, but it does affect e.g. Clutter.

* Don't error when constructing parameter types of which we are unaware.

Affects e.g. ClutterUnit parameters; the precise nature of this fix will
change in the future.
  
* Accept integers as init values for &lt;gchar&gt; or &lt;guchar&gt; values.

* Bugfix for custom-wrapped boxed values, like GdkRectangle.

* Fix regressions on x86-64.

gnome-vfs
---------
* Improved documentation, with some example code.

gtk
---
* Improved documentation, merging in content from the tutorial into the
  main GTK+ docs.

libglade
--------
* Improved documentation, with an example.

libgnome
--------
* Improved documentation.

libgnomecanvas
--------------
* Improved documentation.

libgnomeui
----------
* Improved documentation.

pango
-----
* Added (gnome pangocairo) module, along with documentation.

</description>
    <dc:creator>Andy Wingo</dc:creator>
    <dc:date>2008-07-03T16:49:46</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/781">
    <title>stability and testing</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/781</link>
    <description>Hey folks,

Just another note to say that I'd appreciate testing of the latest
guile-gnome-platform. Pushes to Sid and Rawhide would be appreciated,
and bug reports if the builds don't work. Thanks! In the meantime I will
entertain myself with guile-vm :)

Andy
</description>
    <dc:creator>Andy Wingo</dc:creator>
    <dc:date>2008-05-12T18:31:32</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/780">
    <title>[ann] guile-gnome-platform 2.15.98 released</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/780</link>
    <description>Greetings, disciples of Lambda: The Ultimate Cult,

I am pleased to announce the release of guile-gnome-platform version
2.15.98.

guile-gnome-platform 2.15.98 may be downloaded from:
http://ftp.gnu.org/pub/gnu/guile-gnome/guile-gnome-platform/guile-gnome-platform-2.15.98.tar.gz


About guile-gnome-platform
==========================

guile-gnome-platform is a binding between Guile Scheme and the Gnome
stack of libraries.

This release is a part of the unstable 2.15 series, which aims to wrap
the libraries in the Gnome Developer Platform at version 2.16. It is
unstable, but 2.16.0 will be stable.

guile-gnome-platform 2.15.98 is a preview for 2.16.0. If everything goes
right, something very close to this release will be pushed as 2.16.0
within a couple weeks.

For that reason, it's *very important* to test this one as widely as
possible, because hopefully we can get some nice buzz about the upcoming
stable release, and it would be good if we caught and fixed any problems
before they turn into someone's first impression.

The so-called API_VERSION of guile-gnome has been bumped to 2 (from 0),
so your code will need to "link" to it that way. See the glib notes for
more details.


Changes
=======

packaging changes
-----------------
* Formally require Guile 1.8, as has been the case for a while now.

* Bump the API_VERSION to 2, as a test before going stable.

This will change all library names, pkg-config names, installed header
names, etc. (use-modules (gnome-0)) in user code should be changed to
(use-modules (gnome-2)). guile-gnome-0 is now guile-gnome-2.

The purpose of this change is to shake out any bugs in the API_VERSION
mechanism. The intention is for the next release to be 2.16.0, with
API_VERSION=2.

atk
---
* Documentation updated.

cairo
-----
* New platform release, no change.

corba
-----
* New platform release, no change.

defs
----
* New platform release, no change.

docs
----
* New platform release, no change.

gconf
-----
* Documentation updated.

* Don't use API deprecated in Guile 1.8.

glib
----
* API changes: Made gtype-interface-destroy! public. Removed the
  terrible %especify-metaclass! as it is not used.

* Documentation updated.

* Don't use API deprecated in Guile 1.8.

* A few bugfixes after the large changes in 2.15.97.

gnome-vfs
---------
* Documentation updated.

* Don't use API deprecated in Guile 1.8.

gtk
---
* Documentation updated.

* Don't use API deprecated in Guile 1.8.

* Remove special wrapper for &lt;gtk-message-dialog&gt;, as GTK+ 2.10 has
  enough of a gobject property interface.

libglade
--------
* Documentation updated.

libgnome
--------
* Documentation updated.

* Don't use API deprecated in Guile 1.8.

libgnomecanvas
--------------
* Documentation updated.

* Don't use API deprecated in Guile 1.8.

libgnomeui
----------
* Documentation updated.

pango
-----
* Documentation updated.

* Don't use API deprecated in Guile 1.8.


Peace,

Andy
</description>
    <dc:creator>Andy Wingo</dc:creator>
    <dc:date>2008-04-25T13:35:31</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/775">
    <title>successful reports with new 2.15.97?</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/775</link>
    <description>Hi,

Can anyone confirm that their applications work with the new
guile-gnome-platform 2.15.97?

Thanks,

Andy
</description>
    <dc:creator>Andy Wingo</dc:creator>
    <dc:date>2008-04-20T10:48:05</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/773">
    <title>[ann] guile-gnome-platform 2.15.97 released</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/773</link>
    <description>Greetings lambda wranglers,

I am pleased to announce the release of guile-gnome-platform version
2.15.97.

guile-gnome-platform 2.15.97 may be downloaded from:
http://ftp.gnu.org/pub/gnu/guile-gnome/guile-gnome-platform/guile-gnome-platform-2.15.97.tar.gz


About guile-gnome-platform
==========================

guile-gnome-platform is a binding between Guile Scheme and the Gnome
stack of libraries.

This release is a part of the unstable 2.15 series, which aims to wrap
the libraries in the Gnome Developer Platform at version 2.16. It is
unstable, but 2.16.0 will be stable.

Around December, I realized that our core (gnome gobject) presented a
needlessly complicated interface because of the multiple layers at which
we wrapped C objects: &lt;gtype&gt;, &lt;%gtype-class&gt;, and &lt;gtype-class&gt;;
&lt;%gtype-instance&gt; and &lt;gtype-instance&gt;; etc. So for this release I
rewrote the core pointer-binding machinery to collapse those types,
resulting in the removal of lots of redundant, and little-used API.

If this sounds like it's scary, it's really not -- very little
application code changes after this; basically you just substitute
GTypes for classes, e.g. gtype:foo changes to &lt;foo&gt;. But still, sorry
for the churn. It's a necessary step that takes us closer to a stable
release.

One caveat: I haven't updated the documentation yet. Wrappers like
(gnome gtk) should be the same, though, it's just (gnome gobject) that
will be updated.

Call me an optimist, but at this point I think that 2.16.0 could happen
within a month.

Please see the notes for the changes in the glib wrapper, and test your
code. Thanks!


Changes
=======

packaging changes
-----------------
* No user-visible changes.

atk
---
* New platform release, no change.

cairo
-----
* New platform release, no change.

corba
-----
* Adapt to changes in (gnome gobject). corba-typecode-&gt;gtype-class is
  the new name for corba-typecode-&gt;gtype.

* Compilation fix if BONOBO_EX is already defined.

defs
----
* New platform release, no change.

docs
----
* New platform release, no change.

gconf
-----
* Adapt to changes in (gnome gobject).

glib
----
* Major rewrite of low-level (gnome gobject) code. 

GTypes are no longer exposed to Scheme. Instead, types are represented
directly as &lt;gtype-class&gt; instances.

Internally, &lt;gtype-class&gt; instances know their GType, because is stored
in a &lt;read-only-slot&gt;, which stores a raw (untagged) word -- the perfect
size for a GType.

Similarly, I also removed the need for &lt;%gtype-instance&gt; smobs as well,
through interesting trickery: the GOOPS objects directly store the
GTypeInstance* pointer in a &lt;read-only-slot&gt;. The trickery is that we
can be notified when the struct is collected, via monkeypatching the
&lt;gtype-class&gt; objects to free via a custom function,
scm_gtype_instance_struct_free. This allows us to unref the object.

The same strategy was applied to GValue wrappers. With this change,
Guile-GNOME no longer holds C data in SMOBs.

Removing the &lt;gtype&gt;, &lt;%gtype-class&gt;, &lt;%gtype-instance&gt;, and primitive
&lt;gvalue&gt; types has allowed for the removal of much useless,
non-orthogonal glue API.

Signals and parameters are also represented natively with GOOPS objects,
not structures. There is no overhead for this, as GOOPS objects are in
fact structures, whose VTable is their class.

This is an incompatible change, but one which allows me to commit to a
stable API/ABI, perhaps in the next release.

Please test your programs against this version, so that I can help you
port, and so that we can make sure that the API is fine.

gnome-vfs
---------
* Adapt to changes in (gnome gobject).

gtk
---
* New function wrapper: gtk-widget-get-state.

* Reintroduce gtk-menu-popup wrapper, this time supporting the menu
  positioning function.

* Adapt to changes in (gnome gobject).

* Interface changes: Tree models now deal in &lt;gtype-class&gt; instances,
  now that there are no more GType objects. This applies to the list
  store, tree store, and the generic tree model.

* Make the texinfo viewer understand more kinds of &lt; at &gt;def commands.

libglade
--------
* Adapt to changes in (gnome gobject).

libgnome
--------
* New platform release, no change.

libgnomecanvas
--------------
* Compilation fixes with picky compilers.

libgnomeui
----------
* New platform release, no change.

pango
-----
* New platform release, no change.

</description>
    <dc:creator>Andy Wingo</dc:creator>
    <dc:date>2008-04-10T15:47:15</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/772">
    <title>current (gnome gobject)</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/772</link>
    <description>Hi,

Just a quick note to say that current (gnome gobject) has bugs if the
following patch isn't applied to guile:

diff --git a/INSTALL b/INSTALL
index 5458714..d3c5b40 100644
--- a/INSTALL
+++ b/INSTALL
&lt; at &gt;&lt; at &gt; -2,7 +2,7 &lt; at &gt;&lt; at &gt; Installation Instructions
 *************************
 
 Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006 Free Software Foundation, Inc.
+2006, 2007 Free Software Foundation, Inc.
 
 This file is free documentation; the Free Software Foundation gives
 unlimited permission to copy, distribute and modify it.
&lt; at &gt;&lt; at &gt; -67,6 +67,9 &lt; at &gt;&lt; at &gt; The simplest way to compile this package is:
      all sorts of other programs in order to regenerate files that came
      with the distribution.
 
+  6. Often, you can also type `make uninstall' to remove the installed
+     files again.
+
 Compilers and Options
 =====================
 
diff --git a/libguile/goops.c b/libguile/goops.c
index 8e398e3..abb96ab 100644
--- a/libguile/goops.c
+++ b/libguile/goops.c
&lt; at &gt;&lt; at &gt; -1260,6 +1260,7 &lt; at &gt;&lt; at &gt; slot_definition_using_name (SCM class, SCM slot_name)
 
 static SCM
 get_slot_value (SCM class SCM_UNUSED, SCM obj, SCM slotdef)
+#define FUNC_NAME "%get-slot-value"
 {
   SCM access = SCM_CDDR (slotdef);
   /* Two cases here:
&lt; at &gt;&lt; at &gt; -1270,7 +1271,9 &lt; at &gt;&lt; at &gt; get_slot_value (SCM class SCM_UNUSED, SCM obj, SCM slotdef)
    * we can just assume fixnums here.
    */
   if (SCM_I_INUMP (access))
-    return SCM_SLOT (obj, SCM_I_INUM (access));
+    /* Don't poke at the slots directly, because scm_struct_ref handles the
+       access bits for us. */
+    return scm_struct_ref (obj, access);
   else
     {
       /* We must evaluate (apply (car access) (list obj))
&lt; at &gt;&lt; at &gt; -1287,6 +1290,7 &lt; at &gt;&lt; at &gt; get_slot_value (SCM class SCM_UNUSED, SCM obj, SCM slotdef)
       return scm_eval_body (SCM_CLOSURE_BODY (code), env);
     }
 }
+#undef FUNC_NAME
 
 static SCM
 get_slot_value_using_name (SCM class, SCM obj, SCM slot_name)
&lt; at &gt;&lt; at &gt; -1300,6 +1304,7 &lt; at &gt;&lt; at &gt; get_slot_value_using_name (SCM class, SCM obj, SCM slot_name)
 
 static SCM
 set_slot_value (SCM class SCM_UNUSED, SCM obj, SCM slotdef, SCM value)
+#define FUNC_NAME "%set-slot-value"
 {
   SCM access = SCM_CDDR (slotdef);
   /* Two cases here:
&lt; at &gt;&lt; at &gt; -1310,7 +1315,8 &lt; at &gt;&lt; at &gt; set_slot_value (SCM class SCM_UNUSED, SCM obj, SCM slotdef, SCM value)
    * we can just assume fixnums here.
    */
   if (SCM_I_INUMP (access))
-    SCM_SET_SLOT (obj, SCM_I_INUM (access), value);
+    /* obey permissions bits via going through struct-set! */
+    scm_struct_set_x (obj, access, value);
   else
     {
       /* We must evaluate (apply (cadr l) (list obj value))
&lt; at &gt;&lt; at &gt; -1331,6 +1337,7 &lt; at &gt;&lt; at &gt; set_slot_value (SCM class SCM_UNUSED, SCM obj, SCM slotdef, SCM value)
     }
   return SCM_UNSPECIFIED;
 }
+#undef FUNC_NAME
 
 static SCM
 set_slot_value_using_name (SCM class, SCM obj, SCM slot_name, SCM value)
&lt; at &gt;&lt; at &gt; -1500,10 +1507,15 &lt; at &gt;&lt; at &gt; static SCM
 wrap_init (SCM class, SCM *m, long n)
 {
   long i;
+  scm_t_bits slayout = SCM_STRUCT_DATA (class)[scm_vtable_index_layout];
+  const char *layout = scm_i_symbol_chars (SCM_PACK (slayout));
 
-  /* Set all slots to unbound */
+  /* Set all SCM-holding slots to unbound */
   for (i = 0; i &lt; n; i++)
-    m[i] = SCM_GOOPS_UNBOUND;
+    if (layout[i*2] == 'p')
+      m[i] = SCM_GOOPS_UNBOUND;
+    else
+      m[i] = 0;
 
   return scm_double_cell ((((scm_t_bits) SCM_STRUCT_DATA (class))
    | scm_tc3_struct),
diff --git a/libguile/struct.c b/libguile/struct.c
index c8d34a4..2d36303 100644
--- a/libguile/struct.c
+++ b/libguile/struct.c
&lt; at &gt;&lt; at &gt; -659,7 +659,11 &lt; at &gt;&lt; at &gt; SCM_DEFINE (scm_struct_ref, "struct-ref", 2, 0, 0,
 
   fields_desc = scm_i_symbol_chars (layout);
   layout_len = scm_i_symbol_length (layout);
-  n_fields = data[scm_struct_i_n_words];
+  if (SCM_STRUCT_VTABLE_FLAGS (handle) &amp; SCM_STRUCTF_LIGHT)
+    /* no extra words */
+    n_fields = layout_len / 2;
+  else
+    n_fields = data[scm_struct_i_n_words];
   
   SCM_ASSERT_RANGE(1, pos, p &lt; n_fields);
 
&lt; at &gt;&lt; at &gt; -736,7 +740,11 &lt; at &gt;&lt; at &gt; SCM_DEFINE (scm_struct_set_x, "struct-set!", 3, 0, 0,
 
   fields_desc = scm_i_symbol_chars (layout);
   layout_len = scm_i_symbol_length (layout);
-  n_fields = data[scm_struct_i_n_words];
+  if (SCM_STRUCT_VTABLE_FLAGS (handle) &amp; SCM_STRUCTF_LIGHT)
+    /* no extra words */
+    n_fields = layout_len / 2;
+  else
+    n_fields = data[scm_struct_i_n_words];
 
   SCM_ASSERT_RANGE (1, pos, p &lt; n_fields);
 
diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4
index a72d1dc..5145d01 100644
--- a/m4/gnulib-cache.m4
+++ b/m4/gnulib-cache.m4
&lt; at &gt;&lt; at &gt; -1,4 +1,4 &lt; at &gt;&lt; at &gt;
-# Copyright (C) 2004-2007 Free Software Foundation, Inc.
+# Copyright (C) 2002-2008 Free Software Foundation, Inc.
 #
 # This file is free software, distributed under the terms of the GNU
 # General Public License.  As a special exception to the GNU General

The struct.c patch is the important part. The patch is correct, although
uncommented, and I'll see about pushing it to Guile tomorrow, but I
still need to do some kind of workaround for older guile 1.8.

(gnome gobject) in bzr has quite some changes. I hope to write about
them tomorrow (and thus get them off my plate). If you're curious now,
check the ChangeLog.

Cheers,

Andy
</description>
    <dc:creator>Andy Wingo</dc:creator>
    <dc:date>2008-04-09T23:16:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/769">
    <title>guile-gtk-2.1 with Gtk 2.4.x</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/769</link>
    <description>
FC3 has Gtk 2.4.14.  Is guile-gtk-2.1 supposed to work there?
It configures OK.  But on make, we get:

 gcc -DHAVE_CONFIG_H -I. -I. -I. -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API
-pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include
-I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2
-I/usr/include/freetype2/config -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include
-I/y/people/emsley/autobuild/Linux-bunyip.chem.york.ac.uk-pre-release-gtk2/include
-pthread
-I/y/people/emsley/autobuild/Linux-bunyip.chem.york.ac.uk-pre-release-gtk2/include
-pthread -g -O2 -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -pthread
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include
-I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2
-I/usr/include/freetype2/config -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include -c guile-gtk.c  -fPIC -DPIC -o .libs/guile-gtk.o
In file included from guile-gtk.c:35:
guile-gtk.h:213: error: syntax error before '*' token
guile-gtk.c: In function `sgtk_maybe_find_type_info':
guile-gtk.c:452: warning: assignment discards qualifiers from pointer target type
guile-gtk.c: At top level:
guile-gtk.c:2476: error: syntax error before '*' token
guile-gtk.c: In function `sgtk_about_dialog_activate_link_marshal':
guile-gtk.c:2486: error: `about' undeclared (first use in this function)
guile-gtk.c:2486: error: (Each undeclared identifier is reported only once
guile-gtk.c:2486: error: for each function it appears in.)
guile-gtk.c:2494: error: `data' undeclared (first use in this function)
guile-gtk.c: In function `sgtk_find_object_info_from_type':
guile-gtk.c:2689: warning: passing arg 1 of `sgtk_find_object_info' discards
qualifiers from pointer target typemake[2]: *** [guile-gtk.lo] Error 1
make[2]: Leaving directory `/y/people/emsley/compile/guile-gtk-2.1'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/y/people/emsley/compile/guile-gtk-2.1'
make: *** [all] Error 2


IMHO, it should either compile correctly or fail a gtk version test
in configure.

Paul.
</description>
    <dc:creator>Paul Emsley</dc:creator>
    <dc:date>2008-04-02T12:51:52</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/768">
    <title>G-Wrap 1.9.11 released</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/768</link>
    <description>Hi!

I'm pleased to announce G-Wrap 1.9.11; it can be downloaded from
http://www.nongnu.org/g-wrap/.

G-Wrap is a tool (and Guile library) for generating function wrappers
for inter-language calls. It currently only supports generating Guile
wrappers for C functions.

Changes from 1.9.10:

    - Fix `double' return value handling on big-endian platforms.

    - libffi is no longer distributed with g-wrap, as it is available
      as a stand-alone package now (instead of being burried in the
      GCC sources).

Kind Regards, Rotty
</description>
    <dc:creator>Andreas Rottmann</dc:creator>
    <dc:date>2008-03-25T16:13:26</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/765">
    <title>G-Wrap 1.9.10 released</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/765</link>
    <description>Hi!

I'm pleased to announce G-Wrap 1.9.10; it can be downloaded from
http://www.nongnu.org/g-wrap/.

G-Wrap is a tool (and Guile library) for generating function wrappers
for inter-language calls. It currently only supports generating Guile
wrappers for C functions.

Changes from 1.9.9:

    - Fix WCT nullable behaviour for 'new' (i.e. non-compat) wrapsets;
      there is now a SRFI-39 parameter 'gw-wcts-nullable?' controlling
      the nullable behaviour; this parameter is #f by default, and set
      to #t when generating compat wrapsets.

Kind Regards, Rotty
</description>
    <dc:creator>Andreas Rottmann</dc:creator>
    <dc:date>2008-02-16T20:44:31</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/763">
    <title>gtk-menu-popup</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/763</link>
    <description>Hi,

I can't access "gtk-menu-popup" function (either directly or via a
generic "popup" method). Other functions like "gtk-menu-popdown" seem
to be working find. Is it something wrong with my installation?

I've compiled guile-gnome-platform-2.15.96 with g-wrap-1.9.9 and
gtk-2.10.0. Grepping source code for "gtk-menu-popup" does not return
anything but some entries in the documentation.

Cheers,
-r.
</description>
    <dc:creator>a r</dc:creator>
    <dc:date>2008-02-09T00:32:14</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/758">
    <title>Where do I start?</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/758</link>
    <description>I want to build a GUI program in scheme in the Fedora 8 environment, which means
I have guile-gnome-platform-2.15.93.  Five pages into the tutorial I attempt

bash-3.2$ guile-gnome-0
guile&gt; (make &lt;gboolean&gt; #:value #f)

Backtrace:
In standard input:
   1: 0* (make &lt;gboolean&gt; #:value #f)

standard input:1:1: In expression (make &lt;gboolean&gt; #:value ...):
standard input:1:1: Unbound variable: make
ABORT: (unbound-variable)

Perhaps make is in a module I haven't loaded.  Or maybe the tutorial hasn't kept
up with the API which doesn't use make any more.  Or the tutorial is ahead of
the API and make isn't available in this version.  I'm just beginning with this
environment, so I'm clueless.

Where do I go for clue?  What did *you* read to learn this environment?  I'm not
afraid of source code, but which 20 files should I read first?

Your suggestions much appreciated.

    - Stephen P. Schaefer
</description>
    <dc:creator>Stephen P. Schaefer</dc:creator>
    <dc:date>2008-02-03T07:45:37</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/755">
    <title>guile-gtk version 2.1</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/755</link>
    <description>I've uploaded a new guile-gtk version 2.1.  The changes are small,

* Misc additions.
* g_log warning for returning #unspecified from a callback expecting a value.
* GPL version 3.

You can download now from

    ftp://ftp.gnu.org/gnu/guile-gtk/guile-gtk-2.1.tar.gz

And it should hit the mirrors shortly.
Please use a mirror near you; for a full list see

    http://www.gnu.org/order/ftp.html

The guile-gtk home page is

    http://www.gnu.org/software/guile-gtk/

Bug reports to this list, guile-gtk-general&lt; at &gt;gnu.org, please.

If you're wondering if you should use guile-gtk or guile-gnome, the
answer is you should almost certainly use guile-gnome for new work (and
future development work will almost certainly be there), but if you're
satisfied with what's in guile-gtk then keep using it.
</description>
    <dc:creator>Kevin Ryde</dc:creator>
    <dc:date>2007-12-31T00:15:11</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/754">
    <title>gtk-look.el vs guile-gnome</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/754</link>
    <description>For interest, and for yet another gratuitous plug, I've added to my
gtk-look.el a little support for guile-gnome.  The default at point
recognises some "&lt;foo&gt;" class names and you can be on a method name like
get-size and it'll offer all the gtk_foo_get_size funcs in a completions
buffer.

I'm not certain how effective that completions stuff is.  It's good when
the method name is unique, or only a few possibilities, but maybe some
of the long lists like get_size need more.  At any rate it's a start.

http://www.geocities.com/user42_kevin/gtk-look/index.html
</description>
    <dc:creator>Kevin Ryde</dc:creator>
    <dc:date>2007-12-31T00:04:45</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/751">
    <title>another round of small platform, libwnck patches</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/751</link>
    <description>Hi,

Another round of small fixes.  With these I'm able to really
get my keywise hack going!  I finally found how to detect which
menu-item to bind the shortcut to: it's the one that has state
'prelight.  Please pull from urls below.  Hope I didn't miss a 
module.


Implement gtk-widget-get-state, makes reading of widget state
possible.  

    http://lilypond.org/~janneke/vc/guile-gnome/gtk

Compile fix

   http://lilypond.org/~janneke/vc/guile-gnome/libgnomecanvas

Remove unused file gtk-extrafuncs.defs

    http://lilypond.org/~janneke/vc/guile-gnome/defs

Add target to automate updating and update to 2.16.1 interface

    http://lilypond.org/~janneke/vc/guile-gnome/libwnck

Add missing ignores add  --create-prefix in push-packages.  Helps
contributors :-)

    http://lilypond.org/~janneke/vc/guile-gnome

Greetings,
Jan.

</description>
    <dc:creator>Jan Nieuwenhuizen</dc:creator>
    <dc:date>2007-12-17T19:03:02</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/746">
    <title>[Guile-GTK] Use `const'-qualified string arguments when appropriate.</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/746</link>
    <description>From: Ludovic CourtÃ¨s &lt;ludo&lt; at &gt;gnu.org&gt;

* gtk-support.c (sgtk_gdk_gc_values_fill,
  gdk_string_to_compound_text_interp): Use `const'-qualified string
  arguments.

* gtk-compat.c (gdk_color_parse_interp): Likewise.

* gtk-support.c (gtk_editable_insert_text_scm): Likewise.

* guile-gtk.c (sgtk_try_missing_type, sgtk_maybe_find_type_info,
  sgtk_scm2enum, sgtk_scm2flags, sgtk_senum2scm, sgtk_type_from_name,
  sgtk_find_object_info, gtk_class_new, sgtk_signal_emit,
  sgtk_register_glue): Likewise.

* guile-gtk.h (sgtk_type_info)[name]: Use `const char *'.
  Update function prototypes.
---
 gdk-support.c |    6 +++---
 gtk-compat.c  |    2 +-
 gtk-support.c |    2 +-
 guile-gtk.c   |   24 ++++++++++++------------
 guile-gtk.h   |   26 +++++++++++++-------------
 5 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/gdk-support.c b/gdk-support.c
index cbedeb8..ef08d2a 100644
--- a/gdk-support.c
+++ b/gdk-support.c
&lt; at &gt;&lt; at &gt; -209,7 +209,7 &lt; at &gt;&lt; at &gt; SCM_KEYWORD (kw_ts_y_origin,        "ts-y-origin");
 /* This is a separate function so it can be shared in the future by
    gtk-gc-get.  */
 GdkGCValuesMask
-sgtk_gdk_gc_values_fill (char *func_name, int argnum,
+sgtk_gdk_gc_values_fill (const char *func_name, int argnum,
                          GdkGCValues *values, SCM rest)
 {
   GdkGCValuesMask mask;
&lt; at &gt;&lt; at &gt; -1835,8 +1835,8 &lt; at &gt;&lt; at &gt; gdk_text_property_to_text_list_interp (GdkAtom encoding, gint format, SCM text)
 #undef FUNCNAME
 
 gint
-gdk_string_to_compound_text_interp (char *str, GdkAtom *encoding, gint *format,
-                                    SCM *textp)
+gdk_string_to_compound_text_interp (const char *str, GdkAtom *encoding,
+    gint *format, SCM *textp)
 {
   guchar *ctext;
   gint ret, length;
diff --git a/gtk-compat.c b/gtk-compat.c
index 29b0988..f880995 100644
--- a/gtk-compat.c
+++ b/gtk-compat.c
&lt; at &gt;&lt; at &gt; -44,7 +44,7 &lt; at &gt;&lt; at &gt; gtk_menu_popup_interp (GtkMenu *menu,
 }
 
 GdkColor*
-gdk_color_parse_interp (char *spec)
+gdk_color_parse_interp (const char *spec)
 {
   GdkColor color;
   return gdk_color_parse (spec, &amp;color) ? gdk_color_copy (&amp;color) : NULL;
diff --git a/gtk-support.c b/gtk-support.c
index 2d114fc..90c4e3e 100644
--- a/gtk-support.c
+++ b/gtk-support.c
&lt; at &gt;&lt; at &gt; -167,7 +167,7 &lt; at &gt;&lt; at &gt; gtk_style_base_gc (GtkStyle *style, GtkStateType state)
 
 int
 gtk_editable_insert_text_scm (GtkEditable *editable,
-      gchar       *text,
+      const gchar *text,
       int          position)
 {
   gtk_editable_insert_text (editable, text, strlen (text), &amp;position);
diff --git a/guile-gtk.c b/guile-gtk.c
index 78788f5..a8be81e 100644
--- a/guile-gtk.c
+++ b/guile-gtk.c
&lt; at &gt;&lt; at &gt; -387,7 +387,7 &lt; at &gt;&lt; at &gt; sgtk_register_type_infos_gtk (GtkTypeInfo **infos)
    entirely.  */
 
 static GtkType
-sgtk_try_missing_type (char *name)
+sgtk_try_missing_type (const char *name)
 {
   static sgtk_type_info missing[] = {
     {NULL, GTK_TYPE_NONE, NULL}
&lt; at &gt;&lt; at &gt; -398,7 +398,7 &lt; at &gt;&lt; at &gt; sgtk_try_missing_type (char *name)
     if (!strcmp (m-&gt;name, name))
       {
 GtkTypeInfo info = { NULL };
-info.type_name = name;
+info.type_name = (char *) name;
 return gtk_type_unique (m-&gt;type, &amp;info);
       }
 
&lt; at &gt;&lt; at &gt; -439,7 +439,7 &lt; at &gt;&lt; at &gt; sgtk_maybe_find_type_info (GtkType type)
 {
   sgtk_type_info *info;
   type_infos *infos;
-  char *name;
+  const char *name;
   int i;
 
   for (i = 0; i &lt; n_type_info_tab; i++)
&lt; at &gt;&lt; at &gt; -1012,7 +1012,7 &lt; at &gt;&lt; at &gt; sgtk_enum2scm (gint val, sgtk_enum_info *info)
 }
 
 gint
-sgtk_scm2enum (SCM obj, sgtk_enum_info *info, int pos, char *sname)
+sgtk_scm2enum (SCM obj, sgtk_enum_info *info, int pos, const char *sname)
 {
   int rval;
 
&lt; at &gt;&lt; at &gt; -1072,7 +1072,7 &lt; at &gt;&lt; at &gt; sgtk_flags2scm (gint val, sgtk_enum_info *info)
 }
 
 gint
-sgtk_scm2flags (SCM obj, sgtk_enum_info *info, int pos, char *sname)
+sgtk_scm2flags (SCM obj, sgtk_enum_info *info, int pos, const char *sname)
 {
   if (scm_is_pair (obj) || scm_is_null (obj))
     {
&lt; at &gt;&lt; at &gt; -1163,7 +1163,7 &lt; at &gt;&lt; at &gt; sgtk_valid_senum (SCM obj, sgtk_senum_info *info)
 }
 
 SCM
-sgtk_senum2scm (char *val, sgtk_senum_info *info)
+sgtk_senum2scm (const char *val, sgtk_senum_info *info)
 {
   int i;
   for (i = 0; i &lt; info-&gt;n_literals; i++)
&lt; at &gt;&lt; at &gt; -1454,7 +1454,7 &lt; at &gt;&lt; at &gt; all_type_infos_find (const char *name)
    we search among the type names we have in all_type_infos and initialize
    the type with the init_func in our sgtk_type_info.  */
 GtkType
-sgtk_type_from_name (char *name)
+sgtk_type_from_name (const char *name)
 {
   GType type = g_type_from_name (name);
   if (type == GTK_TYPE_INVALID)
&lt; at &gt;&lt; at &gt; -2676,7 +2676,7 &lt; at &gt;&lt; at &gt; sgtk_gtk_target_entry_free (GtkTargetEntry* entry)
 /* The SCM_PROC for the exported functions is in gtk-support.c to have
    it be snarfed for sgtk_init_gtk_support. */
 
-sgtk_object_info *sgtk_find_object_info (char *name);
+sgtk_object_info *sgtk_find_object_info (const char *name);
 
 sgtk_object_info *
 sgtk_find_object_info_from_type (GtkType type)
&lt; at &gt;&lt; at &gt; -2690,7 +2690,7 &lt; at &gt;&lt; at &gt; sgtk_find_object_info_from_type (GtkType type)
 }
 
 sgtk_object_info *
-sgtk_find_object_info (char *name)
+sgtk_find_object_info (const char *name)
 {
   GtkType type, parent;
   sgtk_object_info *info;
&lt; at &gt;&lt; at &gt; -2982,7 +2982,7 &lt; at &gt;&lt; at &gt; sgtk_gtk_object_get (SCM scm_obj, SCM argsym)
 /* Creating new object classes */
 
 GtkType
-gtk_class_new (GtkType parent_type, gchar *name)
+gtk_class_new (GtkType parent_type, const gchar *name)
 {
   GTypeInfo *info;
   GTypeQuery parent_query;
&lt; at &gt;&lt; at &gt; -3073,7 +3073,7 &lt; at &gt;&lt; at &gt; gtk_signal_new_generic (const gchar     *name,
 }
 
 SCM
-sgtk_signal_emit (GObject *obj, char *name, SCM scm_params)
+sgtk_signal_emit (GObject *obj, const char *name, SCM scm_params)
 {
   static char func_name[] = "gtk-signal-emit";
   
&lt; at &gt;&lt; at &gt; -3189,7 +3189,7 &lt; at &gt;&lt; at &gt; sgtk_standalone_p ()
 }
 
 void
-sgtk_register_glue (char *name, void (*func)(void))
+sgtk_register_glue (const char *name, void (*func)(void))
 {
   scm_c_register_extension (NULL, name, (void (*)(void *))func, NULL);
 }
diff --git a/guile-gtk.h b/guile-gtk.h
index 89d0d79..d28a668 100644
--- a/guile-gtk.h
+++ b/guile-gtk.h
&lt; at &gt;&lt; at &gt; -25,7 +25,7 &lt; at &gt;&lt; at &gt;
 typedef guint32 sgtk_timestamp;
 
 typedef struct _sgtk_type_info {
-  char *name;
+  const char *name;
   GtkType type;
   SCM (*conversion) (SCM);
   GtkType (*init_func) ();
&lt; at &gt;&lt; at &gt; -114,7 +114,7 &lt; at &gt;&lt; at &gt; SCM sgtk_make_cblk (void *p, size_t len);
 void sgtk_register_type_infos (sgtk_type_info **infos);
 void sgtk_register_type_infos_gtk (GtkTypeInfo **infos);
 sgtk_type_info *sgtk_get_type_info (guint type_seqno);
-GtkType sgtk_type_from_name (char *name);
+GtkType sgtk_type_from_name (const char *name);
 
 SCM sgtk_wrap_gtkobj (GObject *obj);
 SCM sgtk_wrap_gtkobj_nocopy (GObject *obj);
&lt; at &gt;&lt; at &gt; -127,14 +127,14 &lt; at &gt;&lt; at &gt; int sgtk_enum_flags_bin_search (SCM key, sgtk_enum_info *info, int *rval);
 
 int sgtk_valid_enum (SCM obj, sgtk_enum_info*);
 SCM sgtk_enum2scm (gint val, sgtk_enum_info*);
-gint sgtk_scm2enum (SCM obj, sgtk_enum_info*, int pos, char *sname);
+gint sgtk_scm2enum (SCM obj, sgtk_enum_info*, int pos, const char *sname);
 
 int sgtk_valid_flags (SCM obj, sgtk_enum_info*);
 SCM sgtk_flags2scm (gint val, sgtk_enum_info*);
-gint sgtk_scm2flags (SCM obj, sgtk_enum_info*, int pos, char *sname);
+gint sgtk_scm2flags (SCM obj, sgtk_enum_info*, int pos, const char *sname);
 
 int sgtk_valid_senum (SCM obj, sgtk_senum_info*);
-SCM sgtk_senum2scm (char *val, sgtk_senum_info*);
+SCM sgtk_senum2scm (const char *val, sgtk_senum_info*);
 char *sgtk_scm2senum (SCM obj, sgtk_senum_info*);
 
 SCM sgtk_boxed2scm (gpointer ptr, sgtk_boxed_info*, int copyp);
&lt; at &gt;&lt; at &gt; -232,7 +232,7 &lt; at &gt;&lt; at &gt; void sgtk_scm2ret (GtkArg *a, SCM obj);
 void sgtk_throw_gerror (const char *func_name, GError *gerr);
 
 sgtk_object_info *sgtk_find_object_info_from_type (GtkType type);
-sgtk_object_info *sgtk_find_object_info (char *name);
+sgtk_object_info *sgtk_find_object_info (const char *name);
 
 SCM sgtk_color_conversion (SCM color);
 SCM sgtk_font_conversion (SCM color);
&lt; at &gt;&lt; at &gt; -241,7 +241,7 &lt; at &gt;&lt; at &gt; void sgtk_set_standalone (int flag);
 int sgtk_is_standalone ();
 SCM sgtk_standalone_p ();
 
-void sgtk_register_glue (char *name, void (*func)(void));
+void sgtk_register_glue (const char *name, void (*func)(void));
 #define SGTK_REGISTER_GLUE(func) sgtk_register_glue (#func, func)
 
 void sgtk_init_gdk_support (void);
&lt; at &gt;&lt; at &gt; -339,7 +339,7 &lt; at &gt;&lt; at &gt; char *gdk_wcstombs_interp (GdkWChar src[], int count);
 
 SCM gdk_mbstowcs_interp (const char *src);
 
-GdkGCValuesMask sgtk_gdk_gc_values_fill (char *func_name, int argnum,
+GdkGCValuesMask sgtk_gdk_gc_values_fill (const char *func_name, int argnum,
                                          GdkGCValues *values, SCM rest);
 GdkGC *gdk_gc_new_with_values_interp (GdkWindow *window, SCM rest);
 SCM gdk_gc_get_values_interp (GdkGC *gc);
&lt; at &gt;&lt; at &gt; -347,7 +347,7 &lt; at &gt;&lt; at &gt; SCM gdk_gc_get_values_interp (GdkGC *gc);
 guint32 gdk_get_leader_window_id ();
 
 int gtk_editable_insert_text_scm (GtkEditable *editable,
-                                  gchar *text, int position);
+                                  const gchar *text, int position);
 
 void gdk_draw_text_interp (GdkDrawable *drawable, GdkFont *font, GdkGC *gc,
    gint x, gint y, SCM text);
&lt; at &gt;&lt; at &gt; -376,14 +376,14 &lt; at &gt;&lt; at &gt; void gtk_menu_popup_interp (GtkMenu *menu,
     guint32 activate_time);
 
 GdkColor *gdk_color_new (void);
-GdkColor *gdk_color_parse_interp (char *spec);
+GdkColor *gdk_color_parse_interp (const char *spec);
 GdkColor *gtk_style_get_white_interp (GtkStyle *style);
 
 void gtk_list_append_item (GtkList *list, GtkListItem *item);
 void gtk_list_prepend_item (GtkList *list, GtkListItem *item);
 
 gboolean gtk_type_get_info (GtkType type, GtkTypeInfo *info);
-GtkType gtk_class_new (GtkType parent_type, gchar *name);
+GtkType gtk_class_new (GtkType parent_type, const gchar *name);
 guint
 gtk_signal_new_generic (const gchar     *name,
 GtkSignalRunType signal_flags,
&lt; at &gt;&lt; at &gt; -391,7 +391,7 &lt; at &gt;&lt; at &gt; gtk_signal_new_generic (const gchar     *name,
 GtkType          return_type,
 guint            nparams,
 GtkType         *params);
-SCM sgtk_signal_emit (GObject *obj, char *name, SCM scm_args);
+SCM sgtk_signal_emit (GObject *obj, const char *name, SCM scm_args);
 void gtk_signal_set_class_function_full (GtkType            type,
  const gchar       *signal,
  GtkSignalFunc      func,
&lt; at &gt;&lt; at &gt; -505,7 +505,7 &lt; at &gt;&lt; at &gt; void gdk_property_change_interp (GdkWindow *window,
 
 SCM gdk_text_property_to_text_list_interp (GdkAtom encoding, gint format,
    SCM text);
-gint gdk_string_to_compound_text_interp (char *str, GdkAtom *encoding,
+gint gdk_string_to_compound_text_interp (const char *str, GdkAtom *encoding,
                                          gint *format, SCM *textp);
 SCM gdk_property_get_interp (GdkWindow *window, GdkAtom property, GdkAtom type,
      gulong offset, gulong length, int pdelete,
</description>
    <dc:creator>Ludovic Courtès</dc:creator>
    <dc:date>2007-11-11T12:58:45</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/743">
    <title>[Guile-GTK] Use `const'-qualified string arguments when appropriate.</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/743</link>
    <description>From: Ludovic CourtÃ¨s &lt;ludo&lt; at &gt;gnu.org&gt;

* gtk-support.c (sgtk_gdk_gc_values_fill,
  gdk_string_to_compound_text_interp): Use `const'-qualified string
  arguments.

* gtk-compat.c (gdk_color_parse_interp): Likewise.

* gtk-support.c (gtk_editable_insert_text_scm): Likewise.

* guile-gtk.c (sgtk_try_missing_type, sgtk_maybe_find_type_info,
  sgtk_scm2enum, sgtk_scm2flags, sgtk_senum2scm, sgtk_type_from_name,
  sgtk_find_object_info, gtk_class_new, sgtk_signal_emit,
  sgtk_register_glue): Likewise.

* guile-gtk.h (sgtk_type_info)[name]: Use `const char *'.
  Update function prototypes.
---
 gdk-support.c |    6 +++---
 gtk-compat.c  |    2 +-
 gtk-support.c |    2 +-
 guile-gtk.c   |   24 ++++++++++++------------
 guile-gtk.h   |   26 +++++++++++++-------------
 5 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/gdk-support.c b/gdk-support.c
index cbedeb8..ef08d2a 100644
--- a/gdk-support.c
+++ b/gdk-support.c
&lt; at &gt;&lt; at &gt; -209,7 +209,7 &lt; at &gt;&lt; at &gt; SCM_KEYWORD (kw_ts_y_origin,        "ts-y-origin");
 /* This is a separate function so it can be shared in the future by
    gtk-gc-get.  */
 GdkGCValuesMask
-sgtk_gdk_gc_values_fill (char *func_name, int argnum,
+sgtk_gdk_gc_values_fill (const char *func_name, int argnum,
                          GdkGCValues *values, SCM rest)
 {
   GdkGCValuesMask mask;
&lt; at &gt;&lt; at &gt; -1835,8 +1835,8 &lt; at &gt;&lt; at &gt; gdk_text_property_to_text_list_interp (GdkAtom encoding, gint format, SCM text)
 #undef FUNCNAME
 
 gint
-gdk_string_to_compound_text_interp (char *str, GdkAtom *encoding, gint *format,
-                                    SCM *textp)
+gdk_string_to_compound_text_interp (const char *str, GdkAtom *encoding,
+    gint *format, SCM *textp)
 {
   guchar *ctext;
   gint ret, length;
diff --git a/gtk-compat.c b/gtk-compat.c
index 29b0988..f880995 100644
--- a/gtk-compat.c
+++ b/gtk-compat.c
&lt; at &gt;&lt; at &gt; -44,7 +44,7 &lt; at &gt;&lt; at &gt; gtk_menu_popup_interp (GtkMenu *menu,
 }
 
 GdkColor*
-gdk_color_parse_interp (char *spec)
+gdk_color_parse_interp (const char *spec)
 {
   GdkColor color;
   return gdk_color_parse (spec, &amp;color) ? gdk_color_copy (&amp;color) : NULL;
diff --git a/gtk-support.c b/gtk-support.c
index 2d114fc..90c4e3e 100644
--- a/gtk-support.c
+++ b/gtk-support.c
&lt; at &gt;&lt; at &gt; -167,7 +167,7 &lt; at &gt;&lt; at &gt; gtk_style_base_gc (GtkStyle *style, GtkStateType state)
 
 int
 gtk_editable_insert_text_scm (GtkEditable *editable,
-      gchar       *text,
+      const gchar *text,
       int          position)
 {
   gtk_editable_insert_text (editable, text, strlen (text), &amp;position);
diff --git a/guile-gtk.c b/guile-gtk.c
index 78788f5..a8be81e 100644
--- a/guile-gtk.c
+++ b/guile-gtk.c
&lt; at &gt;&lt; at &gt; -387,7 +387,7 &lt; at &gt;&lt; at &gt; sgtk_register_type_infos_gtk (GtkTypeInfo **infos)
    entirely.  */
 
 static GtkType
-sgtk_try_missing_type (char *name)
+sgtk_try_missing_type (const char *name)
 {
   static sgtk_type_info missing[] = {
     {NULL, GTK_TYPE_NONE, NULL}
&lt; at &gt;&lt; at &gt; -398,7 +398,7 &lt; at &gt;&lt; at &gt; sgtk_try_missing_type (char *name)
     if (!strcmp (m-&gt;name, name))
       {
 GtkTypeInfo info = { NULL };
-info.type_name = name;
+info.type_name = (char *) name;
 return gtk_type_unique (m-&gt;type, &amp;info);
       }
 
&lt; at &gt;&lt; at &gt; -439,7 +439,7 &lt; at &gt;&lt; at &gt; sgtk_maybe_find_type_info (GtkType type)
 {
   sgtk_type_info *info;
   type_infos *infos;
-  char *name;
+  const char *name;
   int i;
 
   for (i = 0; i &lt; n_type_info_tab; i++)
&lt; at &gt;&lt; at &gt; -1012,7 +1012,7 &lt; at &gt;&lt; at &gt; sgtk_enum2scm (gint val, sgtk_enum_info *info)
 }
 
 gint
-sgtk_scm2enum (SCM obj, sgtk_enum_info *info, int pos, char *sname)
+sgtk_scm2enum (SCM obj, sgtk_enum_info *info, int pos, const char *sname)
 {
   int rval;
 
&lt; at &gt;&lt; at &gt; -1072,7 +1072,7 &lt; at &gt;&lt; at &gt; sgtk_flags2scm (gint val, sgtk_enum_info *info)
 }
 
 gint
-sgtk_scm2flags (SCM obj, sgtk_enum_info *info, int pos, char *sname)
+sgtk_scm2flags (SCM obj, sgtk_enum_info *info, int pos, const char *sname)
 {
   if (scm_is_pair (obj) || scm_is_null (obj))
     {
&lt; at &gt;&lt; at &gt; -1163,7 +1163,7 &lt; at &gt;&lt; at &gt; sgtk_valid_senum (SCM obj, sgtk_senum_info *info)
 }
 
 SCM
-sgtk_senum2scm (char *val, sgtk_senum_info *info)
+sgtk_senum2scm (const char *val, sgtk_senum_info *info)
 {
   int i;
   for (i = 0; i &lt; info-&gt;n_literals; i++)
&lt; at &gt;&lt; at &gt; -1454,7 +1454,7 &lt; at &gt;&lt; at &gt; all_type_infos_find (const char *name)
    we search among the type names we have in all_type_infos and initialize
    the type with the init_func in our sgtk_type_info.  */
 GtkType
-sgtk_type_from_name (char *name)
+sgtk_type_from_name (const char *name)
 {
   GType type = g_type_from_name (name);
   if (type == GTK_TYPE_INVALID)
&lt; at &gt;&lt; at &gt; -2676,7 +2676,7 &lt; at &gt;&lt; at &gt; sgtk_gtk_target_entry_free (GtkTargetEntry* entry)
 /* The SCM_PROC for the exported functions is in gtk-support.c to have
    it be snarfed for sgtk_init_gtk_support. */
 
-sgtk_object_info *sgtk_find_object_info (char *name);
+sgtk_object_info *sgtk_find_object_info (const char *name);
 
 sgtk_object_info *
 sgtk_find_object_info_from_type (GtkType type)
&lt; at &gt;&lt; at &gt; -2690,7 +2690,7 &lt; at &gt;&lt; at &gt; sgtk_find_object_info_from_type (GtkType type)
 }
 
 sgtk_object_info *
-sgtk_find_object_info (char *name)
+sgtk_find_object_info (const char *name)
 {
   GtkType type, parent;
   sgtk_object_info *info;
&lt; at &gt;&lt; at &gt; -2982,7 +2982,7 &lt; at &gt;&lt; at &gt; sgtk_gtk_object_get (SCM scm_obj, SCM argsym)
 /* Creating new object classes */
 
 GtkType
-gtk_class_new (GtkType parent_type, gchar *name)
+gtk_class_new (GtkType parent_type, const gchar *name)
 {
   GTypeInfo *info;
   GTypeQuery parent_query;
&lt; at &gt;&lt; at &gt; -3073,7 +3073,7 &lt; at &gt;&lt; at &gt; gtk_signal_new_generic (const gchar     *name,
 }
 
 SCM
-sgtk_signal_emit (GObject *obj, char *name, SCM scm_params)
+sgtk_signal_emit (GObject *obj, const char *name, SCM scm_params)
 {
   static char func_name[] = "gtk-signal-emit";
   
&lt; at &gt;&lt; at &gt; -3189,7 +3189,7 &lt; at &gt;&lt; at &gt; sgtk_standalone_p ()
 }
 
 void
-sgtk_register_glue (char *name, void (*func)(void))
+sgtk_register_glue (const char *name, void (*func)(void))
 {
   scm_c_register_extension (NULL, name, (void (*)(void *))func, NULL);
 }
diff --git a/guile-gtk.h b/guile-gtk.h
index 89d0d79..d28a668 100644
--- a/guile-gtk.h
+++ b/guile-gtk.h
&lt; at &gt;&lt; at &gt; -25,7 +25,7 &lt; at &gt;&lt; at &gt;
 typedef guint32 sgtk_timestamp;
 
 typedef struct _sgtk_type_info {
-  char *name;
+  const char *name;
   GtkType type;
   SCM (*conversion) (SCM);
   GtkType (*init_func) ();
&lt; at &gt;&lt; at &gt; -114,7 +114,7 &lt; at &gt;&lt; at &gt; SCM sgtk_make_cblk (void *p, size_t len);
 void sgtk_register_type_infos (sgtk_type_info **infos);
 void sgtk_register_type_infos_gtk (GtkTypeInfo **infos);
 sgtk_type_info *sgtk_get_type_info (guint type_seqno);
-GtkType sgtk_type_from_name (char *name);
+GtkType sgtk_type_from_name (const char *name);
 
 SCM sgtk_wrap_gtkobj (GObject *obj);
 SCM sgtk_wrap_gtkobj_nocopy (GObject *obj);
&lt; at &gt;&lt; at &gt; -127,14 +127,14 &lt; at &gt;&lt; at &gt; int sgtk_enum_flags_bin_search (SCM key, sgtk_enum_info *info, int *rval);
 
 int sgtk_valid_enum (SCM obj, sgtk_enum_info*);
 SCM sgtk_enum2scm (gint val, sgtk_enum_info*);
-gint sgtk_scm2enum (SCM obj, sgtk_enum_info*, int pos, char *sname);
+gint sgtk_scm2enum (SCM obj, sgtk_enum_info*, int pos, const char *sname);
 
 int sgtk_valid_flags (SCM obj, sgtk_enum_info*);
 SCM sgtk_flags2scm (gint val, sgtk_enum_info*);
-gint sgtk_scm2flags (SCM obj, sgtk_enum_info*, int pos, char *sname);
+gint sgtk_scm2flags (SCM obj, sgtk_enum_info*, int pos, const char *sname);
 
 int sgtk_valid_senum (SCM obj, sgtk_senum_info*);
-SCM sgtk_senum2scm (char *val, sgtk_senum_info*);
+SCM sgtk_senum2scm (const char *val, sgtk_senum_info*);
 char *sgtk_scm2senum (SCM obj, sgtk_senum_info*);
 
 SCM sgtk_boxed2scm (gpointer ptr, sgtk_boxed_info*, int copyp);
&lt; at &gt;&lt; at &gt; -232,7 +232,7 &lt; at &gt;&lt; at &gt; void sgtk_scm2ret (GtkArg *a, SCM obj);
 void sgtk_throw_gerror (const char *func_name, GError *gerr);
 
 sgtk_object_info *sgtk_find_object_info_from_type (GtkType type);
-sgtk_object_info *sgtk_find_object_info (char *name);
+sgtk_object_info *sgtk_find_object_info (const char *name);
 
 SCM sgtk_color_conversion (SCM color);
 SCM sgtk_font_conversion (SCM color);
&lt; at &gt;&lt; at &gt; -241,7 +241,7 &lt; at &gt;&lt; at &gt; void sgtk_set_standalone (int flag);
 int sgtk_is_standalone ();
 SCM sgtk_standalone_p ();
 
-void sgtk_register_glue (char *name, void (*func)(void));
+void sgtk_register_glue (const char *name, void (*func)(void));
 #define SGTK_REGISTER_GLUE(func) sgtk_register_glue (#func, func)
 
 void sgtk_init_gdk_support (void);
&lt; at &gt;&lt; at &gt; -339,7 +339,7 &lt; at &gt;&lt; at &gt; char *gdk_wcstombs_interp (GdkWChar src[], int count);
 
 SCM gdk_mbstowcs_interp (const char *src);
 
-GdkGCValuesMask sgtk_gdk_gc_values_fill (char *func_name, int argnum,
+GdkGCValuesMask sgtk_gdk_gc_values_fill (const char *func_name, int argnum,
                                          GdkGCValues *values, SCM rest);
 GdkGC *gdk_gc_new_with_values_interp (GdkWindow *window, SCM rest);
 SCM gdk_gc_get_values_interp (GdkGC *gc);
&lt; at &gt;&lt; at &gt; -347,7 +347,7 &lt; at &gt;&lt; at &gt; SCM gdk_gc_get_values_interp (GdkGC *gc);
 guint32 gdk_get_leader_window_id ();
 
 int gtk_editable_insert_text_scm (GtkEditable *editable,
-                                  gchar *text, int position);
+                                  const gchar *text, int position);
 
 void gdk_draw_text_interp (GdkDrawable *drawable, GdkFont *font, GdkGC *gc,
    gint x, gint y, SCM text);
&lt; at &gt;&lt; at &gt; -376,14 +376,14 &lt; at &gt;&lt; at &gt; void gtk_menu_popup_interp (GtkMenu *menu,
     guint32 activate_time);
 
 GdkColor *gdk_color_new (void);
-GdkColor *gdk_color_parse_interp (char *spec);
+GdkColor *gdk_color_parse_interp (const char *spec);
 GdkColor *gtk_style_get_white_interp (GtkStyle *style);
 
 void gtk_list_append_item (GtkList *list, GtkListItem *item);
 void gtk_list_prepend_item (GtkList *list, GtkListItem *item);
 
 gboolean gtk_type_get_info (GtkType type, GtkTypeInfo *info);
-GtkType gtk_class_new (GtkType parent_type, gchar *name);
+GtkType gtk_class_new (GtkType parent_type, const gchar *name);
 guint
 gtk_signal_new_generic (const gchar     *name,
 GtkSignalRunType signal_flags,
&lt; at &gt;&lt; at &gt; -391,7 +391,7 &lt; at &gt;&lt; at &gt; gtk_signal_new_generic (const gchar     *name,
 GtkType          return_type,
 guint            nparams,
 GtkType         *params);
-SCM sgtk_signal_emit (GObject *obj, char *name, SCM scm_args);
+SCM sgtk_signal_emit (GObject *obj, const char *name, SCM scm_args);
 void gtk_signal_set_class_function_full (GtkType            type,
  const gchar       *signal,
  GtkSignalFunc      func,
&lt; at &gt;&lt; at &gt; -505,7 +505,7 &lt; at &gt;&lt; at &gt; void gdk_property_change_interp (GdkWindow *window,
 
 SCM gdk_text_property_to_text_list_interp (GdkAtom encoding, gint format,
    SCM text);
-gint gdk_string_to_compound_text_interp (char *str, GdkAtom *encoding,
+gint gdk_string_to_compound_text_interp (const char *str, GdkAtom *encoding,
                                          gint *format, SCM *textp);
 SCM gdk_property_get_interp (GdkWindow *window, GdkAtom property, GdkAtom type,
      gulong offset, gulong length, int pdelete,
</description>
    <dc:creator>Ludovic Courts</dc:creator>
    <dc:date>2007-11-10T00:10:45</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.lisp.guile.gtk/742">
    <title>(popup &lt;gtk-menu&gt; ... )?</title>
    <link>http://comments.gmane.org/gmane.lisp.guile.gtk/742</link>
    <description>Hi,

I'm trying to resurrect my silly metacity keywise*) hack,
but (popup &lt;gtk-menu&gt; ...) now fails on me.  I get

       ?:  8  [popup-menu #&lt;&lt;keywise-app&gt; 2afdf24deb40&gt;]
...
       ?:  9  [popup #&lt;&lt;generic&gt; popup (2)&gt; (#&lt;&lt;gtk-menu&gt; 2afdf24dfd00&gt; #f #f ...)]
       ?: 10* [memoize-method! #&lt;&lt;generic&gt; popup (2)&gt; (# #) (#&lt; at &gt;dispatch args 7 # ...)]
       ?: 11* (let* ((applicable #)) (cond (applicable #) (# #) (else # # #)))
       ?: 12  (cond (applicable #) (# #) (else # # #))
...
       ?: 13  [scm-error goops-error #f ...]

    &lt;unnamed port&gt;: In procedure scm-error in expression (scm-error (quote goops-error) #f ...):
    &lt;unnamed port&gt;: No applicable method for #&lt;&lt;generic&gt; popup (2)&gt; in call (popup #&lt;&lt;gtk-menu&gt; 2afdf24dfd00&gt; #f #f #&lt;procedure #f (x)&gt; #f 0 0)

from this code

    (define-method (popup-menu (keywise-app &lt;keywise-app&gt;))
      (let ((menu? (menu-keypad keywise-app)))
(popup (get-menu keywise-app) #f #f
       ;; FIXME: wrap gtk_menu_popup
       ;;(lambda (x) (menu-get-position-menu x keywise-app))
       #f #f 0 0)))

What has changed here, or how do I debug this again?  Looking at defs

    (define-method popup
       (of-object "GtkMenu")
       (c-name "gtk_menu_popup")
       (return-type "none")
       (parameters
         '("GtkWidget*" "parent_menu_shell")
         '("GtkWidget*" "parent_menu_item")
         '("GtkMenuPositionFunc" "func")
         '("gpointer" "data")
         '("guint" "button")
         '("guint32" "activate_time")
       )
     )

at least the number of arguments looks ok.  Anything changed wrt empty
values for gpointer or Foo*?

Greetings,
Jan.

*) see http://lilypond.org/~janneke/software/keywise.scm

</description>
    <dc:creator>Jan Nieuwenhuizen</dc:creator>
    <dc:date>2007-12-13T21:18:30</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.lisp.guile.gtk">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.lisp.guile.gtk</link>
  </textinput>
</rdf:RDF>
